diff --git a/odoo/addons/base/models/ir_qweb_fields.py b/odoo/addons/base/models/ir_qweb_fields.py index 431a95d607a..3efe3dc30bc 100644 --- a/odoo/addons/base/models/ir_qweb_fields.py +++ b/odoo/addons/base/models/ir_qweb_fields.py @@ -781,15 +781,16 @@ class Contact(models.AbstractModel): opsep = Markup('
') value = value.sudo().with_context(show_address=True) + display_name = value.display_name or '' # Avoid having something like: # display_name = 'Foo\n \n' -> This is a res.partner with a name and no address # That would return markup('
') as address. But there is no address set. - if any(elem.strip() for elem in value.display_name.split("\n")[1:]): - address = opsep.join(value.display_name.split("\n")[1:]).strip() + if any(elem.strip() for elem in display_name.split("\n")[1:]): + address = opsep.join(display_name.split("\n")[1:]).strip() else: address = '' val = { - 'name': value.display_name.split("\n")[0], + 'name': display_name.split("\n")[0], 'address': address, 'phone': value.phone, 'mobile': value.mobile, diff --git a/odoo/addons/base/tests/test_qweb.py b/odoo/addons/base/tests/test_qweb.py index a57193dfe6c..07fa58091ea 100644 --- a/odoo/addons/base/tests/test_qweb.py +++ b/odoo/addons/base/tests/test_qweb.py @@ -1644,6 +1644,21 @@ class TestQWebBasic(TransactionCase): markupsafe.Markup(f'

{p_instruction}

'), "Should have the processing instruction") + def test_render_widget_contact(self): + u = self.env['res.users'].create({ + 'name': 'Test', + 'login': 'test@example.com', + }) + u.name = "" + view1 = self.env['ir.ui.view'].create({ + 'name': "dummy", + 'type': 'qweb', + 'arch': """ + + """ + }) + self.env['ir.qweb']._render(view1.id, {'user': u}) # should not crash + def test_void_element(self): view = self.env['ir.ui.view'].create({ 'name': 'master',