From 9acef83894da6573ad991fb4b8c72dc2cf2f0a96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80=20=D0=93=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=BA=D0=B8=D1=85?= Date: Tue, 15 Oct 2019 15:23:42 +0300 Subject: [PATCH] Add country admin --- apps/utils/permissions.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/apps/utils/permissions.py b/apps/utils/permissions.py index 3b408b31..dec3b848 100644 --- a/apps/utils/permissions.py +++ b/apps/utils/permissions.py @@ -73,7 +73,28 @@ class IsStandardUser(IsGuest): return False -class IsCommentModerator(IsStandardUser): +class IsCountryAdmin(IsStandardUser): + """ + Object-level permission to only allow owners of an object to edit it. + Assumes the model instance has an `owner` attribute. + """ + def has_object_permission(self, request, view, obj): + # Read permissions are allowed to any request. + if super().has_object_permission(request, view, obj): + return True + + # Must have role + role = Role.objects.filter(role=Role.COUNTRY_ADMIN, + country_id=obj.country_id) \ + .first() # 'Comments moderator' + + is_access = UserRole.objects.filter(user=request.user, role=role).exists() + if obj.user != request.user and is_access: + return True + return False + + +class IsCommentModerator(IsCountryAdmin): """ Object-level permission to only allow owners of an object to edit it. Assumes the model instance has an `owner` attribute.