From b5f8f2133bfa323cb914df792d1d9ec74ab6efb5 Mon Sep 17 00:00:00 2001 From: Barad Mahendra Date: Mon, 20 Jun 2022 06:57:08 +0000 Subject: [PATCH] [IMP] project: unarchive tasks when unarchiving stages Currently, all of the tasks contained in a stage are archived when the stage is archived. However, the tasks remained archived when the stage is unarchived. So in this commit, If the user unarchives a stage, ask the user to unarchive the tasks it contains in the process. task-2835624 closes odoo/odoo#94008 Related: odoo/enterprise#28301 Signed-off-by: Laurent Stukkens (ltu) --- addons/project/models/project.py | 21 +++++++++++++++++++ .../wizard/project_task_type_delete.py | 5 +++++ .../wizard/project_task_type_delete_views.xml | 17 +++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/addons/project/models/project.py b/addons/project/models/project.py index 592ad2ddec7..27ced983deb 100644 --- a/addons/project/models/project.py +++ b/addons/project/models/project.py @@ -138,6 +138,27 @@ class ProjectTaskType(models.Model): self.env['project.task'].search([('stage_id', 'in', self.ids)]).write({'active': False}) return super(ProjectTaskType, self).write(vals) + def toggle_active(self): + res = super().toggle_active() + stage_active = self.filtered('active') + inactive_tasks = self.env['project.task'].with_context(active_test=False).search( + [('active', '=', False), ('stage_id', 'in', stage_active.ids)], limit=1) + if stage_active and inactive_tasks: + wizard = self.env['project.task.type.delete.wizard'].create({ + 'stage_ids': stage_active.ids, + }) + + return { + 'name': _('Unarchive Tasks'), + 'view_mode': 'form', + 'res_model': 'project.task.type.delete.wizard', + 'views': [(self.env.ref('project.view_project_task_type_unarchive_wizard').id, 'form')], + 'type': 'ir.actions.act_window', + 'res_id': wizard.id, + 'target': 'new', + } + return res + @api.depends('project_ids', 'project_ids.rating_active') def _compute_disabled_rating_warning(self): for stage in self: diff --git a/addons/project/wizard/project_task_type_delete.py b/addons/project/wizard/project_task_type_delete.py index 573473464c9..8724133fc05 100644 --- a/addons/project/wizard/project_task_type_delete.py +++ b/addons/project/wizard/project_task_type_delete.py @@ -41,6 +41,11 @@ class ProjectTaskTypeDelete(models.TransientModel): 'context': self.env.context, } + def action_unarchive_task(self): + inactive_tasks = self.env['project.task'].with_context(active_test=False).search( + [('active', '=', False), ('stage_id', 'in', self.stage_ids.ids)]) + inactive_tasks.action_unarchive() + def action_confirm(self): tasks = self.with_context(active_test=False).env['project.task'].search([('stage_id', 'in', self.stage_ids.ids)]) tasks.write({'active': False}) diff --git a/addons/project/wizard/project_task_type_delete_views.xml b/addons/project/wizard/project_task_type_delete_views.xml index fa1addb41f7..abed0be584d 100644 --- a/addons/project/wizard/project_task_type_delete_views.xml +++ b/addons/project/wizard/project_task_type_delete_views.xml @@ -46,4 +46,21 @@ + + + project.task.type.delete.wizard.form + project.task.type.delete.wizard + +
+
+

Would you like to unarchive all of the tasks contained in these stages as well?

+
+ +
+
+
+