From fbd99ca40b947a3ea04329b665b9ee89e9214eb0 Mon Sep 17 00:00:00 2001 From: ArnauCForgeFlow Date: Thu, 25 Jan 2024 11:00:21 +0100 Subject: [PATCH 1/6] [IMP] base_user_role: action to group groups into a role --- base_user_role/__init__.py | 1 + base_user_role/__manifest__.py | 1 + base_user_role/security/ir.model.access.csv | 1 + base_user_role/wizards/__init__.py | 1 + .../wizards/group_groups_into_role.py | 26 +++++++++++++ .../wizards/group_groups_into_role.xml | 39 +++++++++++++++++++ 6 files changed, 69 insertions(+) create mode 100644 base_user_role/wizards/__init__.py create mode 100644 base_user_role/wizards/group_groups_into_role.py create mode 100644 base_user_role/wizards/group_groups_into_role.xml diff --git a/base_user_role/__init__.py b/base_user_role/__init__.py index 0650744f..aee8895e 100644 --- a/base_user_role/__init__.py +++ b/base_user_role/__init__.py @@ -1 +1,2 @@ from . import models +from . import wizards diff --git a/base_user_role/__manifest__.py b/base_user_role/__manifest__.py index 70904c12..4fb6d231 100644 --- a/base_user_role/__manifest__.py +++ b/base_user_role/__manifest__.py @@ -19,6 +19,7 @@ "views/role.xml", "views/user.xml", "views/group.xml", + "wizards/group_groups_into_role.xml", ], "installable": True, } diff --git a/base_user_role/security/ir.model.access.csv b/base_user_role/security/ir.model.access.csv index 04790a3d..eb0ab401 100644 --- a/base_user_role/security/ir.model.access.csv +++ b/base_user_role/security/ir.model.access.csv @@ -1,3 +1,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_res_users_role,access_res_users_role,model_res_users_role,"base.group_erp_manager",1,1,1,1 access_res_users_role_line,access_res_users_role_line,model_res_users_role_line,"base.group_erp_manager",1,1,1,1 +access_group_groups_into_role,access_group_groups_into_role,model_group_groups_into_role,,1,1,1,1 diff --git a/base_user_role/wizards/__init__.py b/base_user_role/wizards/__init__.py new file mode 100644 index 00000000..62aa47d8 --- /dev/null +++ b/base_user_role/wizards/__init__.py @@ -0,0 +1 @@ +from . import group_groups_into_role diff --git a/base_user_role/wizards/group_groups_into_role.py b/base_user_role/wizards/group_groups_into_role.py new file mode 100644 index 00000000..8e68e8c3 --- /dev/null +++ b/base_user_role/wizards/group_groups_into_role.py @@ -0,0 +1,26 @@ +# Copyright 2021 Sodexis +# License OPL-1 (See LICENSE file for full copyright and licensing details). + + +from odoo import fields, models + + +class GroupGroupsIntoRole(models.TransientModel): + """ + This wizard is used to group different groups into a role. + """ + + _name = "group.groups.into.role" + _description = "Group groups into a role" + name = fields.Char( + required=True, + help="Group groups into a role and specify a name for this role", + ) + + def create_role(self): + selected_group_ids = self.env.context.get("selected_group_ids", []) + vals = { + "name": self.name, + "implied_ids": selected_group_ids, + } + self.env["res.users.role"].create(vals) diff --git a/base_user_role/wizards/group_groups_into_role.xml b/base_user_role/wizards/group_groups_into_role.xml new file mode 100644 index 00000000..211f3844 --- /dev/null +++ b/base_user_role/wizards/group_groups_into_role.xml @@ -0,0 +1,39 @@ + + + + group.groups.into.role.wiz.view + group.groups.into.role + +
+ + + +
+
+
+
+
+ + Create role + + + code + + action = { + 'name': 'Specify a name for your new role', + 'type': 'ir.actions.act_window', + 'res_model': 'group.groups.into.role', + 'target': 'new', + 'views':[(env.ref('base_user_role.group_groups_into_role_wiz_view').id, 'form')], + 'context': {'selected_group_ids': [group.id for group in records]}, + } + + +
From 168272bec7536051f6c922bf1deb622f16438649 Mon Sep 17 00:00:00 2001 From: ArnauCForgeFlow Date: Thu, 25 Jan 2024 11:53:48 +0100 Subject: [PATCH 2/6] [ADD] base_user_role: added tests for group groups into a role --- base_user_role/tests/test_user_role.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/base_user_role/tests/test_user_role.py b/base_user_role/tests/test_user_role.py index b39440ac..2eb50c9b 100644 --- a/base_user_role/tests/test_user_role.py +++ b/base_user_role/tests/test_user_role.py @@ -16,6 +16,7 @@ class TestUserRole(TransactionCase): ) cls.user_model = cls.env["res.users"] cls.role_model = cls.env["res.users.role"] + cls.wiz_model = cls.env["group.groups.into.role"] cls.company1 = cls.env.ref("base.main_company") cls.company2 = cls.env["res.company"].create({"name": "company2"}) @@ -229,3 +230,18 @@ class TestUserRole(TransactionCase): AccessError, "You are not allowed to access 'User role'" ): role.read() + + def test_group_groups_into_role(self): + user_group_ids = [group.id for group in self.user_id.groups_id] + # Check that there is not a role with name: Test Role + self.assertFalse(self.role_model.search([("name", "=", "Test Role")])) + # Call create_role function to group groups into a role + wizard = self.wiz_model.with_context(selected_group_ids=user_group_ids).create( + {"name": "Test Role"} + ) + wizard.create_role() + # Check that a role with name: Test Role has been created + new_role = self.role_model.search([("name", "=", "Test Role")]) + self.assertTrue(new_role) + # Check that the role has the correct groups + self.assertEqual(new_role.implied_ids.ids, user_group_ids) From c46475f056fb28670f4ff216daff6445ad4659ff Mon Sep 17 00:00:00 2001 From: ArnauCForgeFlow Date: Thu, 25 Jan 2024 15:40:25 +0100 Subject: [PATCH 3/6] [FIX] base_user_role: renamed wizard name and use active_ids --- base_user_role/security/ir.model.access.csv | 2 +- base_user_role/tests/test_user_role.py | 4 ++-- base_user_role/wizards/group_groups_into_role.py | 4 ++-- base_user_role/wizards/group_groups_into_role.xml | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/base_user_role/security/ir.model.access.csv b/base_user_role/security/ir.model.access.csv index eb0ab401..1691f70d 100644 --- a/base_user_role/security/ir.model.access.csv +++ b/base_user_role/security/ir.model.access.csv @@ -1,4 +1,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_res_users_role,access_res_users_role,model_res_users_role,"base.group_erp_manager",1,1,1,1 access_res_users_role_line,access_res_users_role_line,model_res_users_role_line,"base.group_erp_manager",1,1,1,1 -access_group_groups_into_role,access_group_groups_into_role,model_group_groups_into_role,,1,1,1,1 +access_wizard_groups_into_role,access_wizard_groups_into_role,model_wizard_groups_into_role,,1,1,1,1 diff --git a/base_user_role/tests/test_user_role.py b/base_user_role/tests/test_user_role.py index 2eb50c9b..f494fc52 100644 --- a/base_user_role/tests/test_user_role.py +++ b/base_user_role/tests/test_user_role.py @@ -16,7 +16,7 @@ class TestUserRole(TransactionCase): ) cls.user_model = cls.env["res.users"] cls.role_model = cls.env["res.users.role"] - cls.wiz_model = cls.env["group.groups.into.role"] + cls.wiz_model = cls.env["wizard.groups.into.role"] cls.company1 = cls.env.ref("base.main_company") cls.company2 = cls.env["res.company"].create({"name": "company2"}) @@ -236,7 +236,7 @@ class TestUserRole(TransactionCase): # Check that there is not a role with name: Test Role self.assertFalse(self.role_model.search([("name", "=", "Test Role")])) # Call create_role function to group groups into a role - wizard = self.wiz_model.with_context(selected_group_ids=user_group_ids).create( + wizard = self.wiz_model.with_context(active_ids=user_group_ids).create( {"name": "Test Role"} ) wizard.create_role() diff --git a/base_user_role/wizards/group_groups_into_role.py b/base_user_role/wizards/group_groups_into_role.py index 8e68e8c3..ea286c11 100644 --- a/base_user_role/wizards/group_groups_into_role.py +++ b/base_user_role/wizards/group_groups_into_role.py @@ -10,7 +10,7 @@ class GroupGroupsIntoRole(models.TransientModel): This wizard is used to group different groups into a role. """ - _name = "group.groups.into.role" + _name = "wizard.groups.into.role" _description = "Group groups into a role" name = fields.Char( required=True, @@ -18,7 +18,7 @@ class GroupGroupsIntoRole(models.TransientModel): ) def create_role(self): - selected_group_ids = self.env.context.get("selected_group_ids", []) + selected_group_ids = self._context.get("active_ids", []) vals = { "name": self.name, "implied_ids": selected_group_ids, diff --git a/base_user_role/wizards/group_groups_into_role.xml b/base_user_role/wizards/group_groups_into_role.xml index 211f3844..2202db55 100644 --- a/base_user_role/wizards/group_groups_into_role.xml +++ b/base_user_role/wizards/group_groups_into_role.xml @@ -1,8 +1,8 @@ - group.groups.into.role.wiz.view - group.groups.into.role + wizard.groups.into.role.wiz.view + wizard.groups.into.role
@@ -29,10 +29,10 @@ action = { 'name': 'Specify a name for your new role', 'type': 'ir.actions.act_window', - 'res_model': 'group.groups.into.role', + 'res_model': 'wizard.groups.into.role', 'target': 'new', 'views':[(env.ref('base_user_role.group_groups_into_role_wiz_view').id, 'form')], - 'context': {'selected_group_ids': [group.id for group in records]}, + 'context': env.context } From e6519e132738dcd4fef5117d4f0aa5c9d9319077 Mon Sep 17 00:00:00 2001 From: ArnauCForgeFlow Date: Fri, 26 Jan 2024 09:24:00 +0100 Subject: [PATCH 4/6] [FIX] base_user_role: renamed submit form button and redirect to record --- base_user_role/wizards/group_groups_into_role.py | 15 +++++++++++++-- base_user_role/wizards/group_groups_into_role.xml | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/base_user_role/wizards/group_groups_into_role.py b/base_user_role/wizards/group_groups_into_role.py index ea286c11..40e6f7e4 100644 --- a/base_user_role/wizards/group_groups_into_role.py +++ b/base_user_role/wizards/group_groups_into_role.py @@ -18,9 +18,20 @@ class GroupGroupsIntoRole(models.TransientModel): ) def create_role(self): - selected_group_ids = self._context.get("active_ids", []) + selected_group_ids = self.env.context.get("active_ids", []) vals = { "name": self.name, "implied_ids": selected_group_ids, } - self.env["res.users.role"].create(vals) + role = self.env["res.users.role"].create(vals) + + return { + "type": "ir.actions.act_window", + "res_model": "res.users.role", + "view_mode": "form", + "res_id": role.id, + "target": "current", + "context": { + "form_view_ref": "base_user_role.view_res_users_role_form", + }, + } diff --git a/base_user_role/wizards/group_groups_into_role.xml b/base_user_role/wizards/group_groups_into_role.xml index 2202db55..6a17dc75 100644 --- a/base_user_role/wizards/group_groups_into_role.xml +++ b/base_user_role/wizards/group_groups_into_role.xml @@ -10,7 +10,7 @@