Files
odoo_source/addons/project/wizard/project_share_wizard.py
T
Prakash Prajapati cbc2bf6a3a [IMP] project: add invite collaborator button to collaborator list view
This commit includes the addition of an 'Invite Collaborator' button to the
project collaborator list view. When clicked, this button opens the same wizard
as the 'Share Editable' button found on the project.project form view. By using
this wizard, project collaborators can be added to the responsible project.

task-2947578

Part-of: odoo/odoo#119771
2023-06-19 23:16:45 +02:00

56 lines
2.2 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
class ProjectShareWizard(models.TransientModel):
_name = 'project.share.wizard'
_inherit = 'portal.share'
_description = 'Project Sharing'
@api.model
def default_get(self, fields):
# The project share action could be called in `project.collaborator`
# and so we have to check the active_model and active_id to use
# the right project.
active_model = self._context.get('active_model', '')
active_id = self._context.get('active_id', False)
if active_model == 'project.collaborator':
active_model = 'project.project'
active_id = self._context('default_project_id', False)
result = super(ProjectShareWizard, self.with_context(active_model=active_model, active_id=active_id)).default_get(fields)
if not result.get('access_mode'):
result.update(
access_mode='read',
display_access_mode=True,
)
return result
@api.model
def _selection_target_model(self):
project_model = self.env['ir.model']._get('project.project')
return [(project_model.model, project_model.name)]
access_mode = fields.Selection([('read', 'Readonly'), ('edit', 'Edit')])
display_access_mode = fields.Boolean()
@api.depends('res_model', 'res_id')
def _compute_resource_ref(self):
for wizard in self:
if wizard.res_model and wizard.res_model == 'project.project':
wizard.resource_ref = '%s,%s' % (wizard.res_model, wizard.res_id or 0)
else:
wizard.resource_ref = None
def action_send_mail(self):
self.ensure_one()
if self.access_mode == 'edit':
portal_partners = self.partner_ids.filtered('user_ids')
self.resource_ref._add_collaborators(self.partner_ids)
self._send_public_link(portal_partners)
self._send_signup_link(partners=self.partner_ids - portal_partners)
self.resource_ref.message_subscribe(partner_ids=self.partner_ids.ids)
return {'type': 'ir.actions.act_window_close'}
return super().action_send_mail()