Класс разрешений 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.

Вернуться на верх