From 2c69b323b19fdfe2151fc7446dd105f359cf0906 Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Thu, 25 Mar 2021 09:23:36 +0000 Subject: [PATCH] [FIX] web: do not display falsy url field widgets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before this fix, unset char fields with the url widget in form view displayed "false", whereas they should simply be empty. This is a side-effect of commit [1], which aims at reducing the shift between readonly and edit modes in form views. [1] https://github.com/odoo/odoo/commit/288b24cbdf54ac0dbee7e012f074fac9a0c68238 closes odoo/odoo#68330 X-original-commit: de1f7ab77d37adbbc68e640ea9877721bfc869d2 Signed-off-by: Michaƫl Mattiello Signed-off-by: Aaron Bohy (aab) --- .../web/static/src/js/fields/basic_fields.js | 3 +++ .../static/tests/fields/basic_fields_tests.js | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index c370bf6aede..b31a18eba45 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -1695,6 +1695,9 @@ var UrlWidget = InputField.extend({ * @private */ _renderReadonly: function () { + if (!this.value) { + return; + } let href = this.value; if (this.value && !this.websitePath) { const regex = /^(?:[fF]|[hH][tT])[tT][pP][sS]?:\/\//; diff --git a/addons/web/static/tests/fields/basic_fields_tests.js b/addons/web/static/tests/fields/basic_fields_tests.js index 7d44b6e3af1..7a9876c41da 100644 --- a/addons/web/static/tests/fields/basic_fields_tests.js +++ b/addons/web/static/tests/fields/basic_fields_tests.js @@ -2100,6 +2100,29 @@ QUnit.module('basic_fields', { list.destroy(); }); + QUnit.test('url widget with falsy value', async function (assert) { + assert.expect(4); + + this.data.partner.records[0].foo = false; + const form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '
', + res_id: 1, + }); + + assert.containsOnce(form, 'div.o_field_widget[name=foo]'); + assert.strictEqual(form.$('.o_field_widget[name=foo]').text(), ""); + + await testUtils.form.clickEdit(form); + + assert.containsOnce(form, 'input.o_field_widget[name=foo]'); + assert.strictEqual(form.$('.o_field_widget[name=foo]').val(), ""); + + form.destroy(); + }); + QUnit.module('CopyClipboard'); QUnit.test('Char & Text Fields: Copy to clipboard button', async function (assert) {