summaryrefslogtreecommitdiff
path: root/addons/mail/models/mail_template.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/mail/models/mail_template.py')
-rw-r--r--addons/mail/models/mail_template.py16
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