Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,11 @@ def process_attachment(self, settings: DynamicSettings, attachment: Attachment):

if width > thumbnail_width or height > thumbnail_height:
generate_attachment_thumbnail(
attachment, image, thumbnail_width, thumbnail_height
attachment,
image,
image.format,
thumbnail_width,
thumbnail_height,
)

attachment.save(
Expand Down
30 changes: 29 additions & 1 deletion misago/attachments/tests/test_generate_attachment_thumbnail.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import pytest

from PIL import Image

from ..thumbnails import generate_attachment_thumbnail
Expand All @@ -7,9 +9,35 @@ def test_generate_attachment_thumbnail_generates_thumbnail_image_and_updates_att
image_attachment, image_large, teardown_attachments
):
image = Image.open(image_large)
generate_attachment_thumbnail(image_attachment, image, 400, 300)
generate_attachment_thumbnail(image_attachment, image, image.format, 400, 300)

assert image_attachment.thumbnail
assert image_attachment.thumbnail.url
assert image_attachment.thumbnail_dimensions == "300x300"
assert image_attachment.thumbnail_size
assert image_attachment.thumbnail_format == image.format


@pytest.mark.parametrize(
[
"img_height",
"img_width",
],
[
pytest.param(1000, 400, id="max_height_greater"),
pytest.param(400, 1000, id="max_width_greater"),
],
)
def test_generate_attachment_thumbnail_generates_thumbnail_image_and_updates_attachment_gt_max_dimensions(
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The function that you should test is store_uploaded_file, not generate_attachment_thumbnail

img_height, img_width, image_attachment, image_large, teardown_attachments
):
image = Image.open(image_large)
generate_attachment_thumbnail(
image_attachment, image, image.format, img_width, img_height
)

assert image_attachment.thumbnail
assert image_attachment.thumbnail.url
assert image_attachment.thumbnail_dimensions == "400x400"
assert image_attachment.thumbnail_size
assert image_attachment.thumbnail_format == image.format
3 changes: 2 additions & 1 deletion misago/attachments/thumbnails.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@


def generate_attachment_thumbnail(
attachment: Attachment, image, width: int, height: int
attachment: Attachment, image, format: str, width: int, height: int
):
thumbnail_stream = BytesIO()
format = image.format
Expand All @@ -23,5 +23,6 @@ def generate_attachment_thumbnail(

attachment.thumbnail_dimensions = "x".join(map(str, image.size))
attachment.thumbnail_size = attachment.thumbnail.size
attachment.thumbnail_format = format

del thumbnail_stream
6 changes: 5 additions & 1 deletion misago/attachments/upload.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,11 @@ def _store_attachment_image(

if image.width > thumbnail_width or image.height > thumbnail_height:
generate_attachment_thumbnail(
attachment, image, thumbnail_width, thumbnail_height
attachment,
image,
image_format,
thumbnail_width,
thumbnail_height,
)


Expand Down