From a61c2ec715ef367fac63374a9c2e1c1429b14151 Mon Sep 17 00:00:00 2001 From: Prakash Prajapati Date: Wed, 8 Sep 2021 09:37:55 +0000 Subject: [PATCH] [FIX] web: prevent translation alert from flickering Before this commit, the translation alert might briefly appear in form views displayed in dialogs (on new records), just before the dialog closes. Task 2639227 closes odoo/odoo#77002 X-original-commit: c9aa20160cd8b1bc9c9bdcd34bb996b8dfefc291 Signed-off-by: Aaron Bohy (aab) --- .../src/legacy/js/views/form/form_renderer.js | 6 ++- .../static/tests/legacy/views/form_tests.js | 37 +++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/legacy/js/views/form/form_renderer.js b/addons/web/static/src/legacy/js/views/form/form_renderer.js index 4c4a517f84c..9a9c3570c00 100644 --- a/addons/web/static/src/legacy/js/views/form/form_renderer.js +++ b/addons/web/static/src/legacy/js/views/form/form_renderer.js @@ -130,8 +130,10 @@ var FormRenderer = BasicRenderer.extend({ * @param {Object} alertFields */ updateAlertFields: function (alertFields) { - this.alertFields[this.state.res_id] = _.extend(this.alertFields[this.state.res_id] || {}, alertFields); - this.displayTranslationAlert(); + if (this.state.res_id) { + this.alertFields[this.state.res_id] = _.extend(this.alertFields[this.state.res_id] || {}, alertFields); + this.displayTranslationAlert(); + } }, /** * Show a warning message if the user modified a translated field. For each diff --git a/addons/web/static/tests/legacy/views/form_tests.js b/addons/web/static/tests/legacy/views/form_tests.js index 8f1b570d25b..c723a5db7a0 100644 --- a/addons/web/static/tests/legacy/views/form_tests.js +++ b/addons/web/static/tests/legacy/views/form_tests.js @@ -14,6 +14,7 @@ var mixins = require('web.mixins'); var pyUtils = require('web.py_utils'); var RamStorage = require('web.RamStorage'); var testUtils = require('web.test_utils'); +var ViewDialogs = require('web.view_dialogs'); var widgetRegistry = require('web.widget_registry'); const widgetRegistryOwl = require('web.widgetRegistry'); var Widget = require('web.Widget'); @@ -7088,6 +7089,42 @@ QUnit.module('Views', { _t.database.multi_lang = multi_lang; }); + QUnit.test('check the translate alert in the wizard', async function (assert) { + assert.expect(1); + + // Check whether it is alert before the dialog closes + testUtils.mock.patch(ViewDialogs.FormViewDialog, { + close() { + assert.containsNone(this.$el, '.o_notification_box'); + this._super(...arguments); + }, + }); + + this.data.product.fields.name.translate = true; + + const multi_lang = _t.database.multi_lang; + _t.database.multi_lang = true; + + const form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: `
`, + archs: { + 'product,false,form': `
`, + }, + res_id: 1, + }); + + await testUtils.form.clickEdit(form); + await testUtils.fields.many2one.createAndEdit('product_id', "Ralts"); + await testUtils.dom.click($('.modal-footer button.btn-primary')); + + form.destroy(); + testUtils.mock.unpatch(ViewDialogs.FormViewDialog); + _t.database.multi_lang = multi_lang; + }); + QUnit.test('buttons are disabled until status bar action is resolved', async function (assert) { assert.expect(9);