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)
+ self.full_perms = kwargs.pop("full_perms", False)
+ super().__init__(*args, **kwargs)
+
+
+class OwnedObjectSerializer(
+ SerializerWithPerms,
+ serializers.ModelSerializer,
+ SetPermissionsMixin,
+):
+ def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
try:
- if full_perms:
+ if self.full_perms:
self.fields.pop("user_can_change")
self.fields.pop("is_shared_by_requester")
else:
return documents
-class BulkEditSerializer(DocumentListSerializer, SetPermissionsMixin):
+class BulkEditSerializer(
+ SerializerWithPerms,
+ DocumentListSerializer,
+ SetPermissionsMixin,
+):
method = serializers.ChoiceField(
choices=[
"set_correspondent",
return super().create(validated_data)
-class BulkEditObjectsSerializer(serializers.Serializer, SetPermissionsMixin):
+class BulkEditObjectsSerializer(SerializerWithPerms, SetPermissionsMixin):
objects = serializers.ListField(
required=True,
allow_empty=False,
self.assertIsNone(overrides.document_type_id)
self.assertIsNone(overrides.tag_ids)
+ def test_create_wrong_endpoint(self):
+ response = self.client.post(
+ "/api/documents/",
+ {},
+ )
+
+ self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)
+
def test_upload_empty_metadata(self):
self.consume_file_mock.return_value = celery.result.AsyncResult(
id=str(uuid.uuid4()),
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
return context
-class PassUserMixin(CreateModelMixin):
+class PassUserMixin(GenericAPIView):
"""
Pass a user object to serializer
"""
serializer.save(owner=self.request.user)
-class BulkEditView(GenericAPIView, PassUserMixin):
+class BulkEditView(PassUserMixin):
permission_classes = (IsAuthenticated,)
serializer_class = BulkEditSerializer
parser_classes = (parsers.JSONParser,)
return response
-class BulkEditObjectsView(GenericAPIView, PassUserMixin):
+class BulkEditObjectsView(PassUserMixin):
permission_classes = (IsAuthenticated,)
serializer_class = BulkEditObjectsSerializer
parser_classes = (parsers.JSONParser,)
queryset = CustomField.objects.all().order_by("-created")
-class SystemStatusView(GenericAPIView, PassUserMixin):
+class SystemStatusView(PassUserMixin):
permission_classes = (IsAuthenticated,)
def get(self, request, format=None):