From 2c11e734f81e1c0a42f8eae0a4acbfd8de541eab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Hennecart=20=28jeh=29?= Date: Wed, 2 Aug 2023 08:41:43 +0000 Subject: [PATCH] [FIX] web: fix empty html field Markup("") on a HTML field should be counted as an empty field. Check now the length of the value and assign false for HTML field if we have an empty string inside markup. This was leading to an issue where empty alert message were displayed based on computed HTML field. closes odoo/odoo#130479 Signed-off-by: Aaron Bohy (aab) --- .../src/model/relational_model/record.js | 2 + .../tests/views/fields/html_field_tests.js | 38 ++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/model/relational_model/record.js b/addons/web/static/src/model/relational_model/record.js index 1a3ab93380c..da92ee18225 100644 --- a/addons/web/static/src/model/relational_model/record.js +++ b/addons/web/static/src/model/relational_model/record.js @@ -447,6 +447,8 @@ export class Record extends DataPoint { return value ? serializeDateTime(value) : false; } else if (fieldType === "char" || fieldType === "text") { return value !== "" ? value : false; + } else if (fieldType === "html") { + return value && value.length ? value : false; } else if (fieldType === "many2one") { return value ? value[0] : false; } else if (fieldType === "reference") { diff --git a/addons/web/static/tests/views/fields/html_field_tests.js b/addons/web/static/tests/views/fields/html_field_tests.js index 2170f9633c3..99f767b9880 100644 --- a/addons/web/static/tests/views/fields/html_field_tests.js +++ b/addons/web/static/tests/views/fields/html_field_tests.js @@ -1,6 +1,12 @@ /** @odoo-module **/ -import { click, editInput, getFixture, patchWithCleanup } from "@web/../tests/helpers/utils"; +import { + click, + clickSave, + editInput, + getFixture, + patchWithCleanup, +} from "@web/../tests/helpers/utils"; import { makeView, setupViewRegistries } from "@web/../tests/views/helpers"; import { registry } from "@web/core/registry"; import { htmlField } from "@web/views/fields/html/html_field"; @@ -291,4 +297,34 @@ QUnit.module("Fields", ({ beforeEach }) => { "spellcheck is re-enabled once the field is focused" ); }); + + QUnit.test( + "Setting an html field to empty string is saved as a false value", + async function (assert) { + assert.expect(1); + + await makeView({ + type: "form", + resModel: "partner", + serverData, + arch: ` +
+ + + + + +
`, + resId: 1, + mockRPC(route, { args, method }) { + if (method === "write") { + assert.strictEqual(args[1].txt, false, "the txt value should be false"); + } + }, + }); + + await editInput(target, ".o_field_widget[name=txt] textarea", ""); + await clickSave(target); + } + ); });