Add RestaurantReviewer role

This commit is contained in:
Виктор Гладких 2019-10-17 16:17:17 +03:00
parent d6ffbf5332
commit c012f969af
2 changed files with 25 additions and 1 deletions

View File

@ -28,6 +28,7 @@ class Role(ProjectBaseMixin):
CONTENT_PAGE_MANAGER = 4
ESTABLISHMENT_MANAGER = 5
REVIEWER_MANGER = 6
RESTAURANT_REVIEWER = 7
ROLE_CHOICES = (
(STANDARD_USER, 'Standard user'),
@ -35,7 +36,8 @@ class Role(ProjectBaseMixin):
(COUNTRY_ADMIN, 'Country admin'),
(CONTENT_PAGE_MANAGER, 'Content page manager'),
(ESTABLISHMENT_MANAGER, 'Establishment manager'),
(REVIEWER_MANGER, 'Reviewer manager')
(REVIEWER_MANGER, 'Reviewer manager'),
(RESTAURANT_REVIEWER, 'Restaurant reviewer')
)
role = models.PositiveIntegerField(verbose_name=_('Role'), choices=ROLE_CHOICES,
null=False, blank=False)

View File

@ -1,4 +1,6 @@
"""Project custom permissions"""
from django.contrib.contenttypes.models import ContentType
from rest_framework import permissions
from rest_framework_simplejwt.tokens import AccessToken
@ -169,3 +171,23 @@ class IsReviewerManager(IsStandardUser):
return any(rules)
class IsRestaurantReviewer(IsStandardUser):
def has_object_permission(self, request, view, obj):
content_type = ContentType.objects.get(app_lable='establishment',
model='establishment')
role = Role.objects.filter(role=Role.RESTAURANT_REVIEWER,
country=obj.country_id).first()
rules = [
obj.content_type_id == content_type.id and
UserRole.objects.filter(user=request.user, role=role,
establishment_id=obj.object_id
).exists(),
super().has_object_permission(request, view, obj)
]
return any(rules)