Use admin class function to check permissions.
parent
25b720c43c
commit
6aa9d7cc3a
|
|
@ -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))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue