diff --git a/addons/test_mail/tests/test_mail_message.py b/addons/test_mail/tests/test_mail_message.py index 37c59f40746..005976f4d74 100644 --- a/addons/test_mail/tests/test_mail_message.py +++ b/addons/test_mail/tests/test_mail_message.py @@ -170,6 +170,24 @@ class TestMessageValues(MailCommon): self.assertEqual(msg.reply_to, formataddr((test_record.name, reply_to_email)), 'Reply-To: use recordname as name in format if recordname + company > 78 chars') + # no record_name: keep company_name in formatting if ok + test_record.write({'name': ''}) + msg = self.env['mail.message'].create({ + 'model': test_record._name, + 'res_id': test_record.id + }) + self.assertEqual(msg.reply_to, formataddr((self.env.user.company_id.name, reply_to_email)), + 'Reply-To: use company as name in format when no record name and still < 78 chars') + + # no record_name and company_name make it blow up: keep only email + self.env.user.company_id.write({'name': 'Super Long Name That People May Enter "Even with an internal quoting of stuff"'}) + msg = self.env['mail.message'].create({ + 'model': test_record._name, + 'res_id': test_record.id + }) + self.assertEqual(msg.reply_to, reply_to_email, + 'Reply-To: use only email when formataddr > 78 chars') + # whatever the record and company names, email is too long: keep only email test_record.write({ 'alias_name': 'Waaaay too long alias name that should make any reply-to blow the 78 characters limit', diff --git a/odoo/addons/base/tests/test_ir_model.py b/odoo/addons/base/tests/test_ir_model.py index 4d1c78506f0..a613ce69fee 100644 --- a/odoo/addons/base/tests/test_ir_model.py +++ b/odoo/addons/base/tests/test_ir_model.py @@ -369,18 +369,12 @@ class TestIrModel(TransactionCase): self.assertEqual(self.registry.field_depends[type(record).display_name], ('x_name',)) self.assertEqual(record.display_name, "Ifan Ben-Mezd") - fallback_display_name = f"x_bananas,{record.id}" - - # When _rec_name value is Falsy, we should fallback correctly. - record.x_name = False - self.assertEqual(record.display_name, fallback_display_name) - # unlinking x_name should fixup _rec_name and display_name self.env['ir.model.fields']._get('x_bananas', 'x_name').unlink() record = self.env['x_bananas'].browse(record.id) self.assertEqual(record._rec_name, None) self.assertEqual(self.registry.field_depends[type(record).display_name], ()) - self.assertEqual(record.display_name, fallback_display_name) + self.assertEqual(record.display_name, f"x_bananas,{record.id}") def test_monetary_currency_field(self): fields_value = [ diff --git a/odoo/models.py b/odoo/models.py index 165551a0ad5..3b444a19b8a 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -1650,7 +1650,7 @@ class BaseModel(metaclass=MetaModel): if self._rec_name: convert = self._fields[self._rec_name].convert_to_display_name for record in self: - record.display_name = convert(record[self._rec_name], record) or f"{record._name},{record.id}" + record.display_name = convert(record[self._rec_name], record) else: for record in self: record.display_name = f"{record._name},{record.id}"