From caab8fa2faacfd958a7f6ca3041b0f6f4684da6c Mon Sep 17 00:00:00 2001 From: ArnauCForgeFlow Date: Fri, 26 Jan 2024 10:22:47 +0100 Subject: [PATCH] [15.0][IMP] base_user_role: action to group groups into a role --- base_user_role/__init__.py | 2 +- base_user_role/__manifest__.py | 3 +- base_user_role/security/ir.model.access.csv | 1 + base_user_role/tests/test_user_role.py | 16 ++++++++ base_user_role/wizard/__init__.py | 1 - base_user_role/wizards/__init__.py | 2 + .../{wizard => wizards}/create_from_user.py | 0 .../{wizard => wizards}/create_from_user.xml | 0 .../wizards/wizard_groups_into_role.py | 37 +++++++++++++++++++ .../wizards/wizard_groups_into_role.xml | 31 ++++++++++++++++ 10 files changed, 90 insertions(+), 3 deletions(-) delete mode 100644 base_user_role/wizard/__init__.py create mode 100644 base_user_role/wizards/__init__.py rename base_user_role/{wizard => wizards}/create_from_user.py (100%) rename base_user_role/{wizard => wizards}/create_from_user.xml (100%) create mode 100644 base_user_role/wizards/wizard_groups_into_role.py create mode 100644 base_user_role/wizards/wizard_groups_into_role.xml diff --git a/base_user_role/__init__.py b/base_user_role/__init__.py index 9b429614..aee8895e 100644 --- a/base_user_role/__init__.py +++ b/base_user_role/__init__.py @@ -1,2 +1,2 @@ from . import models -from . import wizard +from . import wizards diff --git a/base_user_role/__manifest__.py b/base_user_role/__manifest__.py index 6247e91e..3d261345 100644 --- a/base_user_role/__manifest__.py +++ b/base_user_role/__manifest__.py @@ -19,7 +19,8 @@ "views/role.xml", "views/user.xml", "views/group.xml", - "wizard/create_from_user.xml", + "wizards/create_from_user.xml", + "wizards/wizard_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 06ca0779..153439b7 100644 --- a/base_user_role/security/ir.model.access.csv +++ b/base_user_role/security/ir.model.access.csv @@ -2,3 +2,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_wizard_create_role_from_user,access_wizard_create_role_from_user,model_wizard_create_role_from_user,"base.group_erp_manager",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 c2107170..0669bcc8 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["wizard.groups.into.role"] cls.company1 = cls.env.ref("base.main_company") cls.company2 = cls.env["res.company"].create({"name": "company2"}) @@ -245,3 +246,18 @@ class TestUserRole(TransactionCase): user_group_ids = sorted(set(self.user_id.groups_id.ids)) role_group_ids = sorted(set(role.trans_implied_ids.ids)) self.assertEqual(user_group_ids, role_group_ids) + + 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(active_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) diff --git a/base_user_role/wizard/__init__.py b/base_user_role/wizard/__init__.py deleted file mode 100644 index 245cf1a9..00000000 --- a/base_user_role/wizard/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import create_from_user diff --git a/base_user_role/wizards/__init__.py b/base_user_role/wizards/__init__.py new file mode 100644 index 00000000..94c62e48 --- /dev/null +++ b/base_user_role/wizards/__init__.py @@ -0,0 +1,2 @@ +from . import create_from_user +from . import wizard_groups_into_role diff --git a/base_user_role/wizard/create_from_user.py b/base_user_role/wizards/create_from_user.py similarity index 100% rename from base_user_role/wizard/create_from_user.py rename to base_user_role/wizards/create_from_user.py diff --git a/base_user_role/wizard/create_from_user.xml b/base_user_role/wizards/create_from_user.xml similarity index 100% rename from base_user_role/wizard/create_from_user.xml rename to base_user_role/wizards/create_from_user.xml diff --git a/base_user_role/wizards/wizard_groups_into_role.py b/base_user_role/wizards/wizard_groups_into_role.py new file mode 100644 index 00000000..40e6f7e4 --- /dev/null +++ b/base_user_role/wizards/wizard_groups_into_role.py @@ -0,0 +1,37 @@ +# 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 = "wizard.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("active_ids", []) + vals = { + "name": self.name, + "implied_ids": selected_group_ids, + } + 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/wizard_groups_into_role.xml b/base_user_role/wizards/wizard_groups_into_role.xml new file mode 100644 index 00000000..271a055a --- /dev/null +++ b/base_user_role/wizards/wizard_groups_into_role.xml @@ -0,0 +1,31 @@ + + + + wizard.groups.into.role.wiz.view + wizard.groups.into.role + +
+ + + +
+
+
+
+
+ + Create Role + ir.actions.act_window + wizard.groups.into.role + form + new + + +