misc: fix |duration to take seconds as parameter (#80421)

This commit is contained in:
Frédéric Péters 2023-08-17 13:48:04 +02:00
parent 542b25d7e0
commit 1b36a580ea
2 changed files with 10 additions and 6 deletions

View File

@ -192,7 +192,7 @@ def duration(value, arg='short'):
# value is expected to be a timedelta or a number of seconds
if not isinstance(value, datetime.timedelta):
try:
value = datetime.timedelta(seconds=int(value) * 60)
value = datetime.timedelta(seconds=int(value))
except (TypeError, ValueError):
return ''
return utils.seconds2humanduration(int(value.total_seconds()), short=bool(arg != 'long'))

View File

@ -337,23 +337,27 @@ def test_sum():
def test_duration():
context = Context({'value': 80})
context = Context({'value': 120})
assert Template('{{ value|duration }}').render(context) == '2min'
assert Template('{{ value|duration:"long" }}').render(context) == '2 minutes'
context = Context({'value': 4800})
assert Template('{{ value|duration }}').render(context) == '1h20'
assert Template('{{ value|duration:"long" }}').render(context) == '1 hour and 20 minutes'
context = Context({'value': 40})
context = Context({'value': 2400})
assert Template('{{ value|duration }}').render(context) == '40min'
assert Template('{{ value|duration:"long" }}').render(context) == '40 minutes'
context = Context({'value': 120})
context = Context({'value': 7200})
assert Template('{{ value|duration }}').render(context) == '2h'
assert Template('{{ value|duration:"long" }}').render(context) == '2 hours'
context = Context({'value': 1510})
context = Context({'value': 90600})
assert Template('{{ value|duration }}').render(context) == '1 day and 1h10'
assert Template('{{ value|duration:"long" }}').render(context) == '1 day, 1 hour and 10 minutes'
context = Context({'value': 61})
context = Context({'value': 3660})
assert Template('{{ value|duration }}').render(context) == '1h01'
context = Context({'value': 'xx'})