from odoo import models, fields, api class ProjectProject(models.Model): _inherit = 'project.project' # Employee selector selected_employee_id = fields.Many2one( 'hr.employee', string='Employee' ) # Related user (used for task lookup) selected_user_id = fields.Many2one( 'res.users', related='selected_employee_id.user_id', store=False ) employee_project_work_ids = fields.One2many( 'employee.project.work.line', 'project_parent_id', compute='_compute_employee_project_work', store=True ) @api.depends('selected_employee_id', 'selected_employee_id.user_id') @api.onchange('selected_employee_id') def _compute_employee_project_work(self): for project in self: project.employee_project_work_ids = [(5, 0, 0)] if not project.selected_employee_id or not project.selected_employee_id.user_id: continue user = project.selected_employee_id.user_id tasks = self.env['project.task'].search([ ('user_ids', 'in', user.id), ('project_id.active', '=', True), ]) projects = tasks.mapped('project_id') lines = [] for proj in projects: proj_tasks = tasks.filtered(lambda t: t.project_id == proj) lines.append((0, 0, { 'project_id': proj.id, 'task_ids': [(6, 0, proj_tasks.ids)], 'task_count': len(proj_tasks), })) project.employee_project_work_ids = lines