mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	better error messages for file uploads. adresses #91
This commit is contained in:
		| @@ -16,26 +16,31 @@ export class UploadFileWidgetComponent implements OnInit { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   public fileOver(event){ |   public fileOver(event){ | ||||||
|     console.log(event); |  | ||||||
|   } |   } | ||||||
|   |  | ||||||
|   public fileLeave(event){ |   public fileLeave(event){ | ||||||
|     console.log(event); |  | ||||||
|   } |   } | ||||||
|   |  | ||||||
|   public dropped(files: NgxFileDropEntry[]) { |   public dropped(files: NgxFileDropEntry[]) { | ||||||
|     for (const droppedFile of files) { |     for (const droppedFile of files) { | ||||||
|       if (droppedFile.fileEntry.isFile) { |       if (droppedFile.fileEntry.isFile) { | ||||||
|         const fileEntry = droppedFile.fileEntry as FileSystemFileEntry; |         const fileEntry = droppedFile.fileEntry as FileSystemFileEntry; | ||||||
|         console.log(fileEntry) |  | ||||||
|         fileEntry.file((file: File) => { |         fileEntry.file((file: File) => { | ||||||
|           console.log(file) |  | ||||||
|           const formData = new FormData() |           const formData = new FormData() | ||||||
|           formData.append('document', file, file.name) |           formData.append('document', file, file.name) | ||||||
|           this.documentService.uploadDocument(formData).subscribe(result => { |           this.documentService.uploadDocument(formData).subscribe(result => { | ||||||
|             this.toastService.showToast(Toast.make("Information", "The document has been uploaded and will be processed by the consumer shortly.")) |             this.toastService.showToast(Toast.make("Information", "The document has been uploaded and will be processed by the consumer shortly.")) | ||||||
|           }, error => { |           }, error => { | ||||||
|             this.toastService.showToast(Toast.makeError("An error has occured while uploading the document. Sorry!")) |             switch (error.status) { | ||||||
|  |               case 400: { | ||||||
|  |                 this.toastService.showToast(Toast.makeError(`There was an error while uploading the document: ${error.error.document}`)) | ||||||
|  |                 break; | ||||||
|  |               } | ||||||
|  |               default: { | ||||||
|  |                 this.toastService.showToast(Toast.makeError("An error has occured while uploading the document. Sorry!")) | ||||||
|  |                 break; | ||||||
|  |               } | ||||||
|  |             } | ||||||
|           }) |           }) | ||||||
|         }); |         }); | ||||||
|       } |       } | ||||||
|   | |||||||
| @@ -150,8 +150,7 @@ class PostDocumentSerializer(serializers.Serializer): | |||||||
|         required=False, |         required=False, | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|     def validate(self, attrs): |     def validate_document(self, document): | ||||||
|         document = attrs.get('document') |  | ||||||
|  |  | ||||||
|         try: |         try: | ||||||
|             validate_filename(document.name) |             validate_filename(document.name) | ||||||
| @@ -163,32 +162,31 @@ class PostDocumentSerializer(serializers.Serializer): | |||||||
|  |  | ||||||
|         if not is_mime_type_supported(mime_type): |         if not is_mime_type_supported(mime_type): | ||||||
|             raise serializers.ValidationError( |             raise serializers.ValidationError( | ||||||
|                 "This mime type is not supported.") |                 "This file type is not supported.") | ||||||
|  |  | ||||||
|         attrs['document_data'] = document_data |         return document.name, document_data | ||||||
|  |  | ||||||
|         title = attrs.get('title') |     def validate_title(self, title): | ||||||
|  |         if title: | ||||||
|  |             return title | ||||||
|  |         else: | ||||||
|  |             # do not return empty strings. | ||||||
|  |             return None | ||||||
|  |  | ||||||
|         if not title: |     def validate_correspondent(self, correspondent): | ||||||
|             attrs['title'] = None |  | ||||||
|  |  | ||||||
|         correspondent = attrs.get('correspondent') |  | ||||||
|         if correspondent: |         if correspondent: | ||||||
|             attrs['correspondent_id'] = correspondent.id |             return correspondent.id | ||||||
|         else: |         else: | ||||||
|             attrs['correspondent_id'] = None |             return None | ||||||
|  |  | ||||||
|         document_type = attrs.get('document_type') |     def validate_document_type(self, document_type): | ||||||
|         if document_type: |         if document_type: | ||||||
|             attrs['document_type_id'] = document_type.id |             return document_type.id | ||||||
|         else: |         else: | ||||||
|             attrs['document_type_id'] = None |             return None | ||||||
|  |  | ||||||
|         tags = attrs.get('tags') |     def validate_tags(self, tags): | ||||||
|         if tags: |         if tags: | ||||||
|             tag_ids = [tag.id for tag in tags] |             return [tag.id for tag in tags] | ||||||
|             attrs['tag_ids'] = tag_ids |  | ||||||
|         else: |         else: | ||||||
|             attrs['tag_ids'] = None |             return None | ||||||
|  |  | ||||||
|         return attrs |  | ||||||
|   | |||||||
| @@ -235,12 +235,11 @@ class PostDocumentView(APIView): | |||||||
|         serializer = self.get_serializer(data=request.data) |         serializer = self.get_serializer(data=request.data) | ||||||
|         serializer.is_valid(raise_exception=True) |         serializer.is_valid(raise_exception=True) | ||||||
|  |  | ||||||
|         document = serializer.validated_data['document'] |         doc_name, doc_data = serializer.validated_data.get('document') | ||||||
|         document_data = serializer.validated_data['document_data'] |         correspondent_id = serializer.validated_data.get('correspondent') | ||||||
|         correspondent_id = serializer.validated_data['correspondent_id'] |         document_type_id = serializer.validated_data.get('document_type') | ||||||
|         document_type_id = serializer.validated_data['document_type_id'] |         tag_ids = serializer.validated_data.get('tags') | ||||||
|         tag_ids = serializer.validated_data['tag_ids'] |         title = serializer.validated_data.get('title') | ||||||
|         title = serializer.validated_data['title'] |  | ||||||
|  |  | ||||||
|         t = int(mktime(datetime.now().timetuple())) |         t = int(mktime(datetime.now().timetuple())) | ||||||
|  |  | ||||||
| @@ -249,17 +248,17 @@ class PostDocumentView(APIView): | |||||||
|         with tempfile.NamedTemporaryFile(prefix="paperless-upload-", |         with tempfile.NamedTemporaryFile(prefix="paperless-upload-", | ||||||
|                                          dir=settings.SCRATCH_DIR, |                                          dir=settings.SCRATCH_DIR, | ||||||
|                                          delete=False) as f: |                                          delete=False) as f: | ||||||
|             f.write(document_data) |             f.write(doc_data) | ||||||
|             os.utime(f.name, times=(t, t)) |             os.utime(f.name, times=(t, t)) | ||||||
|  |  | ||||||
|             async_task("documents.tasks.consume_file", |             async_task("documents.tasks.consume_file", | ||||||
|                        f.name, |                        f.name, | ||||||
|                        override_filename=document.name, |                        override_filename=doc_name, | ||||||
|                        override_title=title, |                        override_title=title, | ||||||
|                        override_correspondent_id=correspondent_id, |                        override_correspondent_id=correspondent_id, | ||||||
|                        override_document_type_id=document_type_id, |                        override_document_type_id=document_type_id, | ||||||
|                        override_tag_ids=tag_ids, |                        override_tag_ids=tag_ids, | ||||||
|                        task_name=os.path.basename(document.name)[:100]) |                        task_name=os.path.basename(doc_name)[:100]) | ||||||
|         return Response("OK") |         return Response("OK") | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 jonaswinkler
					jonaswinkler