Skip to content

Commit d3aef3d

Browse files
committed
[18.0][IMP] base_user_role: New wizard to add multiple users
This commit adds a new feature to the module: New button to open wizard so it's possible to select multiple users at once, keeping the ability to choose the dates.
1 parent 8767d1d commit d3aef3d

File tree

6 files changed

+84
-0
lines changed

6 files changed

+84
-0
lines changed

base_user_role/__manifest__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"views/user.xml",
2121
"views/group.xml",
2222
"wizards/create_from_user.xml",
23+
"wizards/role_add_users_wizard_views.xml",
2324
"wizards/wizard_groups_into_role.xml",
2425
],
2526
"installable": True,

base_user_role/security/ir.model.access.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ access_res_users_role,access_res_users_role,model_res_users_role,"base.group_erp
33
access_res_users_role_line,access_res_users_role_line,model_res_users_role_line,"base.group_erp_manager",1,1,1,1
44
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
55
access_wizard_groups_into_role,access_wizard_groups_into_role,model_wizard_groups_into_role,"base.group_erp_manager",1,1,1,1
6+
access_role_add_users_wizard,access_role_add_users_wizard,model_role_add_users_wizard,base.group_erp_manager,1,1,1,1

base_user_role/views/role.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@
33
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
44
-->
55
<odoo>
6+
<record id="action_add_multiple_users_wizard" model="ir.actions.act_window">
7+
<field name="name">Add Multiple Users</field>
8+
<field name="res_model">role.add.users.wizard</field>
9+
<field name="view_mode">form</field>
10+
<field name="target">new</field>
11+
<field name="context">{'default_role_id': active_id}</field>
12+
</record>
13+
614
<record id="view_res_users_role_form" model="ir.ui.view">
715
<field name="name">res.users.role.form</field>
816
<field name="model">res.users.role</field>
@@ -44,6 +52,13 @@
4452
<field name="implied_ids" nolabel="1" />
4553
</page>
4654
<page string="Users">
55+
<button
56+
name="%(action_add_multiple_users_wizard)d"
57+
type="action"
58+
string="Add Multiple Users"
59+
icon="fa-users"
60+
class="btn-primary mb-3"
61+
/>
4762
<field name="line_ids" nolabel="1">
4863
<list
4964
editable="bottom"

base_user_role/wizards/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
from . import create_from_user
2+
from . import role_add_users_wizard
23
from . import wizard_groups_into_role
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from odoo import fields, models
2+
3+
4+
class RoleAddUsersWizard(models.TransientModel):
5+
_name = "role.add.users.wizard"
6+
_description = "Wizard to add multiple users to a role"
7+
8+
role_id = fields.Many2one(
9+
comodel_name="res.users.role",
10+
required=True,
11+
ondelete="cascade",
12+
)
13+
user_ids = fields.Many2many(
14+
comodel_name="res.users",
15+
string="Users",
16+
required=True,
17+
)
18+
date_from = fields.Date("From")
19+
date_to = fields.Date("To")
20+
21+
def action_add_users(self):
22+
existing_users = self.role_id.line_ids.user_id
23+
new_users = self.user_ids - existing_users
24+
self.env["res.users.role.line"].create(
25+
[
26+
{
27+
"role_id": self.role_id.id,
28+
"user_id": user.id,
29+
"date_from": self.date_from,
30+
"date_to": self.date_to,
31+
}
32+
for user in new_users
33+
]
34+
)
35+
return {"type": "ir.actions.act_window_close"}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<odoo>
3+
<record id="view_res_users_role_add_users_wizard" model="ir.ui.view">
4+
<field name="name">role.add.users.wizard.form</field>
5+
<field name="model">role.add.users.wizard</field>
6+
<field name="arch" type="xml">
7+
<form>
8+
<group>
9+
<field name="role_id" readonly="1" />
10+
<field
11+
name="user_ids"
12+
widget="many2many_tags"
13+
options="{'no_create': True, 'no_create_edit': True}"
14+
domain="[('share','=',False), ('active','=',True)]"
15+
/>
16+
<field name="date_from" />
17+
<field name="date_to" />
18+
</group>
19+
<footer>
20+
<button
21+
name="action_add_users"
22+
string="Add Users"
23+
type="object"
24+
class="btn-primary"
25+
/>
26+
<button string="Cancel" special="cancel" />
27+
</footer>
28+
</form>
29+
</field>
30+
</record>
31+
</odoo>

0 commit comments

Comments
 (0)