diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py index 58bea3bb662..573f6227fb6 100644 --- a/odoo/addons/base/models/res_users.py +++ b/odoo/addons/base/models/res_users.py @@ -701,7 +701,7 @@ class Users(models.Model): def _get_company_ids(self): # use search() instead of `self.company_ids` to avoid extra query for `active_test` domain = [('active', '=', True), ('user_ids', 'in', self.id)] - return frozenset(self.env['res.company'].search(domain).ids) + return self.env['res.company'].search(domain)._ids @api.model def action_get(self): diff --git a/odoo/api.py b/odoo/api.py index e6c3f174305..6f0bd85ce04 100644 --- a/odoo/api.py +++ b/odoo/api.py @@ -622,7 +622,7 @@ class Environment(Mapping): if company_ids: if not self.su: user_company_ids = self.user._get_company_ids() - if any(cid not in user_company_ids for cid in company_ids): + if set(company_ids) - set(user_company_ids): raise AccessError(_("Access to unauthorized or invalid companies.")) return self['res.company'].browse(company_ids[0]) return self.user.company_id.with_env(self) @@ -652,7 +652,7 @@ class Environment(Mapping): user_company_ids = self.user._get_company_ids() if company_ids: if not self.su: - if any(cid not in user_company_ids for cid in company_ids): + if set(company_ids) - set(user_company_ids): raise AccessError(_("Access to unauthorized or invalid companies.")) return self['res.company'].browse(company_ids) # By setting the default companies to all user companies instead of the main one