Entity abstract class¶
Contents
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 :
- django_crucrudile.routers.Router (concrete)
- django_crucrudile.routes.base.BaseRoute (abstract)
- 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__().
- 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__().
- 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