From add7c627ab779796188a40fb8a84e8e8c8d30683 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sat, 30 Nov 2024 23:21:41 -0800 Subject: [PATCH] More perms stuff, some doesnt work --- src/documents/serialisers.py | 33 +++++++++++++++++++++ src/documents/views.py | 56 ++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index 7239b9d48..2bed3efe5 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -238,6 +238,39 @@ class OwnedObjectSerializer( except KeyError: pass + @extend_schema_field( + field={ + "type": "object", + "properties": { + "view": { + "type": "object", + "properties": { + "users": { + "type": "array", + "items": {"type": "integer"}, + }, + "groups": { + "type": "array", + "items": {"type": "integer"}, + }, + }, + }, + "change": { + "type": "object", + "properties": { + "users": { + "type": "array", + "items": {"type": "integer"}, + }, + "groups": { + "type": "array", + "items": {"type": "integer"}, + }, + }, + }, + }, + }, + ) def get_permissions(self, obj) -> dict: view_codename = f"view_{obj.__class__.__name__.lower()}" change_codename = f"change_{obj.__class__.__name__.lower()}" diff --git a/src/documents/views.py b/src/documents/views.py index d607d83bc..465faac06 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -262,6 +262,29 @@ class PermissionsAwareDocumentCountMixin(PassUserMixin): ) +full_perms_schema = { + "list": extend_schema( + parameters=[ + OpenApiParameter( + name="full_perms", + type=OpenApiTypes.BOOL, + location=OpenApiParameter.QUERY, + ), + ], + ), + "retrieve": extend_schema( + parameters=[ + OpenApiParameter( + name="full_perms", + type=OpenApiTypes.BOOL, + location=OpenApiParameter.QUERY, + ), + ], + ), +} + + +@extend_schema_view(**full_perms_schema) class CorrespondentViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin): model = Correspondent @@ -298,6 +321,7 @@ class CorrespondentViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin): return super().retrieve(request, *args, **kwargs) +@extend_schema_view(**full_perms_schema) class TagViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin): model = Tag @@ -322,6 +346,7 @@ class TagViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin): ordering_fields = ("color", "name", "matching_algorithm", "match", "document_count") +@extend_schema_view(**full_perms_schema) class DocumentTypeViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin): model = DocumentType @@ -340,6 +365,36 @@ class DocumentTypeViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin): @extend_schema_view( + list=extend_schema( + parameters=[ + OpenApiParameter( + name="full_perms", + type=OpenApiTypes.BOOL, + location=OpenApiParameter.QUERY, + ), + OpenApiParameter( + name="fields", + type=OpenApiTypes.STR, + many=True, + location=OpenApiParameter.QUERY, + ), + ], + ), + retrieve=extend_schema( + parameters=[ + OpenApiParameter( + name="full_perms", + type=OpenApiTypes.BOOL, + location=OpenApiParameter.QUERY, + ), + OpenApiParameter( + name="fields", + type=OpenApiTypes.STR, + many=True, + location=OpenApiParameter.QUERY, + ), + ], + ), download=extend_schema( description="Download the document", parameters=[ @@ -1958,6 +2013,7 @@ class BulkDownloadView(GenericAPIView): return response +@extend_schema_view(**full_perms_schema) class StoragePathViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin): model = StoragePath