From 1863ebc0aa1f63e510cc69088679f542f15fde4a Mon Sep 17 00:00:00 2001 From: Fabio Barbero Date: Tue, 23 Nov 2021 09:50:57 +0000 Subject: [PATCH] [FIX] web: avoid _reset crashing because of empty parameters Purpose ======= Avoid displaying a traceback when editing a partner in form view. This was observed in crm -> Sales Teams -> Clicking on a member to save and pressing "save" (which returned a javascript traceback in master). The same error was also observed in mass_mailing, when editing the responsible of a mailing list. This was due to the ev parameter being undefined in method _reset. A simple check has been added to see if the event is defined. Task-2694067 closes odoo/odoo#80504 X-original-commit: 88044fa003b3f17d2003bffb810965854427cbd3 Signed-off-by: Thibault Delavallee (tde) Co-authored-by: Mohammed Shekha --- .../src/legacy/js/fields/basic_fields.js | 2 +- .../static/tests/legacy/views/form_tests.js | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/legacy/js/fields/basic_fields.js b/addons/web/static/src/legacy/js/fields/basic_fields.js index 744244d8626..9e0b87c752f 100644 --- a/addons/web/static/src/legacy/js/fields/basic_fields.js +++ b/addons/web/static/src/legacy/js/fields/basic_fields.js @@ -3715,7 +3715,7 @@ var FieldDomain = AbstractField.extend({ this.domainSelector.destroy(); this.domainSelector = null; } - if (ev.target !== this) { + if (!ev || ev.target !== this) { this.debugEdition = false; } }, diff --git a/addons/web/static/tests/legacy/views/form_tests.js b/addons/web/static/tests/legacy/views/form_tests.js index 39c6ab26a44..68c9bb299fb 100644 --- a/addons/web/static/tests/legacy/views/form_tests.js +++ b/addons/web/static/tests/legacy/views/form_tests.js @@ -4449,6 +4449,43 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test('form with domain widget: opening a many2many form and save should not crash', async function (assert) { + assert.expect(0); + + // We just test that there is no crash in this situation + this.data.partner.records[0].timmy = [12]; + const form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: + `
+ + + + + + + + + + + + + `, + res_id: 1, + }); + + // switch to edit mode + await testUtils.form.clickEdit(form); + + // open a form view and save many2many record + await testUtils.dom.click(form.$('.o_data_row .o_data_cell:first')); + await testUtils.dom.click($('.modal-dialog footer button:first-child')); + + form.destroy(); + }); + QUnit.test('display_name not sent for onchanges if not in view', async function (assert) { assert.expect(7);