misc: fix |first & |last with LazyFormData value (#69539)
gitea-wip/wcs/pipeline/head Build started... Details

This commit is contained in:
Lauréline Guérin 2022-09-26 10:00:07 +02:00
parent a44847995f
commit 24eec03694
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
3 changed files with 16 additions and 4 deletions

View File

@ -2767,7 +2767,7 @@ def test_backoffice_sidebar_lateral_block(pub):
assert partial_resp.text == '<div class="lateral-block">XXbouhXX</div>'
# error in lateral template
formdef.lateral_template = 'XX{{ form|first }}XX'
formdef.lateral_template = 'XX{% for %}XX'
formdef.store()
pub.loggederror_class.wipe()
@ -2776,7 +2776,7 @@ def test_backoffice_sidebar_lateral_block(pub):
assert pub.loggederror_class.count() == 1
assert (
pub.loggederror_class.select()[0].summary
== "Could not render lateral template ('LazyFormData' object has no attribute '0')"
== "Could not render lateral template (syntax error in Django template: 'for' statements should have at least four words: for)"
)

View File

@ -1279,19 +1279,31 @@ def test_is_empty():
def test_first():
class MockFormData:
formdef = None
lazy_formdata = LazyFormData(MockFormData())
tmpl = Template('{{ foo|first }}')
assert tmpl.render({'foo': ['foo']}) == 'foo'
assert tmpl.render({'foo': 'foo'}) == 'f'
assert tmpl.render({'foo': ''}) == ''
assert tmpl.render({'foo': None}) == ''
assert tmpl.render({'foo': lazy_formdata}) == ''
def test_last():
class MockFormData:
formdef = None
lazy_formdata = LazyFormData(MockFormData())
tmpl = Template('{{ foo|last }}')
assert tmpl.render({'foo': ['foo']}) == 'foo'
assert tmpl.render({'foo': 'foo'}) == 'o'
assert tmpl.render({'foo': ''}) == ''
assert tmpl.render({'foo': None}) == ''
assert tmpl.render({'foo': lazy_formdata}) == ''
def test_convert_as_list():

View File

@ -959,7 +959,7 @@ def rename_file(value, new_name):
def first(value):
try:
return defaultfilters.first(value)
except TypeError:
except (TypeError, AttributeError):
return ''
@ -967,7 +967,7 @@ def first(value):
def last(value):
try:
return defaultfilters.last(value)
except TypeError:
except (TypeError, AttributeError):
return ''