From a7990134ee306a889e7fd82491fcd2cfa4ed3392 Mon Sep 17 00:00:00 2001 From: Laurent Smet Date: Thu, 24 Mar 2022 12:29:20 +0000 Subject: [PATCH] [FIX] web: Prevent 'load_views' caused by default values inside the context The use case is the following: - Create a kanban view - Customize it to open a form view on the right when clicking on a kanban card - The form view is initialized using the context with a 'default_...' key to set a field. => Since the context is different every time, the 'load_views' rpc call is always triggered, leading to performance issues. Task: 2555114 Part-of: odoo/odoo#91448 --- addons/web/static/src/views/view_service.js | 3 ++- addons/web/static/tests/views/view_service_tests.js | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/views/view_service.js b/addons/web/static/src/views/view_service.js index 3f02d05dafa..10f38d7f528 100644 --- a/addons/web/static/src/views/view_service.js +++ b/addons/web/static/src/views/view_service.js @@ -74,7 +74,8 @@ export const viewService = { loadViewsOptions.mobile = true; } const { context, resModel, views } = params; - const key = JSON.stringify([resModel, views, context, loadViewsOptions]); + let filteredContext = Object.fromEntries(Object.entries(context || {}).filter((k,v) => !String(k).startsWith("default_"))); + const key = JSON.stringify([resModel, views, filteredContext, loadViewsOptions]); if (!cache[key]) { cache[key] = orm .call(resModel, "get_views", [], { context, views, options: loadViewsOptions }) diff --git a/addons/web/static/tests/views/view_service_tests.js b/addons/web/static/tests/views/view_service_tests.js index 1eb638dce8f..704583ee2dc 100644 --- a/addons/web/static/tests/views/view_service_tests.js +++ b/addons/web/static/tests/views/view_service_tests.js @@ -53,6 +53,7 @@ QUnit.module("View service", (hooks) => { { resModel: "take.five", views: [[99, "list"]], + context: {default_field_value: 1}, }, {} ); @@ -60,6 +61,7 @@ QUnit.module("View service", (hooks) => { { resModel: "take.five", views: [[99, "list"]], + context: {default_field_value: 2}, }, {} );