Adds a button to create a task from a task template to the list view and kanban view for the project.task when viewed from the FSM application.
52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
from odoo import models, fields, api, _
|
|
from odoo.exceptions import UserError
|
|
|
|
|
|
class NewTaskFromTemplateWizard(models.TransientModel):
|
|
_name = "project.task.from.template.wizard"
|
|
_description = "Create Task from Template Wizard"
|
|
|
|
project_id = fields.Many2one(
|
|
comodel_name='project.project',
|
|
string='Project',
|
|
help='The project the new task should be created in.',
|
|
required=True,
|
|
)
|
|
|
|
task_template_id = fields.Many2one(
|
|
comodel_name='project.task.template',
|
|
string='Task Template',
|
|
help='The template to use when creating the new task.',
|
|
required=True,
|
|
)
|
|
|
|
new_task_title = fields.Char(
|
|
help='The title (name) for the newly created task. If left blank, the name of the template will be used.',
|
|
)
|
|
|
|
def default_get(self, fields_list):
|
|
res = super().default_get(fields_list)
|
|
active_id = self.env.context.get('active_id', False)
|
|
active_model = self.env.context.get('active_model', False)
|
|
if not active_model:
|
|
params = self.env.context.get('params', False)
|
|
active_model = params.get('model', False)
|
|
|
|
if active_model == 'project.task.template' and active_id and 'task_template_id' in fields_list:
|
|
res.update({'task_template_id': active_id})
|
|
if active_model == 'project.task' and 'project_id' in fields_list:
|
|
res.update({'project_id': self.env.ref('industry_fsm.fsm_project').id})
|
|
return res
|
|
|
|
def action_create_task_from_template(self):
|
|
self.ensure_one()
|
|
task = self.task_template_id.create_task_from_self(self.project_id, self.new_task_title)
|
|
return {
|
|
'type': 'ir.actions.act_window',
|
|
'res_model': 'project.task',
|
|
'res_id': task.id,
|
|
'view_mode': 'form',
|
|
'target': 'current',
|
|
}
|
|
|
|
|