diff options
| author | Christophe Simonis <chs@odoo.com> | 2019-09-24 16:59:15 +0000 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2019-09-24 17:45:37 +0000 |
| commit | d67b2483e5bfa5d8c1e6ef1a64fb933f5e080ad5 (patch) | |
| tree | 25a7fd39ac993f3c04c5d8408beb628b3c9948ce /odoo/addons/base/models/res_users.py | |
| parent | 38d8b0526f0fccc32df5a11f5d086a3522ed5fcf (diff) | |
| parent | 9ed4872ea03f28012118ed48a43d0800617a84f3 (diff) | |
[MERGE] forward port branch saas-12.4 up to 9ed4872ea03
closes odoo/odoo#37372
Signed-off-by: Christophe Simonis <chs@odoo.com>
Diffstat (limited to 'odoo/addons/base/models/res_users.py')
| -rw-r--r-- | odoo/addons/base/models/res_users.py | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py index 66b0b2f3e49..dba2a76ffed 100644 --- a/odoo/addons/base/models/res_users.py +++ b/odoo/addons/base/models/res_users.py @@ -984,22 +984,19 @@ class UsersImplied(models.Model): # complete 'groups_id' with implied groups user = self.new(values) gs = user.groups_id._origin - group_public = self.env.ref('base.group_public', raise_if_not_found=False) - group_portal = self.env.ref('base.group_portal', raise_if_not_found=False) - if group_public and group_public in gs: - gs = group_public - elif group_portal and group_portal in gs: - gs = group_portal gs = gs | gs.trans_implied_ids values['groups_id'] = type(self).groups_id.convert_to_write(gs, user) return super(UsersImplied, self).create(vals_list) def write(self, values): + users_before = self.filtered(lambda u: u.has_group('base.group_user')) res = super(UsersImplied, self).write(values) if values.get('groups_id'): # add implied groups for all users for user in self: - if not user.has_group('base.group_user'): + if not user.has_group('base.group_user') and user in users_before: + # if we demoted a user, we strip him of all its previous privileges + # (but we should not do it if we are simply adding a technical group to a portal user) vals = {'groups_id': [(5, 0, 0)] + values['groups_id']} super(UsersImplied, user).write(vals) gs = set(concat(g.trans_implied_ids for g in user.groups_id)) |
