From 7fdc3a189085495b369cd633e76c5b03cce8babe Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Mon, 1 Jul 2019 12:13:53 +0000 Subject: [PATCH] [FIX] base: Allow to create an user Now that an onchange set its result into the cache, we cannot create a user because the onchange tries to put the reified fields (eg: sel_4_7) into the cache. As those field don't exist and are pseudo-fields used to manage groups into the res user form view, we should replace the values by ORM commands on the groups_id field, as this is already the case in the create and the write methods. Note: Initially merged in saas-12.4, but was not forward ported, I don't know why. closes odoo/odoo#34487 Signed-off-by: Yannick Tivisse (yti) --- odoo/addons/base/models/res_users.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py index cafde3c10ff..a8043cc0d99 100644 --- a/odoo/addons/base/models/res_users.py +++ b/odoo/addons/base/models/res_users.py @@ -1192,6 +1192,18 @@ class UsersView(models.Model): user.write({'groups_id': [(4, group_multi_company.id)]}) return res + @api.model + def new(self, values={}, origin=None, ref=None): + values = self._remove_reified_groups(values) + user = super().new(values=values, origin=origin, ref=ref) + group_multi_company = self.env.ref('base.group_multi_company', False) + if group_multi_company and 'company_ids' in values: + if len(user.company_ids) <= 1 and user.id in group_multi_company.users.ids: + user.update({'groups_id': [(3, group_multi_company.id)]}) + elif len(user.company_ids) > 1 and user.id not in group_multi_company.users.ids: + user.update({'groups_id': [(4, group_multi_company.id)]}) + return user + def _remove_reified_groups(self, values): """ return `values` without reified group fields """ add, rem = [], []