diff --git a/src/backend/core/api/viewsets.py b/src/backend/core/api/viewsets.py index e22b829e..b3f8b40a 100644 --- a/src/backend/core/api/viewsets.py +++ b/src/backend/core/api/viewsets.py @@ -926,8 +926,7 @@ class DocumentViewSet( ) serializer.is_valid(raise_exception=True) with_accesses = serializer.validated_data.get("with_accesses", False) - roles = set(document.get_roles(request.user)) - is_owner_or_admin = bool(roles.intersection(set(models.PRIVILEGED_ROLES))) + is_owner_or_admin = document.get_role(request.user) in models.PRIVILEGED_ROLES base64_yjs_content = document.content @@ -1898,7 +1897,10 @@ class DocumentAskForAccessViewSet( lookup_field = "id" pagination_class = Pagination - permission_classes = [permissions.IsAuthenticated, permissions.AccessPermission] + permission_classes = [ + permissions.IsAuthenticated, + permissions.ResourceWithAccessPermission, + ] queryset = models.DocumentAskForAccess.objects.all() serializer_class = serializers.DocumentAskForAccessSerializer _document = None @@ -1921,8 +1923,9 @@ class DocumentAskForAccessViewSet( queryset = super().get_queryset() queryset = queryset.filter(document=document) - roles = set(document.get_roles(self.request.user)) - is_owner_or_admin = bool(roles.intersection(set(models.PRIVILEGED_ROLES))) + is_owner_or_admin = ( + document.get_role(self.request.user) in models.PRIVILEGED_ROLES + ) if not is_owner_or_admin: queryset = queryset.filter(user=self.request.user) diff --git a/src/backend/core/migrations/0021_remove_document_is_public_and_more.py b/src/backend/core/migrations/0023_remove_document_is_public_and_more.py similarity index 80% rename from src/backend/core/migrations/0021_remove_document_is_public_and_more.py rename to src/backend/core/migrations/0023_remove_document_is_public_and_more.py index 97eaa468..9d8780d0 100644 --- a/src/backend/core/migrations/0021_remove_document_is_public_and_more.py +++ b/src/backend/core/migrations/0023_remove_document_is_public_and_more.py @@ -5,7 +5,7 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ("core", "0020_remove_is_public_add_field_attachments_and_duplicated_from"), + ("core", "0022_alter_user_language_documentaskforaccess"), ] operations = [ diff --git a/src/backend/core/tests/documents/test_api_documents_trashbin.py b/src/backend/core/tests/documents/test_api_documents_trashbin.py index 3a0a5f56..9e805397 100644 --- a/src/backend/core/tests/documents/test_api_documents_trashbin.py +++ b/src/backend/core/tests/documents/test_api_documents_trashbin.py @@ -74,7 +74,6 @@ def test_api_documents_trashbin_format(): "accesses_view": True, "ai_transform": True, "ai_translate": True, - "ancestors_links_definitions": {}, "attachment_upload": True, "can_edit": True, "children_create": True,