PR pour hotfix 9.36 #343

Closed
fpeters wants to merge 2 commits from hotfix/v9.36 into main
3 changed files with 20 additions and 0 deletions

View File

@ -701,6 +701,7 @@ def variable_test_data(pub):
fields.StringField(id='12', label='float1', varname='value', type='string'),
fields.PasswordField(id='13', label='pwd', varname='pwd'),
fields.EmailField(id='14', label='email', varname='email', type='email'),
fields.ItemField(id='15', label='item', items=['aa', 'bb', 'cc'], type='item', varname='itemfield'),
]
formdef.workflow_roles = {'_receiver': role.id}
formdef.geolocations = {'base': 'Base'}
@ -2043,6 +2044,9 @@ def test_lazy_variables_missing(pub, variable_test_data):
with pytest.raises(KeyError):
assert context['form_var_foo_foo_xxx'] == 'bar'
tmpl = Template('{{form_var_foo_foo_baz_baz|default_if_none:"XXX"}}')
assert tmpl.render(context) == 'XXX'
def test_lazy_variables_length(pub, variable_test_data):
formdef = FormDef.select()[0]
@ -2614,6 +2618,9 @@ def test_lazy_ezt_templates(pub, variable_test_data):
tmpl = Template('[form_user_name_identifier_0]')
assert tmpl.render(context) == pub.user_class.select()[0].name_identifiers[0]
tmpl = Template('[form_var_itemfield]')
assert tmpl.render(context) == ''
def test_lazy_formdata_fields(pub):
formdef = FormDef()

View File

@ -679,6 +679,11 @@ def _get_value(value_ref, ctx):
return str(ob)
if ob is None:
return ''
# specific wcs None lazy value
from ..variables import NoneFieldVar
if isinstance(ob, NoneFieldVar):
return ''
# string or a sequence
return ob

View File

@ -1103,3 +1103,11 @@ def translate(string, context=None):
if string is None:
return None
return get_publisher().translate(string, context=context, register=True)
@register.filter(is_safe=False)
def default_if_none(value, arg):
value = unlazy(value)
if value is None:
return arg
return value