Projet

Général

Profil

0001-manage-lazy-variable-on-decimal-filter-30793.patch

Nicolas Roche, 20 février 2019 17:56

Télécharger (2,18 ko)

Voir les différences:

Subject: [PATCH] manage lazy variable on decimal filter (#30793)

 tests/test_formdata.py            | 18 ++++++++++++++++++
 wcs/qommon/templatetags/qommon.py |  8 ++++++--
 2 files changed, 24 insertions(+), 2 deletions(-)
tests/test_formdata.py
1308 1308
    formdata.data = {'0': time.strptime('2015-05-12', '%Y-%m-%d')}
1309 1309
    formdata.store()
1310 1310
    assert formdef.data_class().get(formdata.id).digest == 'plop  plop'
1311

  
1312
def test_lazy_formdata_decimal_filter(pub):
1313
    formdef = FormDef()
1314
    formdef.name = 'foobar'
1315
    formdef.url_name = 'foobar'
1316
    formdef.fields = [
1317
        fields.StringField(id='0', label='value', varname='value'),
1318
        fields.StringField(id='1', label='arg', varname='arg')
1319
    ]
1320
    formdef.store()
1321
    formdata = formdef.data_class()()
1322
    formdata.data = {'0': '3.14', '1': '3'}
1323
    formdata.store()
1324
    pub.substitutions.feed(formdata)
1325
    for mode in (None, 'lazy'):
1326
        context = pub.substitutions.get_context_variables(mode=mode)
1327
        tmpl = Template('{{ form_var_value |decimal:form_var_arg }}')
1328
        assert tmpl.render(context) == '3.140'
wcs/qommon/templatetags/qommon.py
124 124

  
125 125
@register.filter(is_safe=False)
126 126
def decimal(value, arg=None):
127
    if arg is None:
128
        return parse_decimal(value) or ''
127
    if hasattr(value, 'get_value'):
128
        value = value.get_value()  # unlazy
129 129
    if not isinstance(value, Decimal):
130 130
        value = parse_decimal(value)
131
    if arg is None:
132
        return parse_decimal(value) or ''
133
    if hasattr(arg, 'get_value'):
134
        arg = arg.get_value()  # unlazy
131 135
    return defaultfilters.floatformat(value, arg=arg)
132 136

  
133 137
@register.filter(expects_localtime=True, is_safe=False)
134
-