From 37508d25835319363185f26d92cdeb399215e6c8 Mon Sep 17 00:00:00 2001 From: Joachim Date: Sat, 20 Nov 2021 16:23:50 +0100 Subject: [PATCH 1/6] Update preview_images.py --- bookwyrm/preview_images.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/bookwyrm/preview_images.py b/bookwyrm/preview_images.py index 8224a2787..179dcf11c 100644 --- a/bookwyrm/preview_images.py +++ b/bookwyrm/preview_images.py @@ -11,7 +11,6 @@ from PIL import Image, ImageDraw, ImageFont, ImageOps, ImageColor from django.core.files.base import ContentFile from django.core.files.uploadedfile import InMemoryUploadedFile -from django.core.files.storage import default_storage from django.db.models import Avg from bookwyrm import models, settings @@ -318,14 +317,13 @@ def save_and_cleanup(image, instance=None): if not isinstance(instance, (models.Book, models.User, models.SiteSettings)): return False uuid = uuid4() - file_name = f"{instance.id}-{uuid}.jpg" image_buffer = BytesIO() try: try: - old_path = instance.preview_image.name + file_name = instance.preview_image.name except ValueError: - old_path = None + file_name = f"{instance.id}-{uuid}.jpg" # Save image.save(image_buffer, format="jpeg", quality=75) @@ -345,10 +343,6 @@ def save_and_cleanup(image, instance=None): else: instance.save(update_fields=["preview_image"]) - # Clean up old file after saving - if old_path and default_storage.exists(old_path): - default_storage.delete(old_path) - finally: image_buffer.close() return True From 40264e372db9f2629f377971e3137510803c7f65 Mon Sep 17 00:00:00 2001 From: Joachim Date: Sat, 20 Nov 2021 16:26:02 +0100 Subject: [PATCH 2/6] Update preview_images.py --- bookwyrm/preview_images.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/preview_images.py b/bookwyrm/preview_images.py index 179dcf11c..16dd41f7c 100644 --- a/bookwyrm/preview_images.py +++ b/bookwyrm/preview_images.py @@ -316,13 +316,13 @@ def save_and_cleanup(image, instance=None): """Save and close the file""" if not isinstance(instance, (models.Book, models.User, models.SiteSettings)): return False - uuid = uuid4() image_buffer = BytesIO() try: try: file_name = instance.preview_image.name except ValueError: + uuid = uuid4() file_name = f"{instance.id}-{uuid}.jpg" # Save From d74df047c55def1684ac0a9e423b5bcf847494a3 Mon Sep 17 00:00:00 2001 From: Joachim Date: Sat, 20 Nov 2021 16:59:05 +0100 Subject: [PATCH 3/6] Clean up file before saving --- bookwyrm/preview_images.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bookwyrm/preview_images.py b/bookwyrm/preview_images.py index 16dd41f7c..743230672 100644 --- a/bookwyrm/preview_images.py +++ b/bookwyrm/preview_images.py @@ -11,6 +11,7 @@ from PIL import Image, ImageDraw, ImageFont, ImageOps, ImageColor from django.core.files.base import ContentFile from django.core.files.uploadedfile import InMemoryUploadedFile +from django.core.files.storage import default_storage from django.db.models import Avg from bookwyrm import models, settings @@ -325,6 +326,10 @@ def save_and_cleanup(image, instance=None): uuid = uuid4() file_name = f"{instance.id}-{uuid}.jpg" + # Clean up old file before saving + if file_name and default_storage.exists(file_name): + default_storage.delete(file_name) + # Save image.save(image_buffer, format="jpeg", quality=75) From f26a41bd10b638e156cca5e4c55c91fae7406387 Mon Sep 17 00:00:00 2001 From: Joachim Date: Sat, 20 Nov 2021 17:10:29 +0100 Subject: [PATCH 4/6] Prevent empty file name --- bookwyrm/preview_images.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bookwyrm/preview_images.py b/bookwyrm/preview_images.py index 743230672..c6bc3cbe7 100644 --- a/bookwyrm/preview_images.py +++ b/bookwyrm/preview_images.py @@ -323,6 +323,9 @@ def save_and_cleanup(image, instance=None): try: file_name = instance.preview_image.name except ValueError: + file_name = None + + if not file_name or file_name == '': uuid = uuid4() file_name = f"{instance.id}-{uuid}.jpg" From 7d0a7ab7660727d27a54978418bcca1e13724125 Mon Sep 17 00:00:00 2001 From: Joachim Date: Sat, 20 Nov 2021 17:12:54 +0100 Subject: [PATCH 5/6] Bump django-imagekit to remove deprecation warning --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 7cf1c68a0..c69800491 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ celery==4.4.2 colorthief==0.2.1 Django==3.2.5 -django-imagekit==4.0.2 +django-imagekit==4.1.0 django-model-utils==4.0.0 environs==9.3.4 flower==0.9.4 From ad6aaa6bc88e2718f5ad64aa6c4dcca7b57f1696 Mon Sep 17 00:00:00 2001 From: Joachim Date: Sat, 20 Nov 2021 17:15:58 +0100 Subject: [PATCH 6/6] Update preview_images.py --- bookwyrm/preview_images.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/preview_images.py b/bookwyrm/preview_images.py index c6bc3cbe7..32465d6ed 100644 --- a/bookwyrm/preview_images.py +++ b/bookwyrm/preview_images.py @@ -325,7 +325,7 @@ def save_and_cleanup(image, instance=None): except ValueError: file_name = None - if not file_name or file_name == '': + if not file_name or file_name == "": uuid = uuid4() file_name = f"{instance.id}-{uuid}.jpg"