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)], }, }