44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class ProjectSharingCollaboratorWizard(models.TransientModel):
|
|
_name = 'project.share.collaborator.wizard'
|
|
_description = 'Project Sharing Collaborator Wizard'
|
|
|
|
parent_wizard_id = fields.Many2one(
|
|
'project.share.wizard',
|
|
export_string_translation=False,
|
|
)
|
|
partner_id = fields.Many2one(
|
|
'res.partner',
|
|
string='Collaborator',
|
|
required=True,
|
|
)
|
|
access_mode = fields.Selection(
|
|
[('read', 'Read'), ('edit_limited', 'Edit with limited access'), ('edit', 'Edit')],
|
|
default='read',
|
|
required=True,
|
|
help="Read: collaborators can view tasks but cannot edit them.\n"
|
|
"Edit with limited access: collaborators can view and edit tasks they follow in the Kanban view.\n"
|
|
"Edit: collaborators can view and edit all tasks in the Kanban view. Additionally, they can choose which tasks they want to follow."
|
|
)
|
|
send_invitation = fields.Boolean(
|
|
string='Send Invitation',
|
|
compute='_compute_send_invitation',
|
|
store=True,
|
|
readonly=False,
|
|
default=True,
|
|
)
|
|
|
|
@api.depends('partner_id', 'access_mode')
|
|
def _compute_send_invitation(self):
|
|
project = self.parent_wizard_id.resource_ref
|
|
for collaborator in self:
|
|
if (
|
|
collaborator.partner_id not in project.message_partner_ids
|
|
or (collaborator.access_mode != 'read' and collaborator.partner_id not in project.collaborator_ids.partner_id)
|
|
):
|
|
collaborator.send_invitation = True
|