diff --git a/arkindex/documents/models.py b/arkindex/documents/models.py index 07f700ac68e02f86830bd86f2559006d358a45df..2840c50dcaceaf90dd6de1e6027d1ec0a2bcec21 100644 --- a/arkindex/documents/models.py +++ b/arkindex/documents/models.py @@ -656,9 +656,11 @@ class Element(IndexableModel): if self.mirrored: rotation_param = f"!{rotation_param}" + # Do no attempt to upsize small images for thumbnails + thumbnail_height = min(400, height) return urljoin( self.image.url + "/", - f"{x},{y},{width},{height}/,400/{rotation_param}/default.jpg" + f"{x},{y},{width},{height}/,{thumbnail_height}/{rotation_param}/default.jpg" ) def __str__(self): diff --git a/arkindex/documents/tests/test_element.py b/arkindex/documents/tests/test_element.py index cdad929018b3cdf851d2707a2b8eab155da7b0e3..a2e101144c4fa2d7a4c23c20a4e105145a36e9df 100644 --- a/arkindex/documents/tests/test_element.py +++ b/arkindex/documents/tests/test_element.py @@ -38,24 +38,22 @@ class TestElement(FixtureTestCase): def test_iiif_thumbnail_url(self): cases = [ - (0, False, "http://server/img1/10,20,30,40/,400/0/default.jpg"), - (0, True, "http://server/img1/10,20,30,40/,400/!0/default.jpg"), - (180, False, "http://server/img1/10,20,30,40/,400/180/default.jpg"), - (180, True, "http://server/img1/10,20,30,40/,400/!180/default.jpg"), + (0, False, [[500, 100], [650, 100], [650, 800], [500, 800], [500, 100]], "http://server/img1/500,100,150,700/,400/0/default.jpg"), + (0, True, [[500, 100], [650, 100], [650, 800], [500, 800], [500, 100]], "http://server/img1/500,100,150,700/,400/!0/default.jpg"), + (180, False, [[500, 580], [650, 580], [650, 700], [500, 700], [500, 580]], "http://server/img1/500,580,150,120/,120/180/default.jpg"), + (180, True, [[500, 580], [650, 580], [650, 700], [500, 700], [500, 580]], "http://server/img1/500,580,150,120/,120/!180/default.jpg"), + (0, False, [[10, 20], [40, 20], [40, 60], [10, 60], [10, 20]], "http://server/img1/10,20,30,40/,40/0/default.jpg"), + (0, True, [[10, 20], [40, 20], [40, 60], [10, 60], [10, 20]], "http://server/img1/10,20,30,40/,40/!0/default.jpg"), + (180, False, [[10, 20], [40, 20], [40, 60], [10, 60], [10, 20]], "http://server/img1/10,20,30,40/,40/180/default.jpg"), + (180, True, [[10, 20], [40, 20], [40, 60], [10, 60], [10, 20]], "http://server/img1/10,20,30,40/,40/!180/default.jpg"), ] - for rotation_angle, mirrored, expected_url in cases: + for rotation_angle, mirrored, polygon, expected_url in cases: with self.subTest(rotation_angle=rotation_angle, mirrored=mirrored): element = Element( name="Something", type=self.element_type, image=self.image, - polygon=[ - [10, 20], - [40, 20], - [40, 60], - [10, 60], - [10, 20], - ], + polygon=polygon, rotation_angle=rotation_angle, mirrored=mirrored, )