0001-manage-lazy-variable-on-decimal-filter-30793.patch
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 |
- |