From 0cf2ceca90fdcb59cdecea17ccd9aa40cdf575e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 12 Jan 2016 11:14:06 +0100 Subject: [PATCH] [IMP] project, issue: template on stages Added a mail_template_field on project stage model (project.task.type). This fields is used to automatically send an email when a task or issue comes in this stage. Recruitment code has been updated to use the mixin method. --- addons/hr_recruitment/models/hr_recruitment.py | 14 +++++++++----- addons/project/project.py | 18 ++++++++++++++++++ addons/project/project_demo.xml | 15 +++++++++++++++ addons/project/project_view.xml | 3 ++- addons/project_issue/__init__.py | 1 + addons/project_issue/models/__init__.py | 1 + .../project_issue/models/project_task_type.py | 12 ++++++++++++ addons/project_issue/project_issue.py | 9 +++++++++ 8 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 addons/project_issue/models/__init__.py create mode 100644 addons/project_issue/models/project_task_type.py diff --git a/addons/hr_recruitment/models/hr_recruitment.py b/addons/hr_recruitment/models/hr_recruitment.py index c8ae303f705..6c4cbac60da 100644 --- a/addons/hr_recruitment/models/hr_recruitment.py +++ b/addons/hr_recruitment/models/hr_recruitment.py @@ -289,11 +289,6 @@ class Applicant(models.Model): res = super(Applicant, self).write(vals) else: res = super(Applicant, self).write(vals) - - # post processing: if stage changed, post a message in the chatter - if vals.get('stage_id'): - if self.stage_id.template_id: - self.message_post_with_template(self.stage_id.template_id.id, notify=True, composition_mode='mass_mail') return res @api.model @@ -358,6 +353,15 @@ class Applicant(models.Model): action['domain'] = str(['&', ('res_model', '=', self._name), ('res_id', 'in', self.ids)]) return action + @api.multi + def _track_template(self, tracking): + res = super(Applicant, self)._track_template(tracking) + applicant = self[0] + changes, dummy = tracking[applicant.id] + if 'stage_id' in changes and applicant.stage_id.template_id: + res['stage_id'] = (applicant.stage_id.template_id, {'composition_mode': 'mass_mail'}) + return res + @api.multi def _track_subtype(self, init_values): record = self[0] diff --git a/addons/project/project.py b/addons/project/project.py index 46ba4ba1e5f..f9889a152cf 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -18,6 +18,10 @@ class project_task_type(osv.osv): _name = 'project.task.type' _description = 'Task Stage' _order = 'sequence' + + def _get_mail_template_id_domain(self): + return [('model', '=', 'project.task')] + _columns = { 'name': fields.char('Stage Name', required=True, translate=True), 'description': fields.text('Description', translate=True), @@ -35,6 +39,11 @@ class project_task_type(osv.osv): 'legend_normal': fields.char( 'Kanban Ongoing Explanation', translate=True, help='Override the default value displayed for the normal state for kanban selection, when the task or issue is in that stage.'), + 'mail_template_id': fields.many2one( + 'mail.template', + string='Email Template', + domain=lambda self: self._get_mail_template_id_domain(), + help="If set an email will be sent to the customer when the task or issue reaches this step."), 'fold': fields.boolean('Folded in Tasks Pipeline', help='This stage is folded in the kanban view when ' 'there are no records in that stage to display.'), @@ -713,6 +722,15 @@ class task(osv.osv): # Mail gateway # --------------------------------------------------- + @api.multi + def _track_template(self, tracking): + res = super(task, self)._track_template(tracking) + test_task = self[0] + changes, tracking_value_ids = tracking[test_task.id] + if 'stage_id' in changes and test_task.stage_id.mail_template_id: + res['stage_id'] = (test_task.stage_id.mail_template_id, {'composition_mode': 'mass_mail'}) + return res + def _track_subtype(self, cr, uid, ids, init_values, context=None): record = self.browse(cr, uid, ids[0], context=context) if 'kanban_state' in init_values and record.kanban_state == 'blocked': diff --git a/addons/project/project_demo.xml b/addons/project/project_demo.xml index bd2cd72cdb8..d424645c766 100644 --- a/addons/project/project_demo.xml +++ b/addons/project/project_demo.xml @@ -21,12 +21,27 @@ Usability + + + Task: Reception Acknowledgment + Reception of ${object.name} + + + Dear ${object.partner_id.name or 'customer'},

+

Thank you for your enquiry.

+

If you have any questions, please let us know.

+

Best regards,

]]>
+ +
+ 1 To Do Not validated Use the priority for tasks related to gold customers + 10 diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 1a9fb973655..48876926d19 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -522,10 +522,11 @@ - + + diff --git a/addons/project_issue/__init__.py b/addons/project_issue/__init__.py index bfc773a226d..91f590dfedd 100644 --- a/addons/project_issue/__init__.py +++ b/addons/project_issue/__init__.py @@ -1,5 +1,6 @@ # -*- encoding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +import models import project_issue import report diff --git a/addons/project_issue/models/__init__.py b/addons/project_issue/models/__init__.py new file mode 100644 index 00000000000..50bd1232d2e --- /dev/null +++ b/addons/project_issue/models/__init__.py @@ -0,0 +1 @@ +import project_task_type diff --git a/addons/project_issue/models/project_task_type.py b/addons/project_issue/models/project_task_type.py new file mode 100644 index 00000000000..e214a2c7ef3 --- /dev/null +++ b/addons/project_issue/models/project_task_type.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- + +from openerp import models + + +class ProjectStage(models.Model): + _name = "project.task.type" + _inherit = ['project.task.type'] + + def _get_mail_template_id_domain(self): + domain = super(ProjectStage, self)._get_mail_template_id_domain() + return ['|'] + domain + [('model', '=', 'project.issue')] diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index 7e3698e9f05..45ed5b446fe 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -302,6 +302,15 @@ class project_issue(osv.Model): # Mail gateway # ------------------------------------------------------- + @api.multi + def _track_template(self, tracking): + res = super(project_issue, self)._track_template(tracking) + test_issue = self[0] + changes, dummy = tracking[test_issue.id] + if 'stage_id' in changes and test_issue.stage_id.mail_template_id: + res['stage_id'] = (test_issue.stage_id.mail_template_id, {'composition_mode': 'mass_mail'}) + return res + def _track_subtype(self, cr, uid, ids, init_values, context=None): record = self.browse(cr, uid, ids[0], context=context) if 'kanban_state' in init_values and record.kanban_state == 'blocked':