templatetags: correct decimal filter output on 0 (#30770)

This commit is contained in:
Nicolas Roche 2019-02-19 18:43:33 +01:00
parent 798934d531
commit 3e763b999a
2 changed files with 5 additions and 4 deletions

View File

@ -292,6 +292,7 @@ def test_decimal_templatetag():
assert tmpl.render({'plop': 3.14}) == '3.14'
assert tmpl.render({'plop': 12345.678}) == '12345.678'
assert tmpl.render({'plop': None}) == ''
assert tmpl.render({'plop': 0}) == '0'
tmpl = Template('{{ plop|decimal:3 }}')
assert tmpl.render({'plop': '3.14'}) == '3.140'

View File

@ -112,8 +112,6 @@ def time(value, arg=None):
return defaultfilters.date(value, arg=arg)
def parse_decimal(value):
if not value:
return None
if isinstance(value, basestring):
# replace , by . for French users comfort
value = value.replace(',', '.')
@ -124,10 +122,12 @@ def parse_decimal(value):
@register.filter(is_safe=False)
def decimal(value, arg=None):
if arg is None:
return parse_decimal(value) or ''
if not isinstance(value, Decimal):
value = parse_decimal(value)
if value is None:
return ''
if arg is None:
return value
return defaultfilters.floatformat(value, arg=arg)
@register.filter(expects_localtime=True, is_safe=False)