mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-28 03:46:06 -05:00 
			
		
		
		
	Removes last vestiges of PNG from the tests, code, docs and samples
This commit is contained in:
		| @@ -83,8 +83,6 @@ ARG RUNTIME_PACKAGES="\ | ||||
|   postgresql-client \ | ||||
|   # For Numpy | ||||
|   libatlas3-base \ | ||||
|   # thumbnail size reduction | ||||
|   pngquant \ | ||||
|   # OCRmyPDF dependencies | ||||
|   tesseract-ocr \ | ||||
|   tesseract-ocr-eng \ | ||||
|   | ||||
| @@ -518,15 +518,3 @@ Basic usage to disable encryption of your document store: | ||||
| .. code:: | ||||
|  | ||||
|     decrypt_documents [--passphrase SECR3TP4SSPHRA$E] | ||||
|  | ||||
| Managing thumbnail format | ||||
| =================== | ||||
|  | ||||
| Document thumbnails were originally created as PNG format.  Newly | ||||
| uploaded documents are now using WebP to reduce both storage space and | ||||
| page loading times.  To convert older PNG format thumbnails to WebP | ||||
| run: | ||||
|  | ||||
| .. code:: | ||||
|  | ||||
|     convert_thumbnails | ||||
|   | ||||
| @@ -1,6 +1,5 @@ | ||||
| # this is here so that django finds the checks. | ||||
| from .checks import changed_password_check | ||||
| from .checks import parser_check | ||||
| from .checks import png_thumbnail_check | ||||
|  | ||||
| __all__ = ["changed_password_check", "parser_check", "png_thumbnail_check"] | ||||
| __all__ = ["changed_password_check", "parser_check"] | ||||
|   | ||||
| @@ -1,9 +1,7 @@ | ||||
| import textwrap | ||||
| from pathlib import Path | ||||
|  | ||||
| from django.conf import settings | ||||
| from django.core.checks import Error | ||||
| from django.core.checks import Info | ||||
| from django.core.checks import register | ||||
| from django.core.exceptions import FieldError | ||||
| from django.db.utils import OperationalError | ||||
| @@ -68,23 +66,3 @@ def parser_check(app_configs, **kwargs): | ||||
|         ] | ||||
|     else: | ||||
|         return [] | ||||
|  | ||||
|  | ||||
| @register() | ||||
| def png_thumbnail_check(app_configs, **kwargs): | ||||
|     from documents.models import Document | ||||
|  | ||||
|     try: | ||||
|         documents = Document.objects.all() | ||||
|         for document in documents: | ||||
|             existing_thumbnail = Path(document.thumbnail_path).resolve() | ||||
|             if existing_thumbnail.suffix == ".png": | ||||
|                 return [ | ||||
|                     Info( | ||||
|                         "PNG thumbnails found, consider running convert_thumbnails " | ||||
|                         "to convert to WebP", | ||||
|                     ), | ||||
|                 ] | ||||
|         return [] | ||||
|     except (OperationalError, ProgrammingError, FieldError): | ||||
|         return []  # No documents table yet | ||||
|   | ||||
| @@ -189,7 +189,7 @@ class Command(BaseCommand): | ||||
|             original_target = os.path.join(self.target, original_name) | ||||
|             document_dict[EXPORTER_FILE_NAME] = original_name | ||||
|  | ||||
|             thumbnail_name = base_name + "-thumbnail.png" | ||||
|             thumbnail_name = base_name + "-thumbnail.webp" | ||||
|             thumbnail_target = os.path.join(self.target, thumbnail_name) | ||||
|             document_dict[EXPORTER_THUMBNAIL_NAME] = thumbnail_name | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| import logging | ||||
| import multiprocessing | ||||
| import shutil | ||||
| from pathlib import Path | ||||
|  | ||||
| import tqdm | ||||
| from django import db | ||||
| @@ -23,12 +22,6 @@ def _process_document(doc_in): | ||||
|  | ||||
|     try: | ||||
|  | ||||
|         existing_thumbnail = Path(document.thumbnail_path).resolve() | ||||
|  | ||||
|         # Remove an existing PNG format thumbnail, if it existed | ||||
|         if existing_thumbnail.exists() and existing_thumbnail.suffix == ".png": | ||||
|             existing_thumbnail.unlink() | ||||
|  | ||||
|         thumb = parser.get_thumbnail( | ||||
|             document.source_path, | ||||
|             document.mime_type, | ||||
|   | ||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 7.7 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/documents/tests/samples/documents/thumbnails/0000001.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/documents/tests/samples/documents/thumbnails/0000001.webp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 2.6 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 7.7 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/documents/tests/samples/documents/thumbnails/0000002.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/documents/tests/samples/documents/thumbnails/0000002.webp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 2.6 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 7.7 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/documents/tests/samples/documents/thumbnails/0000003.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/documents/tests/samples/documents/thumbnails/0000003.webp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 2.6 KiB | 
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -176,7 +176,7 @@ class TestDocumentApi(DirectoriesMixin, APITestCase): | ||||
|         ) | ||||
|  | ||||
|         with open( | ||||
|             os.path.join(self.dirs.thumbnail_dir, f"{doc.pk:07d}.png"), | ||||
|             os.path.join(self.dirs.thumbnail_dir, f"{doc.pk:07d}.webp"), | ||||
|             "wb", | ||||
|         ) as f: | ||||
|             f.write(content_thumbnail) | ||||
| @@ -1022,7 +1022,7 @@ class TestDocumentApi(DirectoriesMixin, APITestCase): | ||||
|             "samples", | ||||
|             "documents", | ||||
|             "thumbnails", | ||||
|             "0000001.png", | ||||
|             "0000001.webp", | ||||
|         ) | ||||
|         archive_file = os.path.join(os.path.dirname(__file__), "samples", "simple.pdf") | ||||
|  | ||||
|   | ||||
| @@ -180,7 +180,7 @@ class DummyParser(DocumentParser): | ||||
|  | ||||
|     def __init__(self, logging_group, scratch_dir, archive_path): | ||||
|         super().__init__(logging_group, None) | ||||
|         _, self.fake_thumb = tempfile.mkstemp(suffix=".png", dir=scratch_dir) | ||||
|         _, self.fake_thumb = tempfile.mkstemp(suffix=".webp", dir=scratch_dir) | ||||
|         self.archive_path = archive_path | ||||
|  | ||||
|     def get_thumbnail(self, document_path, mime_type, file_name=None): | ||||
| @@ -199,7 +199,7 @@ class CopyParser(DocumentParser): | ||||
|  | ||||
|     def __init__(self, logging_group, progress_callback=None): | ||||
|         super().__init__(logging_group, progress_callback) | ||||
|         _, self.fake_thumb = tempfile.mkstemp(suffix=".png", dir=self.tempdir) | ||||
|         _, self.fake_thumb = tempfile.mkstemp(suffix=".webp", dir=self.tempdir) | ||||
|  | ||||
|     def parse(self, document_path, mime_type, file_name=None): | ||||
|         self.text = "The text" | ||||
| @@ -214,7 +214,7 @@ class FaultyParser(DocumentParser): | ||||
|  | ||||
|     def __init__(self, logging_group, scratch_dir): | ||||
|         super().__init__(logging_group) | ||||
|         _, self.fake_thumb = tempfile.mkstemp(suffix=".png", dir=scratch_dir) | ||||
|         _, self.fake_thumb = tempfile.mkstemp(suffix=".webp", dir=scratch_dir) | ||||
|  | ||||
|     def get_thumbnail(self, document_path, mime_type, file_name=None): | ||||
|         return self.fake_thumb | ||||
| @@ -230,6 +230,8 @@ def fake_magic_from_file(file, mime=False): | ||||
|             return "application/pdf" | ||||
|         elif os.path.splitext(file)[1] == ".png": | ||||
|             return "image/png" | ||||
|         elif os.path.splitext(file)[1] == ".webp": | ||||
|             return "image/webp" | ||||
|         else: | ||||
|             return "unknown" | ||||
|     else: | ||||
|   | ||||
| @@ -150,9 +150,9 @@ class TestDecryptDocuments(TestCase): | ||||
|                 "samples", | ||||
|                 "documents", | ||||
|                 "thumbnails", | ||||
|                 f"0000004.png.gpg", | ||||
|                 f"0000004.webp.gpg", | ||||
|             ), | ||||
|             os.path.join(thumb_dir, f"{doc.id:07}.png.gpg"), | ||||
|             os.path.join(thumb_dir, f"{doc.id:07}.webp.gpg"), | ||||
|         ) | ||||
|  | ||||
|         call_command("decrypt_documents") | ||||
|   | ||||
| @@ -42,9 +42,9 @@ class TestSanityCheck(DirectoriesMixin, TestCase): | ||||
|                     "samples", | ||||
|                     "documents", | ||||
|                     "thumbnails", | ||||
|                     "0000001.png", | ||||
|                     "0000001.webp", | ||||
|                 ), | ||||
|                 os.path.join(self.dirs.thumbnail_dir, "0000001.png"), | ||||
|                 os.path.join(self.dirs.thumbnail_dir, "0000001.webp"), | ||||
|             ) | ||||
|  | ||||
|         return Document.objects.create( | ||||
|   | ||||
| @@ -362,11 +362,7 @@ class DocumentViewSet( | ||||
|                 handle = doc.thumbnail_file | ||||
|             # TODO: Send ETag information and use that to send new thumbnails | ||||
|             #  if available | ||||
|             thumbnail_path = doc.thumbnail_path | ||||
|             if os.path.splitext(thumbnail_path)[1] == ".webp": | ||||
|                 content_type = "image/webp" | ||||
|             else: | ||||
|                 content_type = "image/png" | ||||
|             content_type = "image/webp" | ||||
|  | ||||
|             return HttpResponse(handle, content_type=content_type) | ||||
|         except (FileNotFoundError, Document.DoesNotExist): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Trenton Holmes
					Trenton Holmes