mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	api serves archive files by default.
This commit is contained in:
		| @@ -1,3 +1,5 @@ | ||||
| import os | ||||
|  | ||||
| from django.db.models import Count, Max | ||||
| from django.http import HttpResponse, HttpResponseBadRequest, Http404 | ||||
| from django.views.decorators.cache import cache_control | ||||
| @@ -126,15 +128,25 @@ class DocumentViewSet(RetrieveModelMixin, | ||||
|         index.remove_document_from_index(self.get_object()) | ||||
|         return super(DocumentViewSet, self).destroy(request, *args, **kwargs) | ||||
|  | ||||
|     def file_response(self, pk, disposition): | ||||
|         doc = Document.objects.get(id=pk) | ||||
|     @staticmethod | ||||
|     def original_requested(request): | ||||
|         return ( | ||||
|             'original' in request.query_params and | ||||
|             request.query_params['original'] == 'true' | ||||
|         ) | ||||
|  | ||||
|         if doc.storage_type == Document.STORAGE_TYPE_UNENCRYPTED: | ||||
|     def file_response(self, pk, request, disposition): | ||||
|         doc = Document.objects.get(id=pk) | ||||
|         mime_type = doc.mime_type | ||||
|         if not self.original_requested(request) and os.path.isfile(doc.archive_path): | ||||
|             file_handle = doc.archive_file | ||||
|             mime_type = 'application/pdf' | ||||
|         elif doc.storage_type == Document.STORAGE_TYPE_UNENCRYPTED: | ||||
|             file_handle = doc.source_file | ||||
|         else: | ||||
|             file_handle = GnuPG.decrypted(doc.source_file) | ||||
|  | ||||
|         response = HttpResponse(file_handle, content_type=doc.mime_type) | ||||
|         response = HttpResponse(file_handle, content_type=mime_type) | ||||
|         response["Content-Disposition"] = '{}; filename="{}"'.format( | ||||
|             disposition, doc.file_name) | ||||
|         return response | ||||
| @@ -152,7 +164,8 @@ class DocumentViewSet(RetrieveModelMixin, | ||||
|     @action(methods=['get'], detail=True) | ||||
|     def preview(self, request, pk=None): | ||||
|         try: | ||||
|             response = self.file_response(pk, "inline") | ||||
|             response = self.file_response( | ||||
|                 pk, request, "inline") | ||||
|             return response | ||||
|         except FileNotFoundError: | ||||
|             raise Http404("Document source file does not exist") | ||||
| @@ -169,7 +182,8 @@ class DocumentViewSet(RetrieveModelMixin, | ||||
|     @action(methods=['get'], detail=True) | ||||
|     def download(self, request, pk=None): | ||||
|         try: | ||||
|             return self.file_response(pk, "attachment") | ||||
|             return self.file_response( | ||||
|                 pk, request, "attachment") | ||||
|         except FileNotFoundError: | ||||
|             raise Http404("Document source file does not exist") | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jonas Winkler
					Jonas Winkler