templatetags: add parse_date and parse_time, from django.utils.dateparse (#20846)

This commit is contained in:
Thomas NOËL 2017-12-21 11:25:50 +01:00
parent 83120c469a
commit 029271b2a6
2 changed files with 36 additions and 0 deletions

View File

@ -162,6 +162,13 @@ def strptime(date_string, date_format):
except ValueError:
return None
@register.filter
def parse_date(date_string):
try:
return dateparse.parse_date(date_string)
except ValueError:
return None
@register.filter
def parse_datetime(date_string):
try:
@ -169,6 +176,13 @@ def parse_datetime(date_string):
except ValueError:
return None
@register.filter
def parse_time(time_string):
try:
return dateparse.parse_time(time_string)
except ValueError:
return None
@register.filter
def shown_because_admin(cell, request):
if not (request.user and request.user.is_superuser):

View File

@ -17,6 +17,7 @@ def test_parse_datetime():
t = Template('{% load combo %}{{ someday|parse_datetime|date:"Y m d H i s T" }}')
expected = '2015 04 15 13 11 12 UTC'
assert t.render(Context({'someday': '2015-04-15T13:11:12'})) == expected
assert t.render(Context({'someday': '2015-04-15 13:11:12'})) == expected
assert t.render(Context({'someday': '2015-04-15T13:11:12Z'})) == expected
assert t.render(Context({'someday': '2015-04-15T13:11:12+00:00'})) == expected
assert t.render(Context({'someday': '2015-04-15T13:11:12.12345'})) == expected
@ -27,6 +28,27 @@ def test_parse_datetime():
assert t.render(Context({'someday': 'foobar'})) == ''
assert t.render(Context({'someday': ''})) == ''
t = Template('{% load combo %}{{ someday|parse_date|date:"Y m d" }}')
expected = '2015 04 15'
assert t.render(Context({'someday': '2015-04-15'})) == expected
assert t.render(Context({'someday': '2015-04-15T13:11:12Z'})) == ''
assert t.render(Context({'someday': 'foobar'})) == ''
assert t.render(Context({'someday': ''})) == ''
t = Template('{% load combo %}{{ someday|parse_time|date:"H i s" }}')
expected = '13 11 12'
assert t.render(Context({'someday': '13:11:12'})) == expected
assert t.render(Context({'someday': '13:11:12Z'})) == expected
assert t.render(Context({'someday': '13:11:12+00:00'})) == expected
assert t.render(Context({'someday': '13:11:12.12345'})) == expected
assert t.render(Context({'someday': '13:11:12.12345Z'})) == expected
assert t.render(Context({'someday': '13:11:12.12345+00:00'})) == expected
assert t.render(Context({'someday': '13:11'})) == '13 11 00'
assert t.render(Context({'someday': '13:99'})) == ''
assert t.render(Context({'someday': '13'})) == ''
assert t.render(Context({'someday': 'foobar'})) == ''
assert t.render(Context({'someday': ''})) == ''
def test_has_role():
t = Template('{% load combo %}{{ request.user|has_role:"Role1" }}')