Browse Source

Merge pull request #1066 from osiell/8.0-base_user_role_backport_features_fix

[FIX] 8.0 - base_user_role (regression)
pull/1075/head
Stefan Rijnhart (Opener) 7 years ago
committed by GitHub
parent
commit
bcfd364943
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      base_user_role/models/role.py
  2. 7
      base_user_role/models/user.py
  3. 50
      base_user_role/tests/test_user_role.py

6
base_user_role/models/role.py

@ -50,9 +50,9 @@ class ResUsersRole(models.Model):
@api.multi @api.multi
def unlink(self): def unlink(self):
users = self.mapped('user_id')
users = self.mapped('user_ids')
res = super(ResUsersRole, self).unlink() res = super(ResUsersRole, self).unlink()
users.set_groups_from_roles()
users.set_groups_from_roles(force=True)
return res return res
@api.multi @api.multi
@ -99,5 +99,5 @@ class ResUsersRoleLine(models.Model):
def unlink(self): def unlink(self):
users = self.mapped('user_id') users = self.mapped('user_id')
res = super(ResUsersRoleLine, self).unlink() res = super(ResUsersRoleLine, self).unlink()
users.set_groups_from_roles()
users.set_groups_from_roles(force=True)
return res return res

7
base_user_role/models/user.py

@ -32,12 +32,13 @@ class ResUsers(models.Model):
return res return res
@api.multi @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. """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: for user in self:
if not user.role_line_ids:
if not user.role_line_ids and not force:
continue continue
group_ids = [] group_ids = []
role_lines = user.role_line_ids.filtered( role_lines = user.role_line_ids.filtered(

50
base_user_role/tests/test_user_role.py

@ -105,3 +105,53 @@ class TestUserRole(TransactionCase):
role1_group_ids.append(role1.group_id.id) role1_group_ids.append(role1.group_id.id)
role_group_ids = sorted(set(role1_group_ids)) role_group_ids = sorted(set(role1_group_ids))
self.assertEqual(user_group_ids, role_group_ids) self.assertEqual(user_group_ids, role_group_ids)
def test_role_unlink(self):
# Get role1 groups
role1 = self.role_model.browse(self.cr, self.uid, self.role1_id)
role1_group_ids = role1.implied_ids.ids
role1_group_ids.append(role1.group_id.id)
role1_group_ids = sorted(set(role1_group_ids))
# Get role2
role2 = self.role_model.browse(self.cr, self.uid, self.role2_id)
# Configure the user with role1 and role2
self.user_model.write(
self.cr, self.uid, [self.user_id],
{'role_line_ids': [
(0, 0, {'role_id': self.role1_id}),
(0, 0, {'role_id': self.role2_id}),
]})
user = self.user_model.browse(self.cr, self.uid, self.user_id)
# Remove role2
role2.unlink()
user_group_ids = sorted(set([group.id for group in user.groups_id]))
self.assertEqual(user_group_ids, role1_group_ids)
# Remove role1
role1.unlink()
user_group_ids = sorted(set([group.id for group in user.groups_id]))
self.assertEqual(user_group_ids, [])
def test_role_line_unlink(self):
# Get role1 groups
role1 = self.role_model.browse(self.cr, self.uid, self.role1_id)
role1_group_ids = role1.implied_ids.ids
role1_group_ids.append(role1.group_id.id)
role1_group_ids = sorted(set(role1_group_ids))
# Configure the user with role1 and role2
self.user_model.write(
self.cr, self.uid, [self.user_id],
{'role_line_ids': [
(0, 0, {'role_id': self.role1_id}),
(0, 0, {'role_id': self.role2_id}),
]})
user = self.user_model.browse(self.cr, self.uid, self.user_id)
# Remove role2 from the user
user.role_line_ids.filtered(
lambda l: l.role_id.id == self.role2_id).unlink()
user_group_ids = sorted(set([group.id for group in user.groups_id]))
self.assertEqual(user_group_ids, role1_group_ids)
# Remove role1 from the user
user.role_line_ids.filtered(
lambda l: l.role_id.id == self.role1_id).unlink()
user_group_ids = sorted(set([group.id for group in user.groups_id]))
self.assertEqual(user_group_ids, [])
Loading…
Cancel
Save