Skip to content

Commit

Permalink
Dont override get_register_map in router model mixin, but in router d…
Browse files Browse the repository at this point in the history
…irectly. Also be careful about mapping order.
  • Loading branch information
Hugo Geoffroy committed Jul 28, 2014
1 parent 777cac0 commit fd5625f
Showing 1 changed file with 24 additions and 5 deletions.
29 changes: 24 additions & 5 deletions django_crucrudile/routers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,18 @@
from django.core.urlresolvers import reverse_lazy

from django.db.models import Model
from django.views.generic.detail import SingleObjectMixin
from django.views.generic.list import MultipleObjectMixin

from django.views.generic import (
View, RedirectView,
)

from django_crucrudile.routes import ViewRoute
from django_crucrudile.routes import ViewRoute, ModelViewRoute
from django_crucrudile.entities import Entity
from django_crucrudile.entities.store import EntityStore


__all__ = [
"Router",
"ModelRouter",
Expand Down Expand Up @@ -180,17 +184,32 @@ def get_register_map(self):
:class:`model.ModelRouter` (or
:class:`model.generic.GenericModelRouter`) if
:attr:`generic` is set to ``True``)
- :class:`django.views.generic.detail.SingleObjectMixin` or
:class:`django.views.generic.list.MultipleObjectMixin`
subclasses are to passed to a
:class:`django_crucrudile.routes.ModelViewRoute`
- :class:`django.views.generic.View` subclasses are passed to a View
:returns: Register mappings
:rtype: dict
.. warning::
When overriding, remember that the first matching mapping
(in the order they are added, as the superclass returns a
:class:`collections.OrderedDict`) will be used.
Because of this, to override mappings, methods should add
the super mappings to another OrderedDict, containing the
overrides.
"""
mapping = super().get_register_map()
mapping.update({
Model: ModelRouter if not self.generic else GenericModelRouter,
View: ViewRoute,
})
mapping[Model] = (
ModelRouter if not self.generic else GenericModelRouter
)
mapping[SingleObjectMixin, MultipleObjectMixin] = ModelViewRoute
mapping[View] = ViewRoute
return mapping

def register(self, entity, index=False, map_kwargs=None):
Expand Down

0 comments on commit fd5625f

Please sign in to comment.