From 1ff624a137e3e51abf059e973599b9d33b506fca Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 7 Apr 2024 08:43:47 -0700 Subject: [PATCH] Fix bulk edit serializers --- src/documents/serialisers.py | 16 +++++++++++++--- src/documents/views.py | 7 +++---- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index 777edca6f..67da298b6 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -163,7 +163,7 @@ class SetPermissionsMixin: set_permissions_for_object(permissions, object) -class OwnedObjectSerializer(serializers.ModelSerializer, SetPermissionsMixin): +class SerializerWithPerms(serializers.Serializer): def __init__(self, *args, **kwargs): self.user = kwargs.pop("user", None) full_perms = kwargs.pop("full_perms", False) @@ -178,6 +178,12 @@ class OwnedObjectSerializer(serializers.ModelSerializer, SetPermissionsMixin): except KeyError: pass + +class OwnedObjectSerializer( + SerializerWithPerms, + serializers.ModelSerializer, + SetPermissionsMixin, +): def get_permissions(self, obj): view_codename = f"view_{obj.__class__.__name__.lower()}" change_codename = f"change_{obj.__class__.__name__.lower()}" @@ -857,7 +863,11 @@ class DocumentListSerializer(serializers.Serializer): return documents -class BulkEditSerializer(DocumentListSerializer, SetPermissionsMixin): +class BulkEditSerializer( + SerializerWithPerms, + DocumentListSerializer, + SetPermissionsMixin, +): method = serializers.ChoiceField( choices=[ "set_correspondent", @@ -1356,7 +1366,7 @@ class ShareLinkSerializer(OwnedObjectSerializer): return super().create(validated_data) -class BulkEditObjectsSerializer(serializers.Serializer, SetPermissionsMixin): +class BulkEditObjectsSerializer(SerializerWithPerms, SetPermissionsMixin): objects = serializers.ListField( required=True, allow_empty=False, diff --git a/src/documents/views.py b/src/documents/views.py index 40cce819b..655108f05 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -55,7 +55,6 @@ from rest_framework.exceptions import NotFound from rest_framework.filters import OrderingFilter from rest_framework.filters import SearchFilter from rest_framework.generics import GenericAPIView -from rest_framework.mixins import CreateModelMixin from rest_framework.mixins import DestroyModelMixin from rest_framework.mixins import ListModelMixin from rest_framework.mixins import RetrieveModelMixin @@ -853,7 +852,7 @@ class LogViewSet(ViewSet): return Response(exist) -class SavedViewViewSet(ModelViewSet, PassUserMixin, CreateModelMixin): +class SavedViewViewSet(ModelViewSet, PassUserMixin): model = SavedView queryset = SavedView.objects.all() @@ -873,7 +872,7 @@ class SavedViewViewSet(ModelViewSet, PassUserMixin, CreateModelMixin): serializer.save(owner=self.request.user) -class BulkEditView(PassUserMixin, CreateModelMixin): +class BulkEditView(PassUserMixin): permission_classes = (IsAuthenticated,) serializer_class = BulkEditSerializer parser_classes = (parsers.JSONParser,) @@ -1450,7 +1449,7 @@ def serve_file(doc: Document, use_archive: bool, disposition: str): return response -class BulkEditObjectsView(PassUserMixin, CreateModelMixin): +class BulkEditObjectsView(PassUserMixin): permission_classes = (IsAuthenticated,) serializer_class = BulkEditObjectsSerializer parser_classes = (parsers.JSONParser,)