mirror of https://github.com/OCA/social.git
mail_inline_css: fix transform hook
The mail module offers a better hook to manipulate html: `render_post_process`. By using this, we make sure the transform is applied properly before html tags sanitizing happens, which can alter - if not screw - the final result. Finally, it simplifies code :)pull/534/head
parent
0d68d9dee4
commit
adef1da1fe
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
from odoo import api, models
|
from odoo import models
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from premailer import Premailer
|
from premailer import Premailer
|
||||||
|
@ -16,22 +16,15 @@ except (ImportError, IOError) as err: # pragma: no cover
|
||||||
class MailTemplate(models.Model):
|
class MailTemplate(models.Model):
|
||||||
_inherit = 'mail.template'
|
_inherit = 'mail.template'
|
||||||
|
|
||||||
@api.multi
|
def render_post_process(self, html):
|
||||||
def generate_email(self, res_ids, fields=None):
|
html = super().render_post_process(html)
|
||||||
"""Use `premailer` to convert styles to inline styles."""
|
return self._premailer_apply_transform(html)
|
||||||
result = super().generate_email(res_ids, fields=fields)
|
|
||||||
if isinstance(res_ids, int):
|
|
||||||
result['body_html'] = \
|
|
||||||
self._premailer_apply_transform(result["body_html"])
|
|
||||||
else:
|
|
||||||
for __, data in result.items():
|
|
||||||
data['body_html'] = \
|
|
||||||
self._premailer_apply_transform(data["body_html"])
|
|
||||||
return result
|
|
||||||
|
|
||||||
def _premailer_apply_transform(self, data_html):
|
def _premailer_apply_transform(self, html):
|
||||||
|
if not html.strip():
|
||||||
|
return html
|
||||||
premailer = Premailer(
|
premailer = Premailer(
|
||||||
html=data_html,
|
html=html,
|
||||||
**self._get_premailer_options(),
|
**self._get_premailer_options(),
|
||||||
)
|
)
|
||||||
return premailer.transform()
|
return premailer.transform()
|
||||||
|
|
Loading…
Reference in New Issue