diff --git a/tests/test_templates.py b/tests/test_templates.py index b08c94668..8239352ba 100644 --- a/tests/test_templates.py +++ b/tests/test_templates.py @@ -803,6 +803,20 @@ def test_phonenumber_fr(): assert tmpl.render(context) == '01-43-35-01-35' +def test_is_french_mobile_phone_number(): + t = Template('{{ number|is_french_mobile_phone_number }}') + + assert t.render({'number': '01 23 45 67 8989'}) == 'False' + assert t.render({'number': '06 23 45 67 89 89'}) == 'False' + assert t.render({'number': '06 23 45 89'}) == 'False' + assert t.render({'number': '0 6 2 3 45 89'}) == 'False' + + assert t.render({'number': '06 23 45 67 89'}) == 'True' + assert t.render({'number': '07 23 45 67 89'}) == 'True' + assert t.render({'number': '06.23.45.67.89'}) == 'True' + assert t.render({'number': '0 6 2 3 45 67 89'}) == 'True' + + @pytest.mark.skipif('langdetect is None') def test_language_detect(): t = Template('{{ plop|language_detect }}') diff --git a/wcs/qommon/templatetags/qommon.py b/wcs/qommon/templatetags/qommon.py index 2a5264534..f1f99d99e 100644 --- a/wcs/qommon/templatetags/qommon.py +++ b/wcs/qommon/templatetags/qommon.py @@ -53,6 +53,7 @@ from django.utils.timezone import is_naive, make_aware from wcs.qommon import calendar, evalutils, tokens, upload_storage from wcs.qommon.admin.texts import TextsDirectory from wcs.qommon.humantime import seconds2humanduration +from wcs.qommon.misc import validate_phone_fr register = template.Library() @@ -878,6 +879,20 @@ def phonenumber_fr(value, separator=' '): return value +@register.filter(is_safe=True) +def is_french_mobile_phone_number(value): + value = unlazy(value) + + if not value: + return False + + value = value.strip().replace(' ', '') + if not validate_phone_fr(value): + return False + + return value.startswith('06') or value.startswith('07') + + @register.filter def is_empty(value): from wcs.variables import LazyFormDefObjectsManager, LazyList