From 5cd49fc0f8d7ea468324453fbd588326607222a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 26 Sep 2023 09:46:47 +0200 Subject: [PATCH] [IMP] mail: allow to change 'alias_domain_id' in alias mixin PURPOSE Allow alias domains to be multiple, notably to be used in a multi company environment where each company has its own alias domain. SPECIFICATIONS As 'alias_domain' is now dynamic and not based on a configuration parameter it makes sense to be able to change it when having several alias domain. We now allow writing on 'alias_domain_id' in 'mail.alias.mixin(.optional)'. Users may now change the alias domain of the alias coming with the mixin when they have write access on the record. Task-36879 (Mail: Support Multi Domains Aliases) Part-of: odoo/odoo#76734 --- addons/mail/models/mail_alias_mixin_optional.py | 2 +- addons/test_mail/tests/test_mail_alias.py | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/addons/mail/models/mail_alias_mixin_optional.py b/addons/mail/models/mail_alias_mixin_optional.py index 271e4eb3291..9d18e05c613 100644 --- a/addons/mail/models/mail_alias_mixin_optional.py +++ b/addons/mail/models/mail_alias_mixin_optional.py @@ -16,7 +16,7 @@ class AliasMixinOptional(models.AbstractModel): """ _name = 'mail.alias.mixin.optional' _description = 'Email Aliases Mixin (light)' - ALIAS_WRITEABLE_FIELDS = ['alias_name', 'alias_contact', 'alias_defaults', 'alias_bounced_content'] + ALIAS_WRITEABLE_FIELDS = ['alias_domain_id', 'alias_name', 'alias_contact', 'alias_defaults', 'alias_bounced_content'] alias_id = fields.Many2one('mail.alias', string='Alias', ondelete="restrict", required=False) alias_name = fields.Char(related='alias_id.alias_name', readonly=False) diff --git a/addons/test_mail/tests/test_mail_alias.py b/addons/test_mail/tests/test_mail_alias.py index ea386329109..dc12cd8b447 100644 --- a/addons/test_mail/tests/test_mail_alias.py +++ b/addons/test_mail/tests/test_mail_alias.py @@ -600,17 +600,14 @@ class TestMailAliasMixin(TestMailAliasCommon): self.assertEqual(record.alias_id.alias_contact, 'followers') record.write({ + 'alias_domain_id': self.mail_alias_domain_c2.id, 'alias_name': 'better.alias.test', 'alias_defaults': "{'default_name': 'defaults'}" }) + self.assertEqual(record.alias_domain, self.mail_alias_domain_c2.name) self.assertEqual(record.alias_id.alias_name, 'better.alias.test') self.assertEqual(record.alias_id.alias_defaults, "{'default_name': 'defaults'}") - with self.assertRaises(exceptions.AccessError): - record.write({ - 'alias_domain_id': self.mail_alias_domain_c2.id, - }) - with self.assertRaises(exceptions.AccessError): record.write({ 'alias_force_thread_id': 0,