Skip to content

Commit 3a8522e

Browse files
committed
[FIX] mail: Fix validation error
Step to reproduce: 1. Install documents in version 17.0. 2. create new company for that create document folder and set alias_domain 3. upgrade to 18.0 below menitoned traceback will raise Issue: previously fix was deployed odoo/upgrade@edae537 in the upgrade forcefully creating the incoming mails. Cause: ``mail.alias.mixin`` is introduced in existing model odoo/enterprise@a32825e#diff-b394e0e6aa5c87ff7d84c0317fa2ed372a90b7d3e730c462fcb81d4b747f46ebL34 As ``alias_id`` is kept as false according to this new alia records are creating but as it sudo it bringing all company records due to this and during upgrade env company alias_domain_id used which is letting alias_domain_id here https://github.com/odoo/odoo/blob/9719feb1fac64e06c988b336b077a0aa47a2b96a/addons/mail/models/mail_alias.py#L262 of that company which is leading to validation error due to mismatch of record. Fix: for fixing this is record have company_id so create mail alias according to that ``` Traceback (most recent call last): File "/home/odoo/src/odoo/18.0/odoo/service/server.py", line 1361, in preload_registries registry = Registry.new(dbname, update_module=update_module) File "<decorator-gen-13>", line 2, in new File "/home/odoo/src/odoo/18.0/odoo/tools/func.py", line 97, in locked return func(inst, *args, **kwargs) File "/home/odoo/src/odoo/18.0/odoo/modules/registry.py", line 129, in new odoo.modules.load_modules(registry, force_demo, status, update_module) File "/home/odoo/src/odoo/18.0/odoo/modules/loading.py", line 480, in load_modules processed_modules += load_marked_modules(env, graph, File "/home/odoo/src/odoo/18.0/odoo/modules/loading.py", line 365, in load_marked_modules loaded, processed = load_module_graph( File "/home/odoo/src/odoo/18.0/odoo/modules/loading.py", line 206, in load_module_graph registry.init_models(env.cr, model_names, {'module': package.name}, new_install) File "/home/odoo/src/odoo/18.0/odoo/modules/registry.py", line 617, in init_models func() File "/home/odoo/src/odoo/18.0/addons/mail/models/mail_alias_mixin.py", line 49, in _init_column_alias_id alias = self.env['mail.alias'].sudo().create(record._alias_get_creation_values()) File "<decorator-gen-136>", line 2, in create File "/home/odoo/src/odoo/18.0/odoo/api.py", line 495, in _model_create_multi return create(self, [arg]) File "/home/odoo/src/odoo/18.0/addons/mail/models/mail_alias.py", line 266, in create return super().create(vals_list) File "<decorator-gen-120>", line 2, in create File "/home/odoo/src/odoo/18.0/odoo/api.py", line 496, in _model_create_multi return create(self, arg) File "/tmp/tmppqp1_15u/migrations/util/orm.py", line 249, in wrapper return f(*args, **kwargs) File "/tmp/tmppqp1_15u/migrations/base/0.0.0/pre-models-match_uniq.py", line 25, in create return super().create(vals_list) File "<decorator-gen-31>", line 2, in create File "/home/odoo/src/odoo/18.0/odoo/api.py", line 496, in _model_create_multi return create(self, arg) File "/home/odoo/src/odoo/18.0/odoo/models.py", line 5017, in create records = self._create(data_list) File "/home/odoo/src/odoo/18.0/odoo/models.py", line 5275, in _create records._validate_fields(name for data in data_list for name in data['stored']) File "/home/odoo/src/odoo/18.0/odoo/models.py", line 1631, in _validate_fields check(self) File "/home/odoo/src/odoo/18.0/addons/mail/models/mail_alias.py", line 159, in _check_alias_domain_id_mc raise ValidationError(_( odoo.exceptions.ValidationError: We could not create alias Inactive Alias because domain bsiri.co.th belongs to company BSIRI Company Limited (HeadOffice) while the owner document belongs to company MindGift LL> ``` upg-3017582 opw-4941387 closes odoo#220607 X-original-commit: 4e08004 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com> Signed-off-by: Sanchit Gupta (sagu) <sagu@odoo.com>
1 parent b161204 commit 3a8522e

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

addons/mail/models/mail_alias_mixin.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,10 @@ def _init_column_alias_id(self):
4545
child_model = self.sudo().with_context(child_ctx)
4646

4747
for record in child_model.search([('alias_id', '=', False)]):
48-
# create the alias, and link it to the current record
49-
alias = self.env['mail.alias'].sudo().create(record._alias_get_creation_values())
48+
# create the alias associated with its company if one exists,
49+
# and link it to the current record
50+
record_company = record._mail_get_companies()[record.id]
51+
alias = self.env['mail.alias'].sudo().with_company(record_company).create(record._alias_get_creation_values())
5052
record.with_context(mail_notrack=True).alias_id = alias
5153
_logger.info('Mail alias created for %s %s (id %s)',
5254
record._name, record.display_name, record.id)

0 commit comments

Comments
 (0)