templatetags: handle lazy values on unaccent filter (#58688)

This commit is contained in:
Thomas NOËL 2021-11-18 10:20:21 +01:00
parent 53108f8459
commit b78fdaa02c
2 changed files with 17 additions and 0 deletions

View File

@ -217,6 +217,22 @@ def test_unaccent_templatetag():
assert tmpl.render({'foo': 'FOO bar'}) == 'FOO bar'
assert tmpl.render({'foo': 'félé'}) == 'fele'
# lazy mode
FormDef.wipe()
formdef = FormDef()
formdef.name = 'lazy'
formdef.fields = [fields.StringField(id='0', label='string', varname='foo')]
formdef.store()
formdata = formdef.data_class()()
formdata.data = {'0': 'félà'}
formdata.store()
context = CompatibilityNamesDict({'form': LazyFormData(formdata)})
tmpl = Template('{{ form_var_foo|unaccent }}')
assert tmpl.render(context) == 'fela'
formdata.data = {'0': None}
formdata.store()
assert tmpl.render(context) == ''
def test_template_encoding():
# django

View File

@ -140,6 +140,7 @@ def urljoin(base, path=None):
@register.filter
def unaccent(value):
value = unlazy(value)
if not value:
return ''
return force_text(unicodedata.normalize('NFKD', value).encode('ascii', 'ignore'))