templatetags: add filter to create set (#67049)
This commit is contained in:
parent
00326aca67
commit
2444b25968
|
@ -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'
|
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):
|
def test_iterate_days_until(pub):
|
||||||
t = Template(
|
t = Template(
|
||||||
'{% for day in value|iterate_days_until:value2 %}{{ day }}{% if not forloop.last %}, {% endif %}{% endfor %}'
|
'{% for day in value|iterate_days_until:value2 %}{{ day }}{% if not forloop.last %}, {% endif %}{% endfor %}'
|
||||||
|
|
|
@ -947,6 +947,12 @@ def list_(value):
|
||||||
return list(unlazy(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')
|
@register.filter(name='qrcode')
|
||||||
def qrcode_filter(value, name=None):
|
def qrcode_filter(value, name=None):
|
||||||
if not qrcode:
|
if not qrcode:
|
||||||
|
|
Loading…
Reference in New Issue