social/mail_template_substitute/models/mail_template.py

34 lines
1.3 KiB
Python

# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
from odoo.tools.safe_eval import safe_eval
class MailTemplate(models.Model):
_inherit = "mail.template"
mail_template_substitution_rule_ids = fields.One2many(
comodel_name="mail.template.substitution.rule",
inverse_name="mail_template_id",
string="Substitution Rules",
)
def _get_substitution_template(self, model_id, active_ids):
self.ensure_one()
if isinstance(active_ids, int):
active_ids = [active_ids]
model = self.env[model_id.sudo().model]
for substitution_template_rule in self.mail_template_substitution_rule_ids:
domain = safe_eval(substitution_template_rule.domain)
domain.append(("id", "in", active_ids))
if set(model.search(domain).ids) == set(active_ids):
return substitution_template_rule.substitution_mail_template_id
return False
def _classify_per_lang(self, res_ids, engine="inline_template"):
substitution_template = self._get_substitution_template(self.model_id, res_ids)
if substitution_template:
return substitution_template._classify_per_lang(res_ids, engine=engine)
return super()._classify_per_lang(res_ids, engine=engine)