We want to ease user experience regarding sub task creation and management. We thus enforce the values of subtask stage, project and parent task. we want to remove the ability of a user to choose a third-party subtask project different than the actual one. Also, we want to remove the ability to make one sub task recurrent. In general, We want to improve and strengthen the relation parent-childs for Tasks. A sub task is dependant of its parent all along the workflow. This commit address those needs and, especially, removes the subtask project configuration discussed in : - odoo/odoo@66a0e5a - odoo/odoo@b709e22 1) With this commit we want to change the way to link a subtask with its project for UI reasons, we want to be able to easily distinguish subtasks that are linked to the project of their parent from subtasks that are linked to another project. To do so, the idea is to create a field display_project_id not required. Only relevant tasks are linked to their project through this display_project_id, the other are linked to their project only via project_id. As a result, domains in the application are only based on the fact that tasks have display_project_id. The other are simply hidden. 2) The number of subtasks is shown on kanban and list views with a wigdet to easily render it and extend the UI. 3) The default sub-task assignee is the assignee of the parent task. 4) Task form is modified to integrate those changes. 5) Various searches on project task are restricted with a clause where display_project_id must be not null. Except in portal, in which context we always display all tasks and subtasks. PR community: #62577 PR enterprise: odoo/enterprise#15043 PR upgrade: odoo/upgrade#1984 task-2388034 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
31 lines
1.3 KiB
Python
31 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import fields, models, _
|
|
from odoo.exceptions import AccessError
|
|
|
|
|
|
class Digest(models.Model):
|
|
_inherit = 'digest.digest'
|
|
|
|
kpi_project_task_opened = fields.Boolean('Open Tasks')
|
|
kpi_project_task_opened_value = fields.Integer(compute='_compute_project_task_opened_value')
|
|
|
|
def _compute_project_task_opened_value(self):
|
|
if not self.env.user.has_group('project.group_project_user'):
|
|
raise AccessError(_("Do not have access, skip this data for user's digest email"))
|
|
for record in self:
|
|
start, end, company = record._get_kpi_compute_parameters()
|
|
record.kpi_project_task_opened_value = self.env['project.task'].search_count([
|
|
('stage_id.fold', '=', False),
|
|
('create_date', '>=', start),
|
|
('create_date', '<', end),
|
|
('company_id', '=', company.id),
|
|
('display_project_id', '!=', False),
|
|
])
|
|
|
|
def _compute_kpis_actions(self, company, user):
|
|
res = super(Digest, self)._compute_kpis_actions(company, user)
|
|
res['kpi_project_task_opened'] = 'project.open_view_project_all&menu_id=%s' % self.env.ref('project.menu_main_pm').id
|
|
return res
|