[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.
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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':
|
||||
|
||||
@@ -21,12 +21,27 @@
|
||||
<field name="name">Usability</field>
|
||||
</record>
|
||||
|
||||
<!-- Email templates -->
|
||||
<record id="mail_template_data_project_task" model="mail.template">
|
||||
<field name="name">Task: Reception Acknowledgment</field>
|
||||
<field name="subject">Reception of ${object.name}</field>
|
||||
<field name="model_id" ref="project.model_project_task"/>
|
||||
<field name="use_default_to" eval="True"/>
|
||||
<field name="body_html"><![CDATA[
|
||||
<p>Dear ${object.partner_id.name or 'customer'},</p>
|
||||
<p>Thank you for your enquiry.<br /></p>
|
||||
<p>If you have any questions, please let us know.</p>
|
||||
<p>Best regards,</p>]]></field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<!-- Stages -->
|
||||
<record id="project_stage_0" model="project.task.type">
|
||||
<field name="sequence">1</field>
|
||||
<field name="name">To Do</field>
|
||||
<field name="legend_blocked">Not validated</field>
|
||||
<field name="legend_priority">Use the priority for tasks related to gold customers</field>
|
||||
<field name="mail_template_id" ref="project.mail_template_data_project_task"/>
|
||||
</record>
|
||||
<record id="project_stage_1" model="project.task.type">
|
||||
<field name="sequence">10</field>
|
||||
|
||||
@@ -522,10 +522,11 @@
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="sequence" groups="base.group_no_one"/>
|
||||
<field name="mail_template_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="fold"/>
|
||||
<field name="sequence" groups="base.group_no_one"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Stage Description and Tooltips">
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
import project_task_type
|
||||
@@ -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')]
|
||||
@@ -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':
|
||||
|
||||
Reference in New Issue
Block a user