Entity abstract class

An entity is an abstract class of objects that can be used to make an URL pattern tree.

See also

In django-crucrudile, there are two classes that directly subclass Entity :

class django_crucrudile.entities.Entity(index=None)[source]

Bases: builtins.object

An entity is an abstract class of objects that can be used to make an URL pattern tree.

Abstract class that defines an attribute (Entity.index), and an abstract method (Entity.patterns()). Entity implementations should provide the Entity.patterns() method, that should return a generator yielding Django URL patterns.

Warning

Abstract class ! Subclasses should define the abstract patterns() method, that should return a generator yielding Django URL objects (django.core.urlresolvers.RegexURLPattern or :class:`django.core.urlresolvers.RegexURLResolver). See warning in __init__().

Inheritance diagram of Entity

index = False
Attribute index:
 Used when routed entity is registered, to know if it should be registered as index.
patterns(parents=None, add_redirect=None, add_redirect_silent=None)[source]

Yield URL patterns

Note

For argument specification, see implementations of this abstract function (in particular django_crucrudile.routers.Router.patterns())

Warning

Abstract method ! Should be defined by subclasses, and should return a generator yielding Django URL objects (RegexURLPattern or RegexURLResolver)

get_str_tree(patterns_kwargs=None, indent_char=' ', indent_size=2)[source]

Return the representation of a entity patterns structure

Parameters:
  • patterns_kwargs (dict) – Keyword arguments to pass to patterns()
  • indent_char (str) – String to use for tree indentation
  • indent_size (int) – Indent size
>>> import tests.unit
>>> from django.db.models import Model
>>> from django_crucrudile.routers import Router, ModelRouter
>>>
>>> # needed to subclass Django Model
>>> __name__ = "tests.doctests"
>>>
>>> class TestModel(Model):
...   pass
>>> router = Router(generic=True)
>>>
>>> router.register(TestModel) is not None
True
>>> print(router.get_str_tree())
... 
 - Router  @ ^
   - GenericModelRouter testmodel @ ^testmodel/
     - testmodel-list-redirect @ ^$ RedirectView
     - testmodel-delete @ ^delete/(?P<pk>\d+)$ DeleteView
     - testmodel-delete @ ^delete/(?P<slug>[\w-]+)$ DeleteView
     - testmodel-update @ ^update/(?P<pk>\d+)$ UpdateView
     - testmodel-update @ ^update/(?P<slug>[\w-]+)$ UpdateView
     - testmodel-create @ ^create$ CreateView
     - testmodel-detail @ ^detail/(?P<pk>\d+)$ DetailView
     - testmodel-detail @ ^detail/(?P<slug>[\w-]+)$ DetailView
     - testmodel-list @ ^list$ ListView
class django_crucrudile.entities.Entity(index=None)[source]

Bases: builtins.object

An entity is an abstract class of objects that can be used to make an URL pattern tree.

Abstract class that defines an attribute (Entity.index), and an abstract method (Entity.patterns()). Entity implementations should provide the Entity.patterns() method, that should return a generator yielding Django URL patterns.

Warning

Abstract class ! Subclasses should define the abstract patterns() method, that should return a generator yielding Django URL objects (django.core.urlresolvers.RegexURLPattern or :class:`django.core.urlresolvers.RegexURLResolver). See warning in __init__().

Inheritance diagram of Entity

index = False
Attribute index:
 Used when routed entity is registered, to know if it should be registered as index.
patterns(parents=None, add_redirect=None, add_redirect_silent=None)[source]

Yield URL patterns

Note

For argument specification, see implementations of this abstract function (in particular django_crucrudile.routers.Router.patterns())

Warning

Abstract method ! Should be defined by subclasses, and should return a generator yielding Django URL objects (RegexURLPattern or RegexURLResolver)

get_str_tree(patterns_kwargs=None, indent_char=' ', indent_size=2)[source]

Return the representation of a entity patterns structure

Parameters:
  • patterns_kwargs (dict) – Keyword arguments to pass to patterns()
  • indent_char (str) – String to use for tree indentation
  • indent_size (int) – Indent size
>>> import tests.unit
>>> from django.db.models import Model
>>> from django_crucrudile.routers import Router, ModelRouter
>>>
>>> # needed to subclass Django Model
>>> __name__ = "tests.doctests"
>>>
>>> class TestModel(Model):
...   pass
>>> router = Router(generic=True)
>>>
>>> router.register(TestModel) is not None
True
>>> print(router.get_str_tree())
... 
 - Router  @ ^
   - GenericModelRouter testmodel @ ^testmodel/
     - testmodel-list-redirect @ ^$ RedirectView
     - testmodel-delete @ ^delete/(?P<pk>\d+)$ DeleteView
     - testmodel-delete @ ^delete/(?P<slug>[\w-]+)$ DeleteView
     - testmodel-update @ ^update/(?P<pk>\d+)$ UpdateView
     - testmodel-update @ ^update/(?P<slug>[\w-]+)$ UpdateView
     - testmodel-create @ ^create$ CreateView
     - testmodel-detail @ ^detail/(?P<pk>\d+)$ DetailView
     - testmodel-detail @ ^detail/(?P<slug>[\w-]+)$ DetailView
     - testmodel-list @ ^list$ ListView