diff --git a/storage_thumbnail/models/thumbnail_mixin.py b/storage_thumbnail/models/thumbnail_mixin.py index 2db06aff65..736eb09647 100644 --- a/storage_thumbnail/models/thumbnail_mixin.py +++ b/storage_thumbnail/models/thumbnail_mixin.py @@ -101,6 +101,7 @@ def get_existing_thumbnail(self, size_x, size_y, url_key=None): return thumbnail def get_or_create_thumbnail(self, size_x, size_y, url_key=None): + url_key = self._get_url_key(url_key) thumbnail = self.get_existing_thumbnail(size_x, size_y, url_key=url_key) if not thumbnail and self.data: vals = self.env["storage.thumbnail"]._prepare_thumbnail( diff --git a/storage_thumbnail/tests/test_thumbnail.py b/storage_thumbnail/tests/test_thumbnail.py index 44bacbb7ba..9db0b0522d 100644 --- a/storage_thumbnail/tests/test_thumbnail.py +++ b/storage_thumbnail/tests/test_thumbnail.py @@ -51,6 +51,18 @@ def test_thumbnail(self): thumb.unlink() self.assertTrue(file_id.to_delete) + def test_image_get_or_create_thumbnail_no_duplicate(self): + # Ensure no duplicate is generated thanks to unique url_key + image = self._create_image() + self.assertTrue(image.url) + self.assertEqual(len(image.thumbnail_ids), 2) + thumb = image.thumb_small_id + thumb.url_key = "test" + existing_thumb = image.get_or_create_thumbnail( + thumb.size_x, thumb.size_y, url_key="TEST" + ) + self.assertEqual(thumb, existing_thumb) + def test_model(self): image = self._create_image() self.assertTrue(image.url)