misc: add |adjust_to_week_monday & |iterate_days_until filters (#55550)
gitea-wip/combo/pipeline/head There was a failure building this commit Details
gitea/combo/pipeline/head Build started... Details

This commit is contained in:
Lauréline Guérin 2021-07-13 09:27:33 +02:00
parent a23696d047
commit ce5d2fbfca
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 41 additions and 0 deletions

View File

@ -569,6 +569,26 @@ def datetime_in_past(value):
return value <= date_now
@register.filter(expects_localtime=True)
def adjust_to_week_monday(value):
value = parse_date(value)
if not value:
return ''
return value - datetime.timedelta(days=value.weekday())
@register.filter(expects_localtime=True)
def iterate_days_until(value, until):
value = parse_date(value)
until = parse_date(until)
if not (value and until):
return
while value < until:
yield value
value = value + datetime.timedelta(days=1)
yield value
def parse_decimal(value, default=Decimal(0)):
if isinstance(value, six.string_types):
# replace , by . for French users comfort

View File

@ -638,6 +638,27 @@ def test_datetime_in_past(value, expected):
assert t.render(Context({'value': value})) == str(expected)
def test_adjust_to_week_monday():
t = Template('{{ value|adjust_to_week_monday|date:"Y-m-d" }}')
assert t.render(Context({'value': '2021-06-13'})) == '2021-06-07'
t = Template('{{ value|adjust_to_week_monday|date:"Y-m-d" }}')
assert t.render(Context({'value': '2021-06-14'})) == '2021-06-14'
t = Template('{{ value|adjust_to_week_monday|date:"Y-m-d" }}')
assert t.render(Context({'value': datetime.datetime(2021, 6, 14, 0, 0)})) == '2021-06-14'
def test_iterate_days_until():
t = Template(
'{% for day in value|iterate_days_until:value2 %}{{ day|date:"Y-m-d" }}{% if not forloop.last %}, {% endif %}{% endfor %}'
)
assert (
t.render(Context({'value': '2021-06-13', 'value2': '2021-06-16'}))
== '2021-06-13, 2021-06-14, 2021-06-15, 2021-06-16'
)
assert t.render(Context({'value': 'error1', 'value2': 'error2'})) == ''
def test_decimal_templatetag():
tmpl = Template('{{ plop|decimal }}')
assert tmpl.render(Context({'plop': 'toto'})) == '0'