[IMP] Use default user to define default roles to create for a new user

This commit is contained in:
Benjamin Willig
2017-10-12 15:45:50 +02:00
committed by Tatiana Deribina
parent b2998937a0
commit 338f70b6e4
6 changed files with 46 additions and 6 deletions

View File

@@ -33,6 +33,9 @@ To configure this module, you need to go to *Configuration / Users / Roles*,
and create a new role. From there, you can add groups to compose your role, and create a new role. From there, you can add groups to compose your role,
and then associate users to it. and then associate users to it.
You can also define default roles for a new user by editing the user called
"Default User".
Roles: Roles:
.. image:: /base_user_role/static/description/roles.png .. image:: /base_user_role/static/description/roles.png

View File

@@ -3,7 +3,7 @@
{ {
'name': 'User roles', 'name': 'User roles',
'version': '11.0.1.0.0', 'version': '11.0.1.0.1',
'category': 'Tools', 'category': 'Tools',
'author': 'ABF OSIELL, Odoo Community Association (OCA)', 'author': 'ABF OSIELL, Odoo Community Association (OCA)',
'license': 'AGPL-3', 'license': 'AGPL-3',

View File

@@ -8,11 +8,29 @@ class ResUsers(models.Model):
role_line_ids = fields.One2many( role_line_ids = fields.One2many(
comodel_name='res.users.role.line', comodel_name='res.users.role.line',
inverse_name='user_id', string="Role lines") inverse_name='user_id',
string="Role lines",
default=lambda self: self._default_role_lines()
)
role_ids = fields.One2many( role_ids = fields.One2many(
comodel_name='res.users.role', string="Roles", comodel_name='res.users.role', string="Roles",
compute='_compute_role_ids') compute='_compute_role_ids')
@api.model
def _default_role_lines(self):
default_user = self.env.ref(
'base.default_user', raise_if_not_found=False)
default_values = []
if default_user:
for role_line in default_user.role_line_ids:
default_values.append({
'role_id': role_line.role_id.id,
'date_from': role_line.date_from,
'date_to': role_line.date_to,
'is_enabled': role_line.is_enabled,
})
return default_values
@api.multi @api.multi
@api.depends('role_line_ids.role_id') @api.depends('role_line_ids.role_id')
def _compute_role_ids(self): def _compute_role_ids(self):

View File

@@ -13,6 +13,7 @@ class TestUserRole(TransactionCase):
self.user_model = self.env['res.users'] self.user_model = self.env['res.users']
self.role_model = self.env['res.users.role'] self.role_model = self.env['res.users.role']
self.default_user = self.env.ref('base.default_user')
self.user_id = self.user_model.create( self.user_id = self.user_model.create(
{'name': "USER TEST (ROLES)", 'login': 'user_test_roles'}) {'name': "USER TEST (ROLES)", 'login': 'user_test_roles'})
@@ -140,3 +141,21 @@ class TestUserRole(TransactionCase):
user_group_ids = sorted(set([ user_group_ids = sorted(set([
group.id for group in self.user_id.groups_id])) group.id for group in self.user_id.groups_id]))
self.assertEqual(user_group_ids, []) self.assertEqual(user_group_ids, [])
def test_default_user_roles(self):
self.default_user.write({
'role_line_ids': [
(0, 0, {
'role_id': self.role1_id.id,
}),
(0, 0, {
'role_id': self.role2_id.id,
})
]
})
user = self.user_model.create({
'name': "USER TEST (DEFAULT ROLES)",
'login': 'user_test_default_roles'
})
roles = self.role_model.browse([self.role1_id.id, self.role2_id.id])
self.assertEqual(user.role_ids, roles)

View File

@@ -7,7 +7,7 @@
<field name="name">res.users.role.form</field> <field name="name">res.users.role.form</field>
<field name="model">res.users.role</field> <field name="model">res.users.role</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Role"> <form>
<sheet> <sheet>
<group> <group>
<field name="name"/> <field name="name"/>
@@ -19,7 +19,7 @@
</page> </page>
<page string="Users"> <page string="Users">
<field name="line_ids" nolabel="1"> <field name="line_ids" nolabel="1">
<tree editable="bottom" colors="grey: not is_enabled;"> <tree editable="bottom" decoration-muted="not is_enabled">
<field name="user_id"/> <field name="user_id"/>
<field name="date_from"/> <field name="date_from"/>
<field name="date_to"/> <field name="date_to"/>
@@ -37,7 +37,7 @@
<field name="name">res.users.role.tree</field> <field name="name">res.users.role.tree</field>
<field name="model">res.users.role</field> <field name="model">res.users.role</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Role"> <tree>
<field name="name"/> <field name="name"/>
<field name="user_ids"/> <field name="user_ids"/>
</tree> </tree>

View File

@@ -11,7 +11,7 @@
<xpath expr="//notebook/page[1]" position="before"> <xpath expr="//notebook/page[1]" position="before">
<page string="Roles"> <page string="Roles">
<field name="role_line_ids" nolabel="1"> <field name="role_line_ids" nolabel="1">
<tree editable="bottom" colors="grey: not is_enabled;"> <tree editable="bottom" decoration-muted="not is_enabled">
<field name="role_id" required="1"/> <field name="role_id" required="1"/>
<field name="date_from"/> <field name="date_from"/>
<field name="date_to"/> <field name="date_to"/>