mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	some bug fixes and tests
This commit is contained in:
		| @@ -91,7 +91,7 @@ def generate_unique_filename(doc, root): | ||||
|             return new_filename | ||||
|  | ||||
|  | ||||
| def generate_filename(doc, counter=0): | ||||
| def generate_filename(doc, counter=0, append_gpg=True): | ||||
|     path = "" | ||||
|  | ||||
|     try: | ||||
| @@ -151,7 +151,7 @@ def generate_filename(doc, counter=0): | ||||
|         filename = f"{doc.pk:07}{counter_str}{doc.file_type}" | ||||
|  | ||||
|     # Append .gpg for encrypted files | ||||
|     if doc.storage_type == doc.STORAGE_TYPE_GPG: | ||||
|     if append_gpg and doc.storage_type == doc.STORAGE_TYPE_GPG: | ||||
|         filename += ".gpg" | ||||
|  | ||||
|     return filename | ||||
|   | ||||
| @@ -108,7 +108,8 @@ class Command(Renderable, BaseCommand): | ||||
|             while True: | ||||
|                 if self.use_filename_format: | ||||
|                     base_name = generate_filename( | ||||
|                         document, counter=filename_counter) | ||||
|                         document, counter=filename_counter, | ||||
|                         append_gpg=False) | ||||
|                 else: | ||||
|                     base_name = document.get_public_filename( | ||||
|                         counter=filename_counter) | ||||
| @@ -139,15 +140,18 @@ class Command(Renderable, BaseCommand): | ||||
|             t = int(time.mktime(document.created.timetuple())) | ||||
|             if document.storage_type == Document.STORAGE_TYPE_GPG: | ||||
|  | ||||
|                 os.makedirs(os.path.dirname(original_target), exist_ok=True) | ||||
|                 with open(original_target, "wb") as f: | ||||
|                     f.write(GnuPG.decrypted(document.source_file)) | ||||
|                     os.utime(original_target, times=(t, t)) | ||||
|  | ||||
|                 os.makedirs(os.path.dirname(thumbnail_target), exist_ok=True) | ||||
|                 with open(thumbnail_target, "wb") as f: | ||||
|                     f.write(GnuPG.decrypted(document.thumbnail_file)) | ||||
|                     os.utime(thumbnail_target, times=(t, t)) | ||||
|  | ||||
|                 if archive_target: | ||||
|                     os.makedirs(os.path.dirname(archive_target), exist_ok=True) | ||||
|                     with open(archive_target, "wb") as f: | ||||
|                         f.write(GnuPG.decrypted(document.archive_path)) | ||||
|                         os.utime(archive_target, times=(t, t)) | ||||
|   | ||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								src/documents/tests/samples/documents/originals/0000004.pdf.gpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/documents/tests/samples/documents/originals/0000004.pdf.gpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -24,6 +24,8 @@ class TestExportImport(DirectoriesMixin, TestCase): | ||||
|         self.d1 = Document.objects.create(content="Content", checksum="42995833e01aea9b3edee44bbfdd7ce1", archive_checksum="62acb0bcbfbcaa62ca6ad3668e4e404b", title="wow1", filename="0000001.pdf", mime_type="application/pdf") | ||||
|         self.d2 = Document.objects.create(content="Content", checksum="9c9691e51741c1f4f41a20896af31770", title="wow2", filename="0000002.pdf", mime_type="application/pdf") | ||||
|         self.d3 = Document.objects.create(content="Content", checksum="d38d7ed02e988e072caf924e0f3fcb76", title="wow2", filename="0000003.pdf", mime_type="application/pdf") | ||||
|         self.d4 = Document.objects.create(content="Content", checksum="82186aaa94f0b98697d704b90fd1c072", title="wow_dec", filename="0000004.pdf.gpg", mime_type="application/pdf", storage_type=Document.STORAGE_TYPE_GPG) | ||||
|  | ||||
|         self.t1 = Tag.objects.create(name="t") | ||||
|         self.dt1 = DocumentType.objects.create(name="dt") | ||||
|         self.c1 = Correspondent.objects.create(name="c") | ||||
| @@ -34,6 +36,9 @@ class TestExportImport(DirectoriesMixin, TestCase): | ||||
|         self.d1.save() | ||||
|         super(TestExportImport, self).setUp() | ||||
|  | ||||
|     @override_settings( | ||||
|         PASSPHRASE="test" | ||||
|     ) | ||||
|     def _do_export(self, use_filename_format=False, compare_checksums=False): | ||||
|         args = ['document_exporter', self.target] | ||||
|         if use_filename_format: | ||||
| @@ -54,8 +59,8 @@ class TestExportImport(DirectoriesMixin, TestCase): | ||||
|  | ||||
|         manifest = self._do_export(use_filename_format=use_filename_format) | ||||
|  | ||||
|         self.assertEqual(len(manifest), 6) | ||||
|         self.assertEqual(len(list(filter(lambda e: e['model'] == 'documents.document', manifest))), 3) | ||||
|         self.assertEqual(len(manifest), 7) | ||||
|         self.assertEqual(len(list(filter(lambda e: e['model'] == 'documents.document', manifest))), 4) | ||||
|  | ||||
|         self.assertTrue(os.path.exists(os.path.join(self.target, "manifest.json"))) | ||||
|  | ||||
| @@ -69,6 +74,8 @@ class TestExportImport(DirectoriesMixin, TestCase): | ||||
|                     checksum = hashlib.md5(f.read()).hexdigest() | ||||
|                 self.assertEqual(checksum, element['fields']['checksum']) | ||||
|  | ||||
|                 self.assertEqual(element['fields']['storage_type'], Document.STORAGE_TYPE_UNENCRYPTED) | ||||
|  | ||||
|                 if document_exporter.EXPORTER_ARCHIVE_NAME in element: | ||||
|                     fname = os.path.join(self.target, element[document_exporter.EXPORTER_ARCHIVE_NAME]) | ||||
|                     self.assertTrue(os.path.exists(fname)) | ||||
| @@ -78,7 +85,7 @@ class TestExportImport(DirectoriesMixin, TestCase): | ||||
|                     self.assertEqual(checksum, element['fields']['archive_checksum']) | ||||
|  | ||||
|         with paperless_environment() as dirs: | ||||
|             self.assertEqual(Document.objects.count(), 3) | ||||
|             self.assertEqual(Document.objects.count(), 4) | ||||
|             Document.objects.all().delete() | ||||
|             Correspondent.objects.all().delete() | ||||
|             DocumentType.objects.all().delete() | ||||
| @@ -86,13 +93,14 @@ class TestExportImport(DirectoriesMixin, TestCase): | ||||
|             self.assertEqual(Document.objects.count(), 0) | ||||
|  | ||||
|             call_command('document_importer', self.target) | ||||
|             self.assertEqual(Document.objects.count(), 3) | ||||
|             self.assertEqual(Document.objects.count(), 4) | ||||
|             self.assertEqual(Tag.objects.count(), 1) | ||||
|             self.assertEqual(Correspondent.objects.count(), 1) | ||||
|             self.assertEqual(DocumentType.objects.count(), 1) | ||||
|             self.assertEqual(Document.objects.get(id=self.d1.id).title, "wow1") | ||||
|             self.assertEqual(Document.objects.get(id=self.d2.id).title, "wow2") | ||||
|             self.assertEqual(Document.objects.get(id=self.d3.id).title, "wow2") | ||||
|             self.assertEqual(Document.objects.get(id=self.d4.id).title, "wow_dec") | ||||
|             messages = check_sanity() | ||||
|             # everything is alright after the test | ||||
|             self.assertEqual(len(messages), 0, str([str(m) for m in messages])) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 jonaswinkler
					jonaswinkler