feature/share_module #24
|
|
@ -1,4 +1,5 @@
|
||||||
from odoo import fields, models
|
from odoo import _, fields, models
|
||||||
|
from odoo.exceptions import UserError
|
||||||
|
|
||||||
|
|
||||||
class ProjectRole(models.Model):
|
class ProjectRole(models.Model):
|
||||||
|
|
@ -29,6 +30,14 @@ class ProjectRole(models.Model):
|
||||||
string='Assigned Users',
|
string='Assigned Users',
|
||||||
help="Users assigned to this role"
|
help="Users assigned to this role"
|
||||||
)
|
)
|
||||||
|
required_groups = fields.Many2many(
|
||||||
|
'res.groups',
|
||||||
|
'project_role_required_group_rel',
|
||||||
|
'role_id',
|
||||||
|
'group_id',
|
||||||
|
string='Required Groups',
|
||||||
|
help="Groups that should be granted to the assigned users for this role"
|
||||||
|
)
|
||||||
active = fields.Boolean(
|
active = fields.Boolean(
|
||||||
string='Active',
|
string='Active',
|
||||||
default=True,
|
default=True,
|
||||||
|
|
@ -58,6 +67,32 @@ class ProjectRole(models.Model):
|
||||||
'context': {'default_members_ids': [(6, 0, self.user_ids.ids)],
|
'context': {'default_members_ids': [(6, 0, self.user_ids.ids)],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def action_grant_access(self):
|
||||||
|
"""Grant the selected required groups to all assigned users."""
|
||||||
|
for role in self:
|
||||||
|
role.check_access('write')
|
||||||
|
if not role.user_ids:
|
||||||
|
raise UserError(_("Please assign at least one user before granting access."))
|
||||||
|
if not role.required_groups:
|
||||||
|
raise UserError(_("Please select at least one required group before granting access."))
|
||||||
|
|
||||||
|
users = role.user_ids.sudo()
|
||||||
|
groups = role.required_groups.sudo()
|
||||||
|
for user in users:
|
||||||
|
user.write({'groups_id': [(4, group.id) for group in groups]})
|
||||||
|
|
||||||
|
return {
|
||||||
|
'type': 'ir.actions.client',
|
||||||
|
'tag': 'display_notification',
|
||||||
|
'params': {
|
||||||
|
'title': _('Access Granted'),
|
||||||
|
'message': _('Required groups were added to the assigned users.'),
|
||||||
|
'type': 'success',
|
||||||
|
'sticky': False,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
def action_view_users(self):
|
def action_view_users(self):
|
||||||
"""Open users assigned to this role"""
|
"""Open users assigned to this role"""
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@
|
||||||
<sheet>
|
<sheet>
|
||||||
<div class="oe_button_box" name="button_box">
|
<div class="oe_button_box" name="button_box">
|
||||||
<button name="action_update_users" type="object" string="Modify Users" class="btn-primary"/>
|
<button name="action_update_users" type="object" string="Modify Users" class="btn-primary"/>
|
||||||
|
<button name="action_grant_access" type="object" string="Grant Access" class="btn-secondary"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_title">
|
<div class="oe_title">
|
||||||
<h1>
|
<h1>
|
||||||
|
|
@ -50,6 +51,9 @@
|
||||||
<field name="description" placeholder="Enter role description..."/>
|
<field name="description" placeholder="Enter role description..."/>
|
||||||
</page>
|
</page>
|
||||||
<page string="Assigned Users">
|
<page string="Assigned Users">
|
||||||
|
<!-- <group>-->
|
||||||
|
<!-- <field name="required_groups" widget="many2many_tags" options="{'no_create': True, 'no_quick_create': True}"/>-->
|
||||||
|
<!-- </group>-->
|
||||||
<field name="user_ids" can_create="False" can_write="False">
|
<field name="user_ids" can_create="False" can_write="False">
|
||||||
<list create="0" edit="0" delete="0">
|
<list create="0" edit="0" delete="0">
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
|
|
@ -58,6 +62,11 @@
|
||||||
</list>
|
</list>
|
||||||
</field>
|
</field>
|
||||||
</page>
|
</page>
|
||||||
|
<page string="Required Groups">
|
||||||
|
<group>
|
||||||
|
<field name="required_groups" widget="many2many_tags" options="{'no_create': True, 'no_quick_create': True}"/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
</sheet>
|
</sheet>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue