feat: add skip_sync_employee_company_ids context to prevent recursive sync loops in res_users write operations
This commit is contained in:
parent
cfd5575451
commit
9e6c22d012
@ -62,16 +62,19 @@ class ResUsers(models.Model):
|
|||||||
vals['company_ids'] = [(4, company_id)]
|
vals['company_ids'] = [(4, company_id)]
|
||||||
|
|
||||||
res = super().write(vals)
|
res = super().write(vals)
|
||||||
|
if not self.env.context.get('skip_sync_employee_company_ids'):
|
||||||
if any(f in vals for f in ['company_id', 'company_ids']):
|
if any(f in vals for f in ['company_id', 'company_ids']):
|
||||||
self.sudo()._sync_employee_company_ids()
|
self.sudo()._sync_employee_company_ids()
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def _sync_employee_company_ids(self):
|
def _sync_employee_company_ids(self):
|
||||||
|
if self.env.context.get('skip_sync_employee_company_ids'):
|
||||||
|
return
|
||||||
for user in self:
|
for user in self:
|
||||||
employee_companies = user.employee_ids.mapped('company_ids')
|
employee_companies = user.employee_ids.mapped('company_ids')
|
||||||
employee_primary_companies = user.employee_ids.mapped('company_id')
|
employee_primary_companies = user.employee_ids.mapped('company_id')
|
||||||
companies_to_add = (employee_companies | employee_primary_companies | user.company_id) - user.company_ids
|
companies_to_add = (employee_companies | employee_primary_companies | user.company_id) - user.company_ids
|
||||||
if companies_to_add:
|
if companies_to_add:
|
||||||
user.write({
|
user.with_context(skip_sync_employee_company_ids=True).write({
|
||||||
'company_ids': [(4, cid.id) for cid in companies_to_add]
|
'company_ids': [(4, cid.id) for cid in companies_to_add]
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user