Класс разрешений Django Rest Framework работает некорректно
Я пытаюсь реализовать представление с помощью rest-framework, вот оно:
class IsOwnerOnlyPermissions(BasePermission):
def has_object_permission(self, request, view, obj):
print(obj.user_profile.user, request.user, obj.user_profile.user == request.user)
print(request.user.groups, request.user.get_group_permissions())
return obj.user_profile.user == request.user
class DjangoModelPermissionsWithRead(DjangoModelPermissions):
perms_map = {
'GET': ['%(app_label)s.view_%(model_name)s'],
'OPTIONS': [],
'HEAD': [],
'POST': ['%(app_label)s.add_%(model_name)s'],
'PUT': ['%(app_label)s.change_%(model_name)s'],
'PATCH': ['%(app_label)s.change_%(model_name)s'],
'DELETE': ['%(app_label)s.delete_%(model_name)s'],
}
class DocumentsDetails(generics.RetrieveAPIView):
queryset = Documents.objects.all()
serializer_class = DocumentsSerializer
# Can access only owner OR administrator/moderator
permission_classes = [IsOwnerOnlyPermissions | DjangoModelPermissionsWithRead]
Но он не работает должным образом. Я обращаюсь к нему через Postman с пользователем, у которого нет никаких прав или групп (он печатает auth.Group.None set()
), и он не блокирует доступ для меня.
Я знаю, что я могу проверить права пользователя в моем IsOwnerOnlyPermissions
, но я хочу использовать для этого класс DjangoModelPermissions
. Есть ли возможность сделать это?
upd: Когда я удаляю DjangoModelPermissionsWithRead
из списка разрешений, он работает так, как я хочу, он блокирует всех, кроме владельца, так что проблема в DjangoModelPermissionsWithRead
, а не в IsOwnerOnlyPermissions
.