misc: add |is_empty filter (#50402)
This commit is contained in:
parent
2660c62368
commit
568a419982
|
@ -1219,6 +1219,12 @@ def test_lazy_formdata_queryset_filter(pub, variable_test_data):
|
|||
assert LazyFormData(formdata).objects.pending().count == 7
|
||||
assert LazyFormData(formdata).objects.pending().filter_by('foo_foo').apply_filter_value('foo').count == 0
|
||||
|
||||
# test |is_empty
|
||||
tmpl = Template('{{form_objects|pending|is_empty}}')
|
||||
assert tmpl.render(context) == 'False'
|
||||
tmpl = Template('{{form_objects|pending|filter_by:"foo_foo"|filter_value:"foo"|is_empty}}')
|
||||
assert tmpl.render(context) == 'True'
|
||||
|
||||
# test |getlist
|
||||
tmpl = Template('{% for v in form_objects|order_by:"id"|getlist:"foo_foo" %}{{ v }},{% endfor %}')
|
||||
assert tmpl.render(context) == 'bar,bar,bar,bar,bar,bar,bar,foo,foo,foo,foo,'
|
||||
|
@ -1235,6 +1241,12 @@ def test_lazy_formdata_queryset_filter(pub, variable_test_data):
|
|||
assert LazyFormData(formdata).objects.order_by('id').getlist('form_var_foo_foo') == [
|
||||
'bar', 'bar', 'bar', 'bar', 'bar', 'bar', 'bar', 'foo', 'foo', 'foo', 'foo']
|
||||
assert set(LazyFormData(formdata).objects.getlist('unknown')) == set([None])
|
||||
tmpl = Template('{{form_objects|pending|getlist:"foo_foo"|is_empty}}')
|
||||
assert tmpl.render(context) == 'False'
|
||||
tmpl = Template('{{form_objects|filter_by:"foo_foo"|filter_value:"foo"|getlist:"foo_foo"|is_empty}}')
|
||||
assert tmpl.render(context) == 'False'
|
||||
tmpl = Template('{{form_objects|pending|filter_by:"foo_foo"|filter_value:"foo"|getlist:"foo_foo"|is_empty}}')
|
||||
assert tmpl.render(context) == 'True'
|
||||
|
||||
# test with cache populated
|
||||
for value in [datetime.date(2018, 7, 31).timetuple(), datetime.date(2018, 7, 31), datetime.datetime(2018, 7, 31), '2018-07-31']:
|
||||
|
|
|
@ -1108,3 +1108,16 @@ def test_django_contrib_humanize_filters():
|
|||
with override_settings(LANGUAGE_CODE='fr-fr'):
|
||||
assert tmpl.render({'foo': 10000}) == '10 000'
|
||||
assert tmpl.render({'foo': '10000'}) == '10 000'
|
||||
|
||||
|
||||
def test_is_empty():
|
||||
tmpl = Template('{{ foo|is_empty }}')
|
||||
assert tmpl.render({}) == 'True'
|
||||
assert tmpl.render({'foo': ''}) == 'True'
|
||||
assert tmpl.render({'foo': None}) == 'True'
|
||||
assert tmpl.render({'foo': 'foo'}) == 'False'
|
||||
assert tmpl.render({'foo': 42}) == 'False'
|
||||
assert tmpl.render({'foo': []}) == 'True'
|
||||
assert tmpl.render({'foo': ['foo']}) == 'False'
|
||||
assert tmpl.render({'foo': {}}) == 'True'
|
||||
assert tmpl.render({'foo': {'foo': 42}}) == 'False'
|
||||
|
|
|
@ -68,7 +68,7 @@ def get(mapping, key):
|
|||
|
||||
@register.filter
|
||||
def getlist(mapping, key):
|
||||
if not mapping or not hasattr(mapping, 'getlist'):
|
||||
if mapping is None or not hasattr(mapping, 'getlist'):
|
||||
return []
|
||||
return mapping.getlist(key)
|
||||
|
||||
|
@ -755,3 +755,13 @@ def phonenumber_fr(value, separator=' '):
|
|||
|
||||
# unknown
|
||||
return value
|
||||
|
||||
|
||||
@register.filter
|
||||
def is_empty(value):
|
||||
from wcs.variables import LazyFormDefObjectsManager, LazyList
|
||||
if isinstance(value, (six.string_types, list, dict)):
|
||||
return not value
|
||||
if isinstance(value, (LazyFormDefObjectsManager, LazyList)):
|
||||
return not list(value)
|
||||
return value is None
|
||||
|
|
Loading…
Reference in New Issue