diff --git a/polymorphic/admin/parentadmin.py b/polymorphic/admin/parentadmin.py index ad791be..ae1201e 100644 --- a/polymorphic/admin/parentadmin.py +++ b/polymorphic/admin/parentadmin.py @@ -75,38 +75,8 @@ class PolymorphicParentModelAdmin(admin.ModelAdmin): if self._is_setup: return - # By not having this in __init__() there is less stress on import dependencies as well, - # considering an advanced use cases where a plugin system scans for the child models. - child_models = self.get_child_models() - # Check if get_child_models() returns an iterable of models (new format) or an iterable - # of (Model, Admin) (legacy format). When iterable is empty, assume the new format. - self._compat_mode = len(child_models) and isinstance(child_models[0], (list, tuple)) - if not self._compat_mode: - self._child_models = child_models - self._child_admin_site = self.admin_site - self._is_setup = True - return - - # Continue only if in compatibility mode - warnings.warn("Using tuples of (Model, ModelAdmin) in PolymorphicParentModelAdmin.child_models is " - "deprecated; instead child_models should be iterable of child models eg. " - "(Model1, Model2, ..) and child admins should be registered to default admin site", - DeprecationWarning) - self._child_admin_site = self.admin_site.__class__(name=self.admin_site.name) - self._child_admin_site.get_app_list = lambda request: () # HACK: workaround for Django 1.9 - - for Model, Admin in child_models: - self.register_child(Model, Admin) - self._child_models = dict(child_models) - - # This is needed to deal with the improved ForeignKeyRawIdWidget in Django 1.4 and perhaps other widgets too. - # The ForeignKeyRawIdWidget checks whether the referenced model is registered in the admin, otherwise it displays itself as a textfield. - # As simple solution, just make sure all parent admin models are also know in the child admin site. - # This should be done after all parent models are registered off course. - complete_registry = self.admin_site._registry.copy() - complete_registry.update(self._child_admin_site._registry) - - self._child_admin_site._registry = complete_registry + self._child_models = self.get_child_models() + self._child_admin_site = self.admin_site self._is_setup = True def register_child(self, model, model_admin): @@ -144,11 +114,7 @@ class PolymorphicParentModelAdmin(admin.ModelAdmin): """ self._lazy_setup() choices = [] - for child_model_desc in self.get_child_models(): - if self._compat_mode: - model = child_model_desc[0] - else: - model = child_model_desc + for model in self.get_child_models(): perm_function_name = 'has_{0}_permission'.format(action) model_admin = self._get_real_admin_by_model(model) perm_function = getattr(model_admin, perm_function_name) @@ -265,28 +231,7 @@ class PolymorphicParentModelAdmin(admin.ModelAdmin): # At this point. all admin code needs to be known. self._lazy_setup() - # Continue only if in compatibility mode - if not self._compat_mode: - return urls - - # The redirect at the end acts as catch all. - # The custom urls need to be inserted before that. - redirect_urls = [pat for pat in urls if not pat.name] # redirect URL has no name. - urls = [pat for pat in urls if pat.name] - - # Define the catch-all for custom views - custom_urls = [ - url(r'^(?P.+)$', self.admin_site.admin_view(self.subclass_view)) - ] - - # Add reverse names for all polymorphic models, so the delete button and "save and add" just work. - # These definitions are masked by the definition above, since it needs special handling (and a ct_id parameter). - dummy_urls = [] - for model, _ in self.get_child_models(): - admin = self._get_real_admin_by_model(model) - dummy_urls += admin.get_urls() - - return urls + custom_urls + dummy_urls + redirect_urls + return urls def subclass_view(self, request, path): """ diff --git a/polymorphic/manager.py b/polymorphic/manager.py deleted file mode 100644 index 0837e38..0000000 --- a/polymorphic/manager.py +++ /dev/null @@ -1,2 +0,0 @@ -# For compatibility with pre 0.8 versions -from .managers import PolymorphicQuerySet, PolymorphicManager # noqa diff --git a/polymorphic/managers.py b/polymorphic/managers.py index d743eec..a736c3a 100644 --- a/polymorphic/managers.py +++ b/polymorphic/managers.py @@ -3,7 +3,7 @@ The manager class for use in the models. """ from __future__ import unicode_literals -import warnings + from django.db import models from django.utils.six import python_2_unicode_compatible from polymorphic.query import PolymorphicQuerySet @@ -33,17 +33,6 @@ class PolymorphicManager(models.Manager): manager.queryset_class = queryset_class # also set our version, Django uses _queryset_class return manager - def __init__(self, queryset_class=None, *args, **kwrags): - # Up till polymorphic 0.4, the queryset class could be specified as parameter to __init__. - # However, this doesn't work for related managers which instantiate a new version of this class. - # Hence, for custom managers the new default is using the 'queryset_class' attribute at class level instead. - if queryset_class: - warnings.warn("Using PolymorphicManager(queryset_class=..) is deprecated; override the queryset_class attribute instead", DeprecationWarning) - # For backwards compatibility, still allow the parameter: - self.queryset_class = queryset_class - - super(PolymorphicManager, self).__init__(*args, **kwrags) - def get_queryset(self): qs = self.queryset_class(self.model, using=self._db, hints=self._hints) if self.model._meta.proxy: diff --git a/polymorphic/showfields.py b/polymorphic/showfields.py index 7d62427..5e7b079 100644 --- a/polymorphic/showfields.py +++ b/polymorphic/showfields.py @@ -169,9 +169,3 @@ class ShowFieldTypeAndContent(ShowFieldBase): """ model mixin, like ShowFieldContent, but also show field types """ polymorphic_showfield_type = True polymorphic_showfield_content = True - - -# compatibility with old class names -ShowFieldTypes = ShowFieldType -ShowFields = ShowFieldContent -ShowFieldsAndTypes = ShowFieldTypeAndContent