From 8230edb691ba1a5dbb1a30d21a744177d21898f4 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 23 Jul 2019 17:40:14 +0200 Subject: [PATCH 1/2] template filter cleaning numbers (#35013) --- tests/test_templates.py | 12 ++++++++++++ wcs/qommon/templatetags/qommon.py | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/tests/test_templates.py b/tests/test_templates.py index 18f0ea65..b4fd22de 100644 --- a/tests/test_templates.py +++ b/tests/test_templates.py @@ -522,3 +522,15 @@ def test_reproj(): lazy_formdata = LazyFormData(MockFormData()) tmpl = Template('{% with form_geoloc_base|reproj:"EPSG:3946" as c %}{{c.0}}/{{c.1}}{% endwith %}') assert tmpl.render(CompatibilityNamesDict({'form': lazy_formdata})) == '1625337.15483/5422836.71627' + +def test_clean_number(): + tmpl = Template('{{ None|clean_number }}') + assert tmpl.render() == '' + tmpl = Template('{{ True|clean_number }}') + assert tmpl.render() == '' + tmpl = Template('{{ False|clean_number }}') + assert tmpl.render() == '' + tmpl = Template('{{ "a"|clean_number }}') + assert tmpl.render() == '' + tmpl = Template('{{ " 1 23 4 "|clean_number }}') + assert tmpl.render() == '1234' diff --git a/wcs/qommon/templatetags/qommon.py b/wcs/qommon/templatetags/qommon.py index 5178392d..d152af4f 100644 --- a/wcs/qommon/templatetags/qommon.py +++ b/wcs/qommon/templatetags/qommon.py @@ -20,6 +20,7 @@ from decimal import InvalidOperation as DecimalInvalidOperation from decimal import DivisionByZero as DecimalDivisionByZero import hashlib import math +import re import string import random @@ -348,3 +349,13 @@ def reproj(coords, projection_name): proj = pyproj.Proj(init='EPSG:4326') target_proj = pyproj.Proj(init=projection_name) return pyproj.transform(proj, target_proj, coords['lon'], coords['lat']) + +@register.filter +def clean_number(value): + if not value: + return u'' + string_value = unicode(value) + string_value = re.sub(r'\s', '', string_value) + if not string_value.isdigit(): + return u'' + return string_value -- 2.22.0