diff --git a/base_user_role/models/role.py b/base_user_role/models/role.py index 3e0a2cd4..500863ee 100644 --- a/base_user_role/models/role.py +++ b/base_user_role/models/role.py @@ -50,7 +50,7 @@ class ResUsersRole(models.Model): def unlink(self): users = self.mapped('user_ids') res = super(ResUsersRole, self).unlink() - users.set_groups_from_roles() + users.set_groups_from_roles(force=True) return res @api.multi @@ -98,5 +98,5 @@ class ResUsersRoleLine(models.Model): def unlink(self): users = self.mapped('user_id') res = super(ResUsersRoleLine, self).unlink() - users.set_groups_from_roles() + users.set_groups_from_roles(force=True) return res diff --git a/base_user_role/models/user.py b/base_user_role/models/user.py index 22a17a8e..f1c406ef 100644 --- a/base_user_role/models/user.py +++ b/base_user_role/models/user.py @@ -32,12 +32,13 @@ class ResUsers(models.Model): return res @api.multi - def set_groups_from_roles(self): + def set_groups_from_roles(self, force=False): """Set (replace) the groups following the roles defined on users. - If no role is defined on the user, its groups are let untouched. + If no role is defined on the user, its groups are let untouched unless + the `force` parameter is `True`. """ for user in self: - if not user.role_line_ids: + if not user.role_line_ids and not force: continue group_ids = [] role_lines = user.role_line_ids.filtered(