mirror of https://github.com/OCA/social.git
72 lines
2.5 KiB
Python
72 lines
2.5 KiB
Python
from markupsafe import Markup
|
|
|
|
from odoo import api, fields, models, tools
|
|
|
|
|
|
class MailComposeMessage(models.TransientModel):
|
|
_inherit = "mail.compose.message"
|
|
|
|
is_reply_readonly = fields.Boolean(default=True, string="Reply Readonly")
|
|
reply_body = fields.Html(default="", string="Reply body")
|
|
is_separate_body = fields.Boolean(compute="_compute_is_separate_body")
|
|
|
|
@api.depends("composition_mode", "model", "res_domain", "res_ids", "template_id")
|
|
@api.depends_context("is_quoted_reply")
|
|
def _compute_body(self):
|
|
res = super()._compute_body()
|
|
for composer in self:
|
|
context = composer._context
|
|
if context.get("is_quoted_reply"):
|
|
if self.is_separate_body:
|
|
self.reply_body = context["quote_body"]
|
|
else:
|
|
if self.body:
|
|
self.body += Markup(context["quote_body"])
|
|
else:
|
|
self.body = Markup(context["quote_body"])
|
|
return res
|
|
|
|
@api.depends(
|
|
"composition_mode",
|
|
"model",
|
|
"parent_id",
|
|
"record_name",
|
|
"res_domain",
|
|
"res_ids",
|
|
"template_id",
|
|
)
|
|
@api.depends_context("default_subject")
|
|
def _compute_subject(self):
|
|
res = super()._compute_subject()
|
|
for composer in self:
|
|
subj = composer._context.get("default_subject", False)
|
|
if subj:
|
|
composer.subject = tools.ustr(subj)
|
|
return res
|
|
|
|
@api.onchange("is_reply_readonly")
|
|
def _onchange_is_reply_readonly(self):
|
|
if self.reply_body:
|
|
self.reply_body = Markup(self.reply_body)
|
|
|
|
@api.depends("reply_body")
|
|
def _compute_is_separate_body(self):
|
|
if self._context.get("is_quoted_reply", False):
|
|
parameter_string = (
|
|
self.env["ir.config_parameter"]
|
|
.sudo()
|
|
.get_param("mail_quoted_reply.separate_reply_body", "")
|
|
)
|
|
self.is_separate_body = parameter_string.lower() not in ["", "false", "0"]
|
|
else:
|
|
self.is_separate_body = False
|
|
|
|
def _prepare_mail_values(self, res_ids):
|
|
results = super()._prepare_mail_values(res_ids)
|
|
if self.is_separate_body and self.reply_body:
|
|
for res_id in res_ids:
|
|
values = results.get(res_id)
|
|
reply_body = Markup(self.reply_body)
|
|
values.update({"body": values.get("body") + reply_body})
|
|
return results
|