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':