odoo18/addons_extensions/project_task_timesheet_exte.../models/project.py

62 lines
2.5 KiB
Python

from odoo import api, fields, models, _
class ProjectProject(models.Model):
_inherit = 'project.project'
sequence_name = fields.Char("Project Number", copy=False, readonly=True)
task_sequence_id = fields.Many2one(
'ir.sequence',
string="Task Sequence",
readonly=True,
copy=False,
help="Sequence for tasks of this project"
)
@api.model
def _get_shared_project_sequence(self):
"""Get or create a shared sequence for all projects"""
sequence = self.env['ir.sequence'].sudo().search([('code', '=', 'project.project.sequence')], limit=1)
if not sequence:
sequence = self.env['ir.sequence'].sudo().create({
'name': _("Project Sequence"),
'implementation': 'no_gap',
'padding': 3,
'use_date_range': False,
'prefix': 'PROJ-',
'code': 'project.project.sequence',
})
return sequence
@api.model_create_multi
def create(self, vals_list):
projects = super().create(vals_list)
sequence = self._get_shared_project_sequence()
for project in projects:
if not project.sequence_name:
project.sequence_name = sequence.next_by_id()
return projects
project_lead = fields.Many2one("res.users", string="Project Lead")
members_ids = fields.Many2many('res.users', 'project_user_rel', 'project_id',
'user_id', 'Project Members', help="""Project's
members are users who can have an access to
the tasks related to this project."""
)
user_id = fields.Many2one('res.users', string='Project Manager', default=lambda self: self.env.user, tracking=True,
domain=lambda self: [('groups_id', 'in', [self.env.ref('project.group_project_manager').id,self.env.ref('project_task_timesheet_extended.group_project_supervisor').id]),('share','=',False)],)
def add_users(self):
return {
'type': 'ir.actions.act_window',
'name': 'Add Users',
'res_model': 'project.user.assign.wizard',
'view_mode': 'form',
'view_id': self.env.ref('project_task_timesheet_extended.project_user_assignment_form_view').id,
'target': 'new',
'context': {'default_members_ids':[(6, 0, self.members_ids.ids)],
},
}