[IMP] - manage substitution for mail.thread message_post_with_template

This commit is contained in:
sbejaoui
2019-07-25 13:02:07 +02:00
parent ea774aab9c
commit ed669b00a3
9 changed files with 97 additions and 17 deletions

View File

@@ -1,2 +1,3 @@
from . import ir_actions_report
from . import ir_actions_report_substitution_rule
from . import mail_thread

View File

@@ -28,6 +28,18 @@ class IrActionReport(models.Model):
return substitution_report_rule.substitution_action_report_id
return False
@api.multi
def get_substitution_report(self, active_ids):
self.ensure_one()
action_report = self
substitution_report = action_report
while substitution_report:
action_report = substitution_report
substitution_report = action_report._get_substitution_report(
action_report.model, active_ids
)
return action_report
@api.model
def get_substitution_report_dict(self, action_report_dict, active_ids):
if action_report_dict.get('id'):
@@ -43,9 +55,20 @@ class IrActionReport(models.Model):
@api.multi
def render(self, res_ids, data=None):
substitution_report = self._get_substitution_report(
self.model, res_ids
)
if substitution_report:
return substitution_report.render(res_ids, data)
return super().render(res_ids, data)
substitution_report = self.get_substitution_report(res_ids)
return super(IrActionReport, substitution_report).render(res_ids, data)
@api.noguess
def report_action(self, docids, data=None, config=True):
if docids:
if isinstance(docids, models.Model):
active_ids = docids.ids
elif isinstance(docids, int):
active_ids = [docids]
elif isinstance(docids, list):
active_ids = docids
substitution_report = self.get_substitution_report(active_ids)
return super(IrActionReport, substitution_report).report_action(
docids, data, config
)
return super().report_action(docids, data, config)

View File

@@ -0,0 +1,24 @@
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, models
class MailThread(models.AbstractModel):
_inherit = 'mail.thread'
@api.multi
def message_post_with_template(self, template_id, **kwargs):
template = self.env['mail.template'].browse(template_id)
old_report = False
if template and template.report_template and self.ids:
active_ids = self.ids
old_report = template.report_template
template.report_template = old_report.get_substitution_report(
active_ids
)
res = super().message_post_with_template(template_id, **kwargs)
if old_report:
template.report_template = old_report
return res