mirror of
https://github.com/OCA/reporting-engine.git
synced 2025-02-16 16:30:38 +02:00
[IMP] - manage substitution for mail.thread message_post_with_template
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
from . import ir_actions_report
|
||||
from . import ir_actions_report_substitution_rule
|
||||
from . import mail_thread
|
||||
|
||||
@@ -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)
|
||||
|
||||
24
report_substitute/models/mail_thread.py
Normal file
24
report_substitute/models/mail_thread.py
Normal 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
|
||||
Reference in New Issue
Block a user