From def4f727b7c2dcc6bacafa5d1ae5817f0ef75772 Mon Sep 17 00:00:00 2001 From: Paul Morelle Date: Mon, 28 Sep 2020 12:31:17 +0000 Subject: [PATCH] [FIX] web: load_filters in search dialogs Since fbf347498f1cc7b74ef373179b7bcae201715c24, when opening a view in a dialog, the favorite filters were not loaded. For example on the runbot: 1. In CRM, open any lead, edit it, and open the Customer dropdown 2. Create a custom filter, save it as favorite, and close the dialog 3. Open the dialog again: you don't see your new filter With this commit, you will see your filter at step nr. 3 closes odoo/odoo#59186 X-original-commit: 418013e8dbb2aa2d4ffd4f650f080ca5a94183f9 Signed-off-by: Aaron Bohy (aab) Signed-off-by: Paul Morelle --- .../web/static/src/js/views/view_dialogs.js | 2 +- .../control_panel/favorite_menu_tests.js | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/views/view_dialogs.js b/addons/web/static/src/js/views/view_dialogs.js index 5eeab5ccede..7ac9a070260 100644 --- a/addons/web/static/src/js/views/view_dialogs.js +++ b/addons/web/static/src/js/views/view_dialogs.js @@ -335,7 +335,7 @@ var SelectCreateDialog = ViewDialog.extend({ var _super = this._super.bind(this); var viewRefID = this.viewType === 'kanban' ? (this.options.kanban_view_ref && JSON.parse(this.options.kanban_view_ref) || false) : false; - return this.loadViews(this.res_model, this.context, [[viewRefID, this.viewType], [false, 'search']], {}) + return this.loadViews(this.res_model, this.context, [[viewRefID, this.viewType], [false, 'search']], {load_filters: true}) .then(this.setup.bind(this)) .then(function (fragment) { self.opened().then(function () { diff --git a/addons/web/static/tests/control_panel/favorite_menu_tests.js b/addons/web/static/tests/control_panel/favorite_menu_tests.js index 9b0e4816645..4dd4571c289 100644 --- a/addons/web/static/tests/control_panel/favorite_menu_tests.js +++ b/addons/web/static/tests/control_panel/favorite_menu_tests.js @@ -580,5 +580,46 @@ odoo.define('web.favorite_menu_tests', function (require) { form.destroy(); }); + + QUnit.test('modal loads saved search filters', async function (assert) { + assert.expect(1); + const data = { + partner: { + fields: { + bar: { string: "Bar", type: "many2one", relation: 'partner' }, + }, + // 10 records so that the Search button shows + records: Array.apply(null, Array(10)).map(function(_, i) { + return { id: i, display_name: "Record " + i, bar: 1 }; + }) + }, + }; + const form = await createView({ + arch: ` +
+ + + + + +
`, + data, + model: 'partner', + res_id: 1, + View: FormView, + interceptsPropagate: { + load_views: function (ev) { + assert.ok(ev.data.options.load_filters, "opening dialog should load the filters"); + }, + }, + }); + + await testUtils.form.clickEdit(form); + + await testUtils.fields.many2one.clickOpenDropdown('bar'); + await testUtils.fields.many2one.clickItem('bar', 'Search'); + + form.destroy(); + }); }); });