templatetags: unlazy values given to |date, |datetime, |time filters (#50102)

This commit is contained in:
Frédéric Péters 2021-01-13 12:41:39 +01:00
parent 1f597a3c63
commit 2691f4c80c
1 changed files with 6 additions and 0 deletions

View File

@ -144,6 +144,8 @@ def parse_date(date_string):
@register.filter(expects_localtime=True, is_safe=False)
def date(value, arg=None):
if hasattr(value, 'get_value'):
value = value.get_value() # unlazy
if arg is None:
value = parse_date(value)
if not value:
@ -170,6 +172,8 @@ def parse_datetime(datetime_string):
@register.filter(name='datetime', expects_localtime=True, is_safe=False)
def datetime_(value, arg=None):
if hasattr(value, 'get_value'):
value = value.get_value() # unlazy
if arg is None:
value = parse_datetime(value)
if not value:
@ -199,6 +203,8 @@ def parse_time(time_string):
@register.filter(expects_localtime=True, is_safe=False)
def time(value, arg=None):
if hasattr(value, 'get_value'):
value = value.get_value() # unlazy
if arg is None:
parsed = parse_time(value)
return parsed if parsed is not None else '' # because bool(midnight) == False