[IMP] base: Erase user's groups if converted to public/portal
This commit is contained in:
@@ -15,7 +15,7 @@ class TestExpenseCommon(TestAccountNoChartCommon):
|
||||
# The user manager is only expense manager
|
||||
user_group_manager = cls.env.ref('hr_expense.group_hr_expense_manager')
|
||||
cls.user_manager.write({
|
||||
'groups_id': [(6, 0, [user_group_manager.id])],
|
||||
'groups_id': [(6, 0, [user_group_manager.id, cls.env.ref('base.group_user').id])],
|
||||
})
|
||||
|
||||
# create employee
|
||||
|
||||
@@ -17,7 +17,7 @@ class TestSale(AccountingTestCase):
|
||||
'email': 'a.m@example.com',
|
||||
'signature': '--\nAndreww',
|
||||
'notification_type': 'email',
|
||||
'groups_id': [(6, 0, [group_manager.id])]
|
||||
'groups_id': [(6, 0, [group_manager.id, self.env.ref('base.group_user').id])]
|
||||
})
|
||||
self.user = self.env['res.users'].create({
|
||||
'name': 'Mark User',
|
||||
|
||||
@@ -21,8 +21,9 @@ class TestSaleOrder(TestCommonSaleNoChart):
|
||||
cls.setUpUsers()
|
||||
group_salemanager = cls.env.ref('sales_team.group_sale_manager')
|
||||
group_salesman = cls.env.ref('sales_team.group_sale_salesman')
|
||||
cls.user_manager.write({'groups_id': [(6, 0, [group_salemanager.id])]})
|
||||
cls.user_employee.write({'groups_id': [(6, 0, [group_salesman.id])]})
|
||||
group_employee = cls.env.ref('base.group_user')
|
||||
cls.user_manager.write({'groups_id': [(6, 0, [group_salemanager.id, group_employee.id])]})
|
||||
cls.user_employee.write({'groups_id': [(6, 0, [group_salesman.id, group_employee.id])]})
|
||||
|
||||
# set up accounts and products and journals
|
||||
cls.setUpAdditionalAccounts()
|
||||
|
||||
@@ -772,8 +772,11 @@ class UsersImplied(models.Model):
|
||||
if values.get('groups_id'):
|
||||
# add implied groups for all users
|
||||
for user in self.with_context({}):
|
||||
gs = set(concat(g.trans_implied_ids for g in user.groups_id))
|
||||
vals = {'groups_id': [(4, g.id) for g in gs]}
|
||||
if not user.has_group('base.group_user'):
|
||||
vals = {'groups_id': [(5, 0, 0)] + values['groups_id']}
|
||||
else:
|
||||
gs = set(concat(g.trans_implied_ids for g in user.groups_id))
|
||||
vals = {'groups_id': [(4, g.id) for g in gs]}
|
||||
super(UsersImplied, user).write(vals)
|
||||
return res
|
||||
|
||||
|
||||
@@ -8,8 +8,11 @@ from openerp.tests.common import TransactionCase
|
||||
|
||||
class TestNR(TransactionCase):
|
||||
def test_issue26036(self):
|
||||
# Coming from https://github.com/odoo/odoo/pull/26036
|
||||
U = self.env["res.users"]
|
||||
G = self.env["res.groups"]
|
||||
group_user = self.env.ref('base.group_user')
|
||||
group_no_one = self.env.ref('base.group_no_one')
|
||||
|
||||
group_A = G.create({"name": "A"})
|
||||
group_AA = G.create({"name": "AA", "implied_ids": [(6, 0, [group_A.id])]})
|
||||
@@ -17,10 +20,13 @@ class TestNR(TransactionCase):
|
||||
group_BB = G.create({"name": "BB", "implied_ids": [(6, 0, [group_B.id])]})
|
||||
group_C = G.create({"name": "C"})
|
||||
|
||||
user_a = U.create({"name": "a", "login": "a", "groups_id": [(6, 0, [group_AA.id])]})
|
||||
user_a = U.create({"name": "a", "login": "a", "groups_id": [(6, 0, [group_AA.id, group_user.id])]})
|
||||
user_b = U.create({"name": "b", "login": "b", "groups_id": [(6, 0, [group_BB.id])]})
|
||||
|
||||
self.assertEqual(user_a.groups_id, (group_AA + group_A + group_user + group_no_one))
|
||||
|
||||
(user_a + user_b).write({"groups_id": [(4, group_C.id)]})
|
||||
|
||||
self.assertEqual(user_a.groups_id, (group_AA + group_A + group_C))
|
||||
self.assertEqual(user_b.groups_id, (group_BB + group_B + group_C))
|
||||
self.assertEqual(user_a.groups_id, (group_AA + group_A + group_C + group_user + group_no_one))
|
||||
# As user_b is not an internal user, all its groups are removed
|
||||
self.assertEqual(user_b.groups_id, group_C)
|
||||
|
||||
Reference in New Issue
Block a user