mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	more bulk edit
This commit is contained in:
		| @@ -1,5 +1,4 @@ | ||||
| from documents.models import Document | ||||
|  | ||||
| from documents.models import Document, Correspondent | ||||
|  | ||||
| methods_supported = [ | ||||
|     "set_correspondent" | ||||
| @@ -36,4 +35,15 @@ def perform_bulk_edit(data): | ||||
|  | ||||
|  | ||||
| def set_correspondent(ids, args): | ||||
|     print("WOW") | ||||
|     if not len(args) == 1: | ||||
|         raise ValueError() | ||||
|  | ||||
|     if not args[0]: | ||||
|         correspondent = None | ||||
|     else: | ||||
|         if not isinstance(args[0], int): | ||||
|             raise ValueError() | ||||
|  | ||||
|         correspondent = Correspondent.objects.get(args[0]) | ||||
|  | ||||
|     Document.objects.filter(id__in=ids).update(correspondent=correspondent) | ||||
|   | ||||
| @@ -113,6 +113,34 @@ class LogSerializer(serializers.ModelSerializer): | ||||
|         ) | ||||
|  | ||||
|  | ||||
| class BulkEditSerializer(serializers.Serializer): | ||||
|  | ||||
|     documents = serializers.PrimaryKeyRelatedField( | ||||
|         many=True, | ||||
|         label="Documents", | ||||
|         write_only=True, | ||||
|         queryset=Document.objects.all() | ||||
|     ) | ||||
|  | ||||
|     method = serializers.ChoiceField( | ||||
|         choices=[ | ||||
|             "set_correspondent", | ||||
|             "set_document_type", | ||||
|             "add_tag", | ||||
|             "remove_tag", | ||||
|             "delete" | ||||
|         ], | ||||
|         label="Method", | ||||
|         write_only=True, | ||||
|     ) | ||||
|  | ||||
|     parameters = serializers.DictField(allow_empty=True) | ||||
|  | ||||
|     def validate(self, attrs): | ||||
|  | ||||
|         return attrs | ||||
|  | ||||
|  | ||||
| class PostDocumentSerializer(serializers.Serializer): | ||||
|  | ||||
|     document = serializers.FileField( | ||||
|   | ||||
| @@ -46,7 +46,8 @@ from .serialisers import ( | ||||
|     LogSerializer, | ||||
|     TagSerializer, | ||||
|     DocumentTypeSerializer, | ||||
|     PostDocumentSerializer | ||||
|     PostDocumentSerializer, | ||||
|     BulkEditSerializer | ||||
| ) | ||||
|  | ||||
|  | ||||
| @@ -165,13 +166,6 @@ class DocumentViewSet(RetrieveModelMixin, | ||||
|             disposition, filename) | ||||
|         return response | ||||
|  | ||||
|     @action(methods=['post'], detail=False) | ||||
|     def bulk_edit(self, request, pk=None): | ||||
|         try: | ||||
|             return Response(perform_bulk_edit(request.data)) | ||||
|         except Exception as e: | ||||
|             return HttpResponseBadRequest(str(e)) | ||||
|  | ||||
|     @action(methods=['get'], detail=True) | ||||
|     def metadata(self, request, pk=None): | ||||
|         try: | ||||
| @@ -225,6 +219,28 @@ class LogViewSet(ReadOnlyModelViewSet): | ||||
|     ordering_fields = ("created",) | ||||
|  | ||||
|  | ||||
| class BulkEditView(APIView): | ||||
|  | ||||
|     permission_classes = (IsAuthenticated,) | ||||
|     serializer_class = BulkEditSerializer | ||||
|     parser_classes = (parsers.JSONParser,) | ||||
|  | ||||
|     def get_serializer_context(self): | ||||
|         return { | ||||
|             'request': self.request, | ||||
|             'format': self.format_kwarg, | ||||
|             'view': self | ||||
|         } | ||||
|  | ||||
|     def get_serializer(self, *args, **kwargs): | ||||
|         kwargs['context'] = self.get_serializer_context() | ||||
|         return self.serializer_class(*args, **kwargs) | ||||
|  | ||||
|     def post(self, request, *args, **kwargs): | ||||
|         serializer = self.get_serializer(data=request.data) | ||||
|         serializer.is_valid(raise_exception=True) | ||||
|  | ||||
|  | ||||
| class PostDocumentView(APIView): | ||||
|  | ||||
|     permission_classes = (IsAuthenticated,) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 jonaswinkler
					jonaswinkler