Fix bulk edit serializers

This commit is contained in:
shamoon 2024-04-07 08:43:47 -07:00
parent e269973209
commit 1ff624a137
2 changed files with 16 additions and 7 deletions

View File

@ -163,7 +163,7 @@ class SetPermissionsMixin:
set_permissions_for_object(permissions, object) set_permissions_for_object(permissions, object)
class OwnedObjectSerializer(serializers.ModelSerializer, SetPermissionsMixin): class SerializerWithPerms(serializers.Serializer):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.user = kwargs.pop("user", None) self.user = kwargs.pop("user", None)
full_perms = kwargs.pop("full_perms", False) full_perms = kwargs.pop("full_perms", False)
@ -178,6 +178,12 @@ class OwnedObjectSerializer(serializers.ModelSerializer, SetPermissionsMixin):
except KeyError: except KeyError:
pass pass
class OwnedObjectSerializer(
SerializerWithPerms,
serializers.ModelSerializer,
SetPermissionsMixin,
):
def get_permissions(self, obj): def get_permissions(self, obj):
view_codename = f"view_{obj.__class__.__name__.lower()}" view_codename = f"view_{obj.__class__.__name__.lower()}"
change_codename = f"change_{obj.__class__.__name__.lower()}" change_codename = f"change_{obj.__class__.__name__.lower()}"
@ -857,7 +863,11 @@ class DocumentListSerializer(serializers.Serializer):
return documents return documents
class BulkEditSerializer(DocumentListSerializer, SetPermissionsMixin): class BulkEditSerializer(
SerializerWithPerms,
DocumentListSerializer,
SetPermissionsMixin,
):
method = serializers.ChoiceField( method = serializers.ChoiceField(
choices=[ choices=[
"set_correspondent", "set_correspondent",
@ -1356,7 +1366,7 @@ class ShareLinkSerializer(OwnedObjectSerializer):
return super().create(validated_data) return super().create(validated_data)
class BulkEditObjectsSerializer(serializers.Serializer, SetPermissionsMixin): class BulkEditObjectsSerializer(SerializerWithPerms, SetPermissionsMixin):
objects = serializers.ListField( objects = serializers.ListField(
required=True, required=True,
allow_empty=False, allow_empty=False,

View File

@ -55,7 +55,6 @@ from rest_framework.exceptions import NotFound
from rest_framework.filters import OrderingFilter from rest_framework.filters import OrderingFilter
from rest_framework.filters import SearchFilter from rest_framework.filters import SearchFilter
from rest_framework.generics import GenericAPIView from rest_framework.generics import GenericAPIView
from rest_framework.mixins import CreateModelMixin
from rest_framework.mixins import DestroyModelMixin from rest_framework.mixins import DestroyModelMixin
from rest_framework.mixins import ListModelMixin from rest_framework.mixins import ListModelMixin
from rest_framework.mixins import RetrieveModelMixin from rest_framework.mixins import RetrieveModelMixin
@ -853,7 +852,7 @@ class LogViewSet(ViewSet):
return Response(exist) return Response(exist)
class SavedViewViewSet(ModelViewSet, PassUserMixin, CreateModelMixin): class SavedViewViewSet(ModelViewSet, PassUserMixin):
model = SavedView model = SavedView
queryset = SavedView.objects.all() queryset = SavedView.objects.all()
@ -873,7 +872,7 @@ class SavedViewViewSet(ModelViewSet, PassUserMixin, CreateModelMixin):
serializer.save(owner=self.request.user) serializer.save(owner=self.request.user)
class BulkEditView(PassUserMixin, CreateModelMixin): class BulkEditView(PassUserMixin):
permission_classes = (IsAuthenticated,) permission_classes = (IsAuthenticated,)
serializer_class = BulkEditSerializer serializer_class = BulkEditSerializer
parser_classes = (parsers.JSONParser,) parser_classes = (parsers.JSONParser,)
@ -1450,7 +1449,7 @@ def serve_file(doc: Document, use_archive: bool, disposition: str):
return response return response
class BulkEditObjectsView(PassUserMixin, CreateModelMixin): class BulkEditObjectsView(PassUserMixin):
permission_classes = (IsAuthenticated,) permission_classes = (IsAuthenticated,)
serializer_class = BulkEditObjectsSerializer serializer_class = BulkEditObjectsSerializer
parser_classes = (parsers.JSONParser,) parser_classes = (parsers.JSONParser,)