From f5ff26f42e63c41143444a6b1122d71bc2c1071d Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Thu, 17 Mar 2022 12:08:39 +0000 Subject: [PATCH] [FIX] core: name_get() should return "" instead of False Because of 4347491670cb0e1bef64084badeccd5b09a95377, the method name_get() can now return records with False as label, and this makes code crash when it expects a string. Make sure that name_get() always return strings as labels, while keeping False as empty value for the field 'display_name'. closes odoo/odoo#86688 X-original-commit: ff37a2fef89df292b52b1501c28fcf841e1628f5 Signed-off-by: Raphael Collet --- odoo/addons/test_new_api/tests/test_onchange.py | 4 ++++ odoo/models.py | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/odoo/addons/test_new_api/tests/test_onchange.py b/odoo/addons/test_new_api/tests/test_onchange.py index c0e115bc704..73a8cc4a204 100644 --- a/odoo/addons/test_new_api/tests/test_onchange.py +++ b/odoo/addons/test_new_api/tests/test_onchange.py @@ -601,6 +601,10 @@ class TestOnChange(SavepointCaseWithUserDemo): self.assertEqual(form.name, False) self.assertEqual(form.display_name, False) + record = form.save() + self.assertEqual(record.display_name, False) + self.assertEqual(record.name_get(), [(record.id, "")]) + class TestComputeOnchange(common.TransactionCase): diff --git a/odoo/models.py b/odoo/models.py index 6e6d2c33ec5..2ba025553f5 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -1834,7 +1834,7 @@ class BaseModel(metaclass=MetaModel): """ names = dict(self.name_get()) for record in self: - record.display_name = names.get(record.id, False) + record.display_name = names.get(record.id) or False def name_get(self): """Returns a textual representation for the records in ``self``, with @@ -1855,7 +1855,7 @@ class BaseModel(metaclass=MetaModel): if name in self._fields: convert = self._fields[name].convert_to_display_name for record in self: - result.append((record.id, convert(record[name], record))) + result.append((record.id, convert(record[name], record) or "")) else: for record in self: result.append((record.id, "%s,%s" % (record._name, record.id)))