From 42d89a7585d1eb3253907c9239e45c81df063259 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gregor=20M=C3=BCllegger?= Date: Sun, 26 May 2013 16:55:44 +0200 Subject: [PATCH] Moving permission checking from AdminModel2Mixin to PermissionMixin were it belongs. --- djadmin2/viewmixins.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/djadmin2/viewmixins.py b/djadmin2/viewmixins.py index b8b5bf5..c234608 100644 --- a/djadmin2/viewmixins.py +++ b/djadmin2/viewmixins.py @@ -11,7 +11,7 @@ from . import constants, permissions from .utils import admin2_urlname, model_options -class PermissionMixin(object): +class PermissionMixin(AccessMixin): do_not_call_in_templates = True permission_classes = (permissions.IsStaffPermission,) @@ -32,6 +32,17 @@ class PermissionMixin(object): return False return True + def dispatch(self, request, *args, **kwargs): + # Raise exception or redirect to login if user doesn't have + # permissions. + if not self.has_permission(): + if self.raise_exception: + raise PermissionDenied # return a forbidden response + else: + return redirect_to_login(request.get_full_path(), + self.get_login_url(), self.get_redirect_field_name()) + return super(PermissionMixin, self).dispatch(request, *args, **kwargs) + def get_context_data(self, **kwargs): context = super(PermissionMixin, self).get_context_data(**kwargs) permission_checker = permissions.TemplatePermissionChecker( @@ -64,20 +75,9 @@ class Admin2Mixin(PermissionMixin): return modelform_factory(self.get_model()) -class AdminModel2Mixin(Admin2Mixin, AccessMixin): +class AdminModel2Mixin(Admin2Mixin): model_admin = None - def dispatch(self, request, *args, **kwargs): - # Raise exception or redirect to login if user doesn't have - # permissions. - if not self.has_permission(): - if self.raise_exception: - raise PermissionDenied # return a forbidden response - else: - return redirect_to_login(request.get_full_path(), - self.get_login_url(), self.get_redirect_field_name()) - return super(AdminModel2Mixin, self).dispatch(request, *args, **kwargs) - def get_context_data(self, **kwargs): context = super(AdminModel2Mixin, self).get_context_data(**kwargs) model = self.get_model()