[FIX] core: name_get() should return "" instead of False

Because of 4347491670, 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 <rco@odoo.com>
This commit is contained in:
Raphael Collet
2022-03-18 19:50:10 +01:00
parent 7cac66187b
commit f5ff26f42e
2 changed files with 6 additions and 2 deletions
@@ -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):
+2 -2
View File
@@ -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)))