Skip to content

Commit 7e0c4b6

Browse files
committed
Added image_format parameter to generate_attachment_thumbnail (#1976)
1 parent dedac4c commit 7e0c4b6

File tree

5 files changed

+26
-6
lines changed

5 files changed

+26
-6
lines changed

misago/attachments/management/commands/processimageattachments.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def process_attachment(self, settings: DynamicSettings, attachment: Attachment):
7171

7272
if width > thumbnail_width or height > thumbnail_height:
7373
generate_attachment_thumbnail(
74-
attachment, image, thumbnail_width, thumbnail_height
74+
attachment, image, image.format, thumbnail_width, thumbnail_height
7575
)
7676

7777
attachment.save(

misago/attachments/tests/test_generate_attachment_thumbnail.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ def test_generate_attachment_thumbnail_generates_thumbnail_image_and_updates_att
77
image_attachment, image_large, teardown_attachments
88
):
99
image = Image.open(image_large)
10-
generate_attachment_thumbnail(image_attachment, image, 400, 300)
10+
generate_attachment_thumbnail(image_attachment, image, image.format, 400, 300)
1111

1212
assert image_attachment.thumbnail
1313
assert image_attachment.thumbnail.url

misago/attachments/tests/test_store_uploaded_file.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,3 +195,24 @@ def test_store_uploaded_file_raises_validation_error_for_invalid_image(
195195

196196
assert exc_info.value.message == "Image file is not valid."
197197
assert exc_info.value.code == "unidentified_image"
198+
199+
200+
@override_dynamic_settings(
201+
attachment_image_max_width=400,
202+
attachment_image_max_height=300,
203+
attachment_thumbnail_width=150,
204+
attachment_thumbnail_height=100,
205+
)
206+
def test_store_uploaded_file_stores_image_file_scaled_down_with_thumbnail(
207+
user, dynamic_settings, image_large, teardown_attachments
208+
):
209+
with open(image_large, "rb") as fp:
210+
upload = SimpleUploadedFile("image.png", fp.read(), "image/png")
211+
212+
request = Mock(user=user, settings=dynamic_settings)
213+
filetype = filetypes.match_filetype(upload.name)
214+
215+
attachment = store_uploaded_file(request, upload, filetype)
216+
217+
assert attachment.thumbnail
218+
assert attachment.thumbnail_dimensions == "100x100"

misago/attachments/thumbnails.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@
77

88

99
def generate_attachment_thumbnail(
10-
attachment: Attachment, image, width: int, height: int
10+
attachment: Attachment, image, image_format: str, width: int, height: int
1111
):
1212
thumbnail_stream = BytesIO()
13-
format = image.format
1413

1514
image.thumbnail((width, height))
16-
image.save(thumbnail_stream, format)
15+
image.save(thumbnail_stream, image_format)
1716

1817
attachment.thumbnail = SimpleUploadedFile(
1918
attachment.name,

misago/attachments/upload.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ def _store_attachment_image(
163163

164164
if image.width > thumbnail_width or image.height > thumbnail_height:
165165
generate_attachment_thumbnail(
166-
attachment, image, thumbnail_width, thumbnail_height
166+
attachment, image, image_format, thumbnail_width, thumbnail_height
167167
)
168168

169169

0 commit comments

Comments
 (0)