diff options
Diffstat (limited to 'addons/mail/models/mail_template.py')
| -rw-r--r-- | addons/mail/models/mail_template.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/addons/mail/models/mail_template.py b/addons/mail/models/mail_template.py index b4e66e71f33..0576bd66db7 100644 --- a/addons/mail/models/mail_template.py +++ b/addons/mail/models/mail_template.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +import babel import base64 import copy import datetime @@ -18,6 +19,20 @@ from odoo.exceptions import UserError _logger = logging.getLogger(__name__) +def format_date(env, date, pattern=False): + date = datetime.datetime.strptime(date[:10], tools.DEFAULT_SERVER_DATE_FORMAT) + lang_code = env.context.get('lang') or 'en_US' + if not pattern: + lang = env['res.lang']._lang_get(lang_code) + pattern = lang.date_format + try: + locale = babel.Locale.parse(lang_code) + pattern = tools.posix_to_ldml(pattern, locale=locale) + return babel.dates.format_date(date, format=pattern, locale=locale) + except babel.core.UnknownLocaleError: + return date.strftime(pattern) + + def format_tz(env, dt, tz=False, format=False): record_user_timestamp = env.user.sudo().with_context(tz=tz or env.user.sudo().tz or 'UTC') timestamp = datetime.datetime.strptime(dt, tools.DEFAULT_SERVER_DATETIME_FORMAT) @@ -350,6 +365,7 @@ class MailTemplate(models.Model): for record in records: res_to_rec[record.id] = record variables = { + 'format_date': lambda date, format=False, context=self._context: format_date(self.env, date, format), 'format_tz': lambda dt, tz=False, format=False, context=self._context: format_tz(self.env, dt, tz, format), 'user': self.env.user, 'ctx': self._context, # context kw would clash with mako internals |
