Projet

Général

Profil

0001-misc-add-a-decimal-template-tag-27699.patch

Frédéric Péters, 31 octobre 2018 12:06

Télécharger (2,1 ko)

Voir les différences:

Subject: [PATCH] misc: add a |decimal template tag (#27699)

 tests/test_templates.py           |  9 +++++++++
 wcs/qommon/templatetags/qommon.py | 13 +++++++++++++
 2 files changed, 22 insertions(+)
tests/test_templates.py
141 141
def test_variable_unicode_error_handling():
142 142
    tmpl = Template('{{ form_var_éléphant }}')
143 143
    assert tmpl.render() == ''
144

  
145
def test_decimal_templatetag():
146
    tmpl = Template('{{ plop|decimal }}')
147
    assert tmpl.render({'plop': 'toto'}) == ''
148
    assert tmpl.render({'plop': '3.14'}) == '3.14'
149
    assert tmpl.render({'plop': '3,14'}) == '3.14'
150
    assert tmpl.render({'plop': 3.14}) == '3.14'
151
    assert tmpl.render({'plop': 12345.678}) == '12345.678'
152
    assert tmpl.render({'plop': None}) == ''
wcs/qommon/templatetags/qommon.py
15 15
# along with this program; if not, see <http://www.gnu.org/licenses/>.
16 16

  
17 17
import datetime
18
from decimal import Decimal
18 19

  
19 20
from django import template
20 21
from django.template import defaultfilters
......
75 76
        value = parse_date(value)
76 77
    return defaultfilters.date(value, arg=arg)
77 78

  
79
@register.filter(is_safe=True)
80
def decimal(value):
81
    if not value:
82
        return ''
83
    try:
84
        if isinstance(value, basestring):
85
            # replace , by . for French users confort
86
            value = value.replace(',', '.')
87
        return Decimal(value).quantize(Decimal('1.0000')).normalize()
88
    except ArithmeticError:
89
        return ''
90

  
78 91
@register.simple_tag
79 92
def standard_text(text_id):
80 93
    return mark_safe(TextsDirectory.get_html_text(str(text_id)))
81
-