From 53d6d795ddf6cc9e470bfeb48bb31bc728acedbe Mon Sep 17 00:00:00 2001 From: fja-odoo Date: Tue, 27 Feb 2024 01:40:45 +0000 Subject: [PATCH] [FIX] web: fix image cache in kanban/activity view The way we cache the image is not right when that image is not on the current record. For instance displaying a partner/user image. The unique key used is not related to that record. Introduced by https://github.com/odoo/odoo/pull/97544 closes odoo/odoo#157199 X-original-commit: d127ec26d8e8d42c0e25668797cbd0f37203dc52 Signed-off-by: Samuel Degueldre (sad) Signed-off-by: fja-odoo --- addons/test_mail/static/tests/activity_tests.js | 4 +--- addons/web/static/src/views/kanban/kanban_record.js | 9 ++++++--- .../web/static/tests/views/kanban/kanban_view_tests.js | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/addons/test_mail/static/tests/activity_tests.js b/addons/test_mail/static/tests/activity_tests.js index 81879c83aac..e0e12f12189 100644 --- a/addons/test_mail/static/tests/activity_tests.js +++ b/addons/test_mail/static/tests/activity_tests.js @@ -1393,9 +1393,7 @@ QUnit.module("test_mail", {}, function () { assert.ok( target .querySelector(".o_activity_record img") - .dataset.src.endsWith( - "/web/image?model=partner&field=image&id=2&unique=1659688620000" - ), + .dataset.src.endsWith("/web/image?model=partner&field=image&id=2"), "image src is the preview image given in option" ); }); diff --git a/addons/web/static/src/views/kanban/kanban_record.js b/addons/web/static/src/views/kanban/kanban_record.js index a870d4af664..bcffbac196f 100644 --- a/addons/web/static/src/views/kanban/kanban_record.js +++ b/addons/web/static/src/views/kanban/kanban_record.js @@ -149,12 +149,15 @@ export function getImageSrcFromRecordInfo(record, model, field, idOrIds, placeho return placeholder; } else { // Else: fetches the image related to the given id. - return url("/web/image", { + const params = { model, field, id, - unique: imageCacheKey(record.data.write_date), - }); + }; + if (isCurrentRecord) { + params.unique = imageCacheKey(record.data.write_date); + } + return url("/web/image", params); } } diff --git a/addons/web/static/tests/views/kanban/kanban_view_tests.js b/addons/web/static/tests/views/kanban/kanban_view_tests.js index 206bad364c6..5c38cb82af5 100644 --- a/addons/web/static/tests/views/kanban/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban/kanban_view_tests.js @@ -10916,12 +10916,12 @@ QUnit.module("Views", (hooks) => { }); assert.containsOnce( target, - 'img[data-src*="/web/image"][data-src$="&id=1&unique="]', + 'img[data-src*="/web/image"][data-src$="&id=1"]', "image url should contain id of set partner_id" ); assert.containsOnce( target, - 'img[data-src*="/web/image"][data-src$="&id=&unique="]', + 'img[data-src*="/web/image"][data-src$="&id="]', "image url should contain an empty id if partner_id is not set" ); });