Fix comment test and permission
This commit is contained in:
parent
86500b6b88
commit
28a3e022f6
|
|
@ -15,9 +15,13 @@ class CommentModeratorPermissionTests(BasePermissionTests):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
||||||
|
self.site_ru, created = SiteSettings.objects.get_or_create(
|
||||||
|
subdomain='ru'
|
||||||
|
)
|
||||||
|
|
||||||
self.role = Role.objects.create(
|
self.role = Role.objects.create(
|
||||||
role=2,
|
role=2,
|
||||||
country=self.country_ru
|
site=self.site_ru
|
||||||
)
|
)
|
||||||
self.role.save()
|
self.role.save()
|
||||||
|
|
||||||
|
|
@ -35,10 +39,6 @@ class CommentModeratorPermissionTests(BasePermissionTests):
|
||||||
|
|
||||||
self.user_test = get_tokens_for_user()
|
self.user_test = get_tokens_for_user()
|
||||||
|
|
||||||
self.site_ru, created = SiteSettings.objects.get_or_create(
|
|
||||||
subdomain='ru'
|
|
||||||
)
|
|
||||||
|
|
||||||
self.comment = Comment.objects.create(text='Test comment', mark=1,
|
self.comment = Comment.objects.create(text='Test comment', mark=1,
|
||||||
user=self.user_test["user"],
|
user=self.user_test["user"],
|
||||||
object_id=self.country_ru.pk,
|
object_id=self.country_ru.pk,
|
||||||
|
|
@ -89,8 +89,9 @@ class CommentModeratorPermissionTests(BasePermissionTests):
|
||||||
"text": "test text moderator",
|
"text": "test text moderator",
|
||||||
"mark": 1,
|
"mark": 1,
|
||||||
"user": self.moderator.id,
|
"user": self.moderator.id,
|
||||||
"object_id": self.comment.country_id,
|
"object_id": self.country_ru.id,
|
||||||
"content_type": self.content_type.id
|
"content_type": self.content_type.id,
|
||||||
|
'site_id': self.site_ru.id
|
||||||
}
|
}
|
||||||
|
|
||||||
response = self.client.put(self.url, data=data, format='json')
|
response = self.client.put(self.url, data=data, format='json')
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,13 @@ class CommentLstView(generics.ListCreateAPIView):
|
||||||
"""Comment list create view."""
|
"""Comment list create view."""
|
||||||
serializer_class = serializers.CommentBaseSerializer
|
serializer_class = serializers.CommentBaseSerializer
|
||||||
queryset = models.Comment.objects.all()
|
queryset = models.Comment.objects.all()
|
||||||
permission_classes = [permissions.IsAuthenticatedOrReadOnly| IsCommentModerator|IsCountryAdmin]
|
# permission_classes = [permissions.IsAuthenticatedOrReadOnly| IsCommentModerator|IsCountryAdmin]
|
||||||
|
|
||||||
|
|
||||||
class CommentRUDView(generics.RetrieveUpdateDestroyAPIView):
|
class CommentRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
"""Comment RUD view."""
|
"""Comment RUD view."""
|
||||||
serializer_class = serializers.CommentBaseSerializer
|
serializer_class = serializers.CommentBaseSerializer
|
||||||
queryset = models.Comment.objects.all()
|
queryset = models.Comment.objects.all()
|
||||||
|
permission_classes = [IsCommentModerator]
|
||||||
permission_classes = [IsCountryAdmin | IsCommentModerator]
|
# permission_classes = [IsCountryAdmin | IsCommentModerator]
|
||||||
lookup_field = 'id'
|
lookup_field = 'id'
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,10 @@ class IsStandardUser(IsGuest):
|
||||||
|
|
||||||
if hasattr(obj, 'user'):
|
if hasattr(obj, 'user'):
|
||||||
rules = [
|
rules = [
|
||||||
obj.user == request.user and obj.user.email_confirmed,
|
obj.user == request.user
|
||||||
|
and obj.user.email_confirmed
|
||||||
|
and request.user.is_authenticated,
|
||||||
|
|
||||||
super().has_object_permission(request, view, obj)
|
super().has_object_permission(request, view, obj)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -244,13 +247,12 @@ class IsCommentModerator(IsStandardUser):
|
||||||
super().has_permission(request, view)
|
super().has_permission(request, view)
|
||||||
]
|
]
|
||||||
|
|
||||||
# and request.user.email_confirmed,
|
if any(rules) and hasattr(request.data, 'site_id'):
|
||||||
if hasattr(request.data, 'user') and hasattr(request.data, 'country_id'):
|
|
||||||
# Read permissions are allowed to any request.
|
# Read permissions are allowed to any request.
|
||||||
|
|
||||||
role = Role.objects.filter(role=Role.COMMENTS_MODERATOR,
|
role = Role.objects.filter(role=Role.COMMENTS_MODERATOR,
|
||||||
country_id=request.data.country_id) \
|
site_id=request.data.site_id) \
|
||||||
.first() # 'Comments moderator'
|
.first()
|
||||||
|
|
||||||
rules = [
|
rules = [
|
||||||
UserRole.objects.filter(user=request.user, role=role).exists(),
|
UserRole.objects.filter(user=request.user, role=role).exists(),
|
||||||
|
|
@ -260,16 +262,22 @@ class IsCommentModerator(IsStandardUser):
|
||||||
return any(rules)
|
return any(rules)
|
||||||
|
|
||||||
def has_object_permission(self, request, view, obj):
|
def has_object_permission(self, request, view, obj):
|
||||||
# Read permissions are allowed to any request.
|
|
||||||
role = Role.objects.filter(role=Role.COMMENTS_MODERATOR,
|
|
||||||
country_id=obj.country_id) \
|
|
||||||
.first() # 'Comments moderator'
|
|
||||||
|
|
||||||
rules = [
|
rules = [
|
||||||
UserRole.objects.filter(user=request.user, role=role).exists() and
|
|
||||||
obj.user != request.user,
|
|
||||||
super().has_object_permission(request, view, obj)
|
super().has_object_permission(request, view, obj)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if request.user.is_authenticated:
|
||||||
|
|
||||||
|
role = Role.objects.filter(role=Role.COMMENTS_MODERATOR,
|
||||||
|
site_id=obj.site_id) \
|
||||||
|
.first() # 'Comments moderator'
|
||||||
|
|
||||||
|
rules = [
|
||||||
|
UserRole.objects.filter(user=request.user, role=role).exists() and
|
||||||
|
obj.user != request.user,
|
||||||
|
super().has_object_permission(request, view, obj)
|
||||||
|
]
|
||||||
return any(rules)
|
return any(rules)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -335,7 +343,7 @@ class IsReviewerManager(IsStandardUser):
|
||||||
|
|
||||||
def has_object_permission(self, request, view, obj):
|
def has_object_permission(self, request, view, obj):
|
||||||
role = Role.objects.filter(role=Role.REVIEWER_MANGER,
|
role = Role.objects.filter(role=Role.REVIEWER_MANGER,
|
||||||
country_id=obj.site_id) \
|
country_id=obj.country_id) \
|
||||||
.first()
|
.first()
|
||||||
|
|
||||||
rules = [
|
rules = [
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user