Moving permission checking from AdminModel2Mixin to PermissionMixin were it belongs.

This commit is contained in:
Gregor Müllegger 2013-05-26 16:55:44 +02:00
parent 2771d160a7
commit 42d89a7585

View file

@ -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()