Use admin class function to check permissions.

fix_request_path_info
Ben Konrath 2014-09-11 15:18:40 +02:00
parent 25b720c43c
commit 6aa9d7cc3a
1 changed files with 4 additions and 9 deletions

View File

@ -26,13 +26,6 @@ except ImportError:
def add_preserved_filters(context, form_url): def add_preserved_filters(context, form_url):
return form_url return form_url
try:
from django.contrib.auth import get_permission_codename
except ImportError:
# Django < 1.6
from django.contrib.auth.management import _get_permission_codename as get_permission_codename
__all__ = ( __all__ = (
'PolymorphicModelChoiceForm', 'PolymorphicParentModelAdmin', 'PolymorphicModelChoiceForm', 'PolymorphicParentModelAdmin',
@ -190,8 +183,10 @@ class PolymorphicParentModelAdmin(admin.ModelAdmin):
""" """
choices = [] choices = []
for model, _ in self.get_child_models(): for model, _ in self.get_child_models():
if not request.user.has_perm('%s.%s' % (model._meta.app_label, perm_function_name = 'has_{0}_permission'.format(action)
get_permission_codename(action, model._meta))): model_admin = self._get_real_admin_by_model(model)
perm_function = getattr(model_admin, perm_function_name)
if not perm_function(request):
continue continue
ct = ContentType.objects.get_for_model(model, for_concrete_model=False) ct = ContentType.objects.get_for_model(model, for_concrete_model=False)
choices.append((ct.id, model._meta.verbose_name)) choices.append((ct.id, model._meta.verbose_name))