Allow overriding the object on which to perform the permission check
This commit is contained in:
@@ -43,13 +43,16 @@ class ObjectListPermissionFilterMixin(object):
|
|||||||
class ObjectPermissionCheckMixin(object):
|
class ObjectPermissionCheckMixin(object):
|
||||||
object_permission = None
|
object_permission = None
|
||||||
|
|
||||||
|
def get_permission_object(self):
|
||||||
|
return self.get_object()
|
||||||
|
|
||||||
def dispatch(self, request, *args, **kwargs):
|
def dispatch(self, request, *args, **kwargs):
|
||||||
|
|
||||||
if self.object_permission:
|
if self.object_permission:
|
||||||
try:
|
try:
|
||||||
Permission.objects.check_permissions(request.user, (self.object_permission,))
|
Permission.objects.check_permissions(request.user, (self.object_permission,))
|
||||||
except PermissionDenied:
|
except PermissionDenied:
|
||||||
AccessEntry.objects.check_access(self.object_permission, request.user, self.get_object())
|
AccessEntry.objects.check_access(self.object_permission, request.user, self.get_permission_object())
|
||||||
|
|
||||||
return super(ObjectPermissionCheckMixin, self).dispatch(request, *args, **kwargs)
|
return super(ObjectPermissionCheckMixin, self).dispatch(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user