mirror of https://github.com/OCA/social.git
93 lines
3.3 KiB
Python
93 lines
3.3 KiB
Python
from markupsafe import Markup
|
|
|
|
from odoo import api, models, tools
|
|
|
|
|
|
class MailMail(models.Model):
|
|
_inherit = "mail.mail"
|
|
|
|
@api.model
|
|
def _build_cc_text(self, partners):
|
|
if not partners:
|
|
return ""
|
|
|
|
def get_ctx_param(ctx_key, default_parm):
|
|
if ctx_key in self.env.context:
|
|
return self.env.context[ctx_key]
|
|
return default_parm
|
|
|
|
def remove_p(markup_txt):
|
|
if markup_txt.startswith("<p>") and markup_txt.endswith("</p>"):
|
|
return markup_txt[3:-4]
|
|
return markup_txt
|
|
|
|
company = self.env.company
|
|
partner_format = get_ctx_param(
|
|
"partner_format", company.show_followers_partner_format
|
|
)
|
|
msg_sent_to = get_ctx_param(
|
|
"msg_sent_to", company.show_followers_message_sent_to
|
|
)
|
|
msg_warn = get_ctx_param(
|
|
"msg_warn", company.show_followers_message_response_warning
|
|
)
|
|
partner_message = ", ".join(
|
|
[
|
|
partner_format
|
|
% {
|
|
# Supported parameters
|
|
"partner_name": p.name,
|
|
"partner_email": p.email,
|
|
"partner_email_domain": tools.email_domain_extract(p.email),
|
|
}
|
|
for p in partners
|
|
]
|
|
)
|
|
full_text = """
|
|
<div summary='o_mail_notification' style='padding:5px;
|
|
margin:10px 0px 10px 0px;font-size:13px;border-radius:5px;
|
|
font-family:Arial;border:1px solid #E0E2E6;background-color:#EBEBEB;'>
|
|
{msg_sent_to} {partner_message}
|
|
{rc}{msg_warn}
|
|
</div>
|
|
""".format(
|
|
msg_sent_to=remove_p(msg_sent_to),
|
|
partner_message=Markup.escape(partner_message),
|
|
rc=msg_warn.striptags() and "<br/>" or "",
|
|
msg_warn=msg_warn.striptags() and remove_p(msg_warn) or "",
|
|
)
|
|
return full_text
|
|
|
|
def _send(self, auto_commit=False, raise_exception=False, smtp_session=None):
|
|
group_user = self.env.ref("base.group_user")
|
|
|
|
for mail in self:
|
|
if not (mail.model and mail.res_id and group_user):
|
|
continue
|
|
# recipients from any Notification Type (i.e. email, inbox, etc.)
|
|
recipients = mail.notification_ids.res_partner_id
|
|
record = self.env[mail.model].browse(mail.res_id)
|
|
company = getattr(record, "company_id", self.env.company)
|
|
show_internal_users = company and company.show_internal_users_cc
|
|
show_in_cc_recipients = recipients._filter_shown_in_cc(show_internal_users)
|
|
if len(show_in_cc_recipients) <= 1:
|
|
continue
|
|
lang = (
|
|
mail.notification_ids.res_partner_id[:1].lang
|
|
or mail.author_id.lang
|
|
or company.partner_id.lang
|
|
or "en_US"
|
|
)
|
|
final_cc = (
|
|
mail.with_context(lang=lang)
|
|
.with_company(company)
|
|
._build_cc_text(show_in_cc_recipients)
|
|
)
|
|
mail.body_html = final_cc + mail.body_html
|
|
|
|
return super()._send(
|
|
auto_commit=auto_commit,
|
|
raise_exception=raise_exception,
|
|
smtp_session=smtp_session,
|
|
)
|