from rest_framework.permissions import BasePermission class CanEditAnnotation(BasePermission): def __init__(self, queryset): super().__init__() self.queryset = queryset def has_permission(self, request, view): if request.user.is_superuser: return True annotation_id = view.kwargs.get('annotation_id') return self.queryset.filter(id=annotation_id, user=request.user).exists() class IsOwnComment(BasePermission): @classmethod def has_object_permission(cls, request, view, obj): if request.user.is_superuser: return True return obj.user.id == request.user.id class IsStaff(BasePermission): def has_permission(self, request, view): if request.user.is_superuser or request.user.is_staff: return True return False