From 3fcddd6029509ca325f142f2e23b2dd47ff46d06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 21 Jan 2025 18:35:56 +0100 Subject: [PATCH] Read only the image from the selected cache Using the instance from the list of cache, the ORM read the image for all the linked cache which is unnecessary. Closes #13831 (grafted from 4dd742a6d7cb8765364387d95fbc54c3ed86bce9) --HG-- branch : 7.0 --- modules/product_image/product.py | 3 ++- trytond/trytond/ir/avatar.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/product_image/product.py b/modules/product_image/product.py index 328cd837c0..e309e3a1b7 100644 --- a/modules/product_image/product.py +++ b/modules/product_image/product.py @@ -166,7 +166,8 @@ class Image(ImageMixin, sequence_ordered(), ModelSQL, ModelView, MatchMixin): raise ValueError("Invalid size") for cache in self.cache: if cache.size == size: - return cache.image + # re-instantiate to fetch only one image + return cache.__class__(cache.id).image with Transaction().new_transaction(): cache = self._store_cache(size, self._resize(size)) # Save cache only if record is already committed diff --git a/trytond/trytond/ir/avatar.py b/trytond/trytond/ir/avatar.py index 50e896b75c..142a4efbfb 100644 --- a/trytond/trytond/ir/avatar.py +++ b/trytond/trytond/ir/avatar.py @@ -100,7 +100,8 @@ class Avatar(ImageMixin, ResourceMixin, ModelSQL): raise ValueError("Invalid size") for avatar in self.cache: if avatar.size == size: - return avatar.image + # re-instantiate to fetch only one image + return avatar.__class__(avatar.id).image if not self.image: return None if PIL: