templatetags: add filter to create set (#67049)

This commit is contained in:
Benjamin Dauvergne 2022-07-07 13:16:40 +02:00
parent 00326aca67
commit 2444b25968
2 changed files with 25 additions and 0 deletions

View File

@ -1318,6 +1318,25 @@ def test_adjust_to_week_monday(pub):
assert t.render({'value': datetime.datetime(2021, 6, 14, 0, 0)}) == '2021-06-14'
def test_convert_as_set():
tmpl = Template('{{ foo|set|join:","}}')
def render(value):
return set(tmpl.render({'foo': value}).split(','))
assert render(['foo', 'foo', 'bar']) == {'foo', 'bar'}
def list_generator():
yield from range(5)
assert render(list_generator) == set(map(str, range(5)))
def list_range():
return range(5)
assert render(list_range) == set(map(str, range(5)))
def test_iterate_days_until(pub):
t = Template(
'{% for day in value|iterate_days_until:value2 %}{{ day }}{% if not forloop.last %}, {% endif %}{% endfor %}'

View File

@ -947,6 +947,12 @@ def list_(value):
return list(unlazy(value))
@register.filter(name='set')
def set_(value):
# turn a generator into a set
return set(unlazy(value))
@register.filter(name='qrcode')
def qrcode_filter(value, name=None):
if not qrcode: