[IMP] base: Erase user's groups if converted to public/portal

This commit is contained in:
Yannick Tivisse
2018-09-10 14:23:43 +02:00
parent bb3f20710a
commit c3717f3018
5 changed files with 19 additions and 9 deletions
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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',
+3 -2
View File
@@ -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()
+5 -2
View File
@@ -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)