# Copyright 2017 David BEAL @ Akretion
# Copyright 2019 Camptocamp SA

# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from odoo import api, models

try:
    from premailer import Premailer
except (ImportError, IOError) as err:  # pragma: no cover
    import logging
    _logger = logging.getLogger(__name__)
    _logger.debug(err)


class MailTemplate(models.Model):
    _inherit = 'mail.template'

    @api.multi
    def generate_email(self, res_ids, fields=None):
        """Use `premailer` to convert styles to inline styles."""
        result = super().generate_email(res_ids, fields=fields)
        if isinstance(res_ids, int):
            premailer = Premailer(
                html=result['body_html'],
                **self._get_premailer_options(),
            )
            result['body_html'] = premailer.transform()
        else:
            for __, data in result.items():
                premailer = Premailer(
                    html=data['body_html'],
                    **self._get_premailer_options(),
                )
                data['body_html'] = premailer.transform()
        return result

    def _get_premailer_options(self):
        return {}

# Copyright 2017 David BEAL @ Akretion
# Copyright 2019 Camptocamp SA

# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from odoo import api, models

try:
    from premailer import Premailer
except (ImportError, IOError) as err:  # pragma: no cover
    import logging
    _logger = logging.getLogger(__name__)
    _logger.debug(err)


class MailTemplate(models.Model):
    _inherit = 'mail.template'

    @api.multi
    def generate_email(self, res_ids, fields=None):
        """Use `premailer` to convert styles to inline styles."""
        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):
        premailer = Premailer(
            html=data_html,
            **self._get_premailer_options(),
        )
        return premailer.transform()

    def _get_premailer_options(self):
        return {}

unify premailer transform apply