summaryrefslogtreecommitdiff
path: root/addons/base_setup
diff options
context:
space:
mode:
authorYannick Tivisse <yti@odoo.com>2019-09-12 08:20:35 +0000
committerYannick Tivisse <yti@odoo.com>2019-09-13 11:34:50 +0000
commit3eb06a27dae31ddc4112445801ee4c1c601fe669 (patch)
tree706d3f6570752e748d2cd7ad3ad4975930b52a41 /addons/base_setup
parent7d623a75a2caf3d767fe0844cbf457cd8d2a2d24 (diff)
[IMP] res_config: Apply groups to users accross companies
Purpose ======= When enabling/disabling a group, the modification is only applied to the users from the enabled companies. It should be applied to all the users. closes odoo/odoo#36744 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Diffstat (limited to 'addons/base_setup')
-rw-r--r--addons/base_setup/tests/__init__.py4
-rw-r--r--addons/base_setup/tests/test_res_config.py55
2 files changed, 59 insertions, 0 deletions
diff --git a/addons/base_setup/tests/__init__.py b/addons/base_setup/tests/__init__.py
new file mode 100644
index 00000000000..3916e5abd47
--- /dev/null
+++ b/addons/base_setup/tests/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import test_res_config
diff --git a/addons/base_setup/tests/test_res_config.py b/addons/base_setup/tests/test_res_config.py
new file mode 100644
index 00000000000..a8352093468
--- /dev/null
+++ b/addons/base_setup/tests/test_res_config.py
@@ -0,0 +1,55 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.tests.common import TransactionCase
+
+
+class TestResConfig(TransactionCase):
+
+ def test_multi_company_res_config_group(self):
+ # Enable/Disable a group in a multi-company environment
+ # 1/ All the users should be added/removed from the group
+ # and not only the users of the allowed companies
+ # 2/ The changes should be reflected for new users (Default User Template)
+
+ company = self.env['res.company'].create({'name': 'My Last Company'})
+ partner = self.env['res.partner'].create({
+ 'name': 'My User'
+ })
+ user = self.env['res.users'].create({
+ 'login': 'My User',
+ 'company_id': company.id,
+ 'company_ids': [(4, company.id)],
+ 'partner_id': partner.id,
+ })
+
+ ResConfig = self.env['res.config.settings']
+ default_values = ResConfig.default_get(list(ResConfig.fields_get()))
+
+ # Case 1: Enable a group
+ default_values.update({'group_multi_currency': True})
+ ResConfig.create(default_values).execute()
+ self.assertTrue(user in self.env.ref('base.group_multi_currency').sudo().users)
+
+ new_partner = self.env['res.partner'].create({'name': 'New User'})
+ new_user = self.env['res.users'].create({
+ 'login': 'My First New User',
+ 'company_id': company.id,
+ 'company_ids': [(4, company.id)],
+ 'partner_id': new_partner.id,
+ })
+ self.assertTrue(new_user in self.env.ref('base.group_multi_currency').sudo().users)
+
+ # Case 2: Disable a group
+ default_values.update({'group_multi_currency': False})
+ ResConfig.create(default_values).execute()
+ self.assertTrue(user not in self.env.ref('base.group_multi_currency').sudo().users)
+
+ new_partner = self.env['res.partner'].create({'name': 'New User'})
+ new_user = self.env['res.users'].create({
+ 'login': 'My Second New User',
+ 'company_id': company.id,
+ 'company_ids': [(4, company.id)],
+ 'partner_id': new_partner.id,
+ })
+ self.assertTrue(new_user not in self.env.ref('base.group_multi_currency').sudo().users)