misc: allow date and datetime european formats in evalutils and template tags (#21611)

This commit is contained in:
Thomas NOËL 2018-02-02 16:21:16 +01:00
parent 4ba7996883
commit 1b1a64764f
3 changed files with 21 additions and 5 deletions

View File

@ -84,14 +84,19 @@ def test_template_encoding():
def test_datetime_templatetags():
tmpl = Template('{% load qommon %}{{ plop|parse_datetime|date:"d" }}')
assert tmpl.render({'plop': '2017-12-21 10:32'}) == '21'
tmpl = Template('{% load qommon %}{{ plop|parse_datetime|date:"d i" }}')
assert tmpl.render({'plop': '2017-12-21 10:32'}) == '21 32'
assert tmpl.render({'plop': '2017-12-21 10:32:42'}) == '21 32'
assert tmpl.render({'plop': '21/12/2017 10:32'}) == '21 32'
assert tmpl.render({'plop': '21/12/2017 10:32:42'}) == '21 32'
assert tmpl.render({'plop': '21/12/2017 10h32'}) == '21 32'
assert tmpl.render({'plop': 'x'}) == ''
tmpl = Template('{% load qommon %}{{ plop|parse_date|date:"d" }}')
assert tmpl.render({'plop': '2017-12-21'}) == '21'
assert tmpl.render({'plop': '21/12/2017'}) == '21'
assert tmpl.render({'plop': 'x'}) == ''
tmpl = Template('{% load qommon %}{{ plop|parse_time|date:"H" }}')
assert tmpl.render({'plop': '10:32'}) == '10'
tmpl = Template('{% load qommon %}{{ plop|parse_time|date:"H i" }}')
assert tmpl.render({'plop': '10:32'}) == '10 32'
assert tmpl.render({'plop': 'x'}) == ''

View File

@ -190,7 +190,7 @@ DATE_FORMATS = {
DATETIME_FORMATS = {
'C': ['%Y-%m-%d %H:%M', '%Y-%m-%d %H:%M:%S', '%Y-%m-%dT%H:%M:%S', '%Y-%m-%dT%H:%M:%SZ'],
'fr': ['%d/%m/%Y %H:%M'],
'fr': ['%d/%m/%Y %H:%M', '%d/%m/%Y %H:%M:%S', '%d/%m/%Y %Hh%M'],
}
def datetime_format():

View File

@ -16,6 +16,7 @@
from django import template
from django.utils import dateparse
from wcs.qommon import evalutils
register = template.Library()
@ -25,6 +26,11 @@ def get(mapping, key):
@register.filter
def parse_date(date_string):
try:
return evalutils.make_date(date_string)
except ValueError:
pass
# fallback to Django function
try:
return dateparse.parse_date(date_string)
except ValueError:
@ -32,6 +38,11 @@ def parse_date(date_string):
@register.filter
def parse_datetime(datetime_string):
try:
return evalutils.make_datetime(datetime_string)
except ValueError:
pass
# fallback to Django function
try:
return dateparse.parse_datetime(datetime_string)
except ValueError: