enhancements of Reuqesttimelines

This commit is contained in:
karuna 2026-07-13 16:56:07 +05:30
parent f529865975
commit 9d6234cc8e
4 changed files with 32 additions and 14 deletions

View File

@ -1067,13 +1067,15 @@ class projectTask(models.Model):
}
def _get_stage_responsible_user(self, stage):
self.ensure_one()
if stage.approval_by == 'assigned_team_lead' and stage.team_id.team_lead:
if stage.team_id and stage.team_id.team_lead:
return stage.team_id.team_lead
if stage.approval_by == 'project_manager' and self.project_id.user_id:
return self.project_id.user_id
if stage.approval_by == 'project_lead' and self.project_id.project_lead:
return self.project_id.project_lead
return self.project_id.project_lead or self.project_id.user_id
return self.env['res.users']
def _get_stage_assignee_user(self, stage):
self.ensure_one()
if stage.involved_user_ids:
return stage.involved_user_ids[:1]
return self.env['res.users']
def _ensure_task_timeline_rows(self):
Timeline = self.env['project.task.time.lines'].sudo()
@ -1081,14 +1083,21 @@ class projectTask(models.Model):
stages = task.project_id.type_ids.filtered(lambda s: not s.fold)
for stage in stages:
line = task.assignees_timelines.filtered(lambda t: t.stage_id == stage)[:1]
if line:
continue
responsible_user = task._get_stage_responsible_user(stage)
assignee_user = task._get_stage_assignee_user(stage)
if line:
if not task.timelines_requested:
line.sudo().write({
'team_id': stage.team_id.id if stage.team_id else False,
'responsible_lead': responsible_user.id if responsible_user else False,
'assigned_to': assignee_user.id if assignee_user else False,
})
continue
Timeline.create({
'stage_id': stage.id,
'team_id': stage.team_id.id if stage.team_id else False,
'responsible_lead': responsible_user.id if responsible_user else False,
'assigned_to': responsible_user.id if responsible_user else False,
'assigned_to': assignee_user.id if assignee_user else False,
'estimated_time': 0.0,
'task_id': task.id,
})

View File

@ -10,6 +10,12 @@ class TaskStages(models.Model):
string='Approval Owner',
)
involved_user_ids = fields.Many2many('res.users', string='Related Users')
responsible_user_id = fields.Many2one(
'res.users',
string='Responsible User',
related='team_id.team_lead',
readonly=True,
)
team_related_user_ids = fields.Many2many(related='team_id.all_members_ids', string='Team Users')
is_workflow_template = fields.Boolean(
string='Workflow Template Stage',

View File

@ -117,11 +117,12 @@
<page name="task_stages" string="Task Stages" invisible="not is_project_editor">
<field name="type_ids" context="{'default_project_id': id, 'project_stage_project_id': id}">
<list editable="bottom" open_form_view="True" delete="0">
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="team_id" string="Assigned Team"/>
<field name="approval_by" string="Approval Owner"/>
<field name="fold"/>
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="team_id" string="Assigned Team"/>
<field name="responsible_user_id" string="Responsible User" readonly="1"/>
<field name="approval_by" string="Approval Owner"/>
<field name="fold"/>
<field name="team_related_user_ids" invisible="1" column_invisible="1"/>
<field name="involved_user_ids" widget="many2many_tags" domain="[('id', 'in', team_related_user_ids)]"/>
<field name="is_workflow_template" invisible="1" column_invisible="1"/>

View File

@ -7,6 +7,7 @@
<field name="arch" type="xml">
<xpath expr="//field[@name='fold']" position="after">
<field name="team_id"/>
<field name="responsible_user_id"/>
<field name="approval_by"/>
<field name="team_related_user_ids" invisible="1"/>
<field name="involved_user_ids" widget="many2many_tags" domain="[('id', 'in', team_related_user_ids)]"/>
@ -22,6 +23,7 @@
<field name="arch" type="xml">
<xpath expr="//field[@name='name']" position="after">
<field name="team_id" optional="show"/>
<field name="responsible_user_id" optional="show"/>
<field name="approval_by" optional="show"/>
<field name="team_related_user_ids" invisible="1"/>
<field name="involved_user_ids" optional="show" domain="[('id', 'in', team_related_user_ids)]"/>