Projet

Général

Profil

0001-misc-added-is_french_mobile_phone_number-template-ta.patch

A. Berriot, 18 juillet 2022 10:52

Télécharger (2,81 ko)

Voir les différences:

Subject: [PATCH] misc: added is_french_mobile_phone_number template tag
 (#24990)

 tests/test_templates.py           | 19 +++++++++++++++++++
 wcs/qommon/templatetags/qommon.py | 26 ++++++++++++++++++++++++++
 2 files changed, 45 insertions(+)
tests/test_templates.py
803 803
    assert tmpl.render(context) == '01-43-35-01-35'
804 804

  
805 805

  
806
def test_is_french_mobile_phone_number():
807
    t = Template('{{ number|is_french_mobile_phone_number }}')
808

  
809
    assert t.render({'number': '01 23 45 67 8989'}) == 'False'
810
    assert t.render({'number': '0 1 23 45 67 8989'}) == 'False'
811
    assert t.render({'number': '0 1 23 45 67 89'}) == 'False'
812
    assert t.render({'number': '00 33 1 23 45 67 89'}) == 'False'
813
    assert t.render({'number': '+33 1 23 45 67 89'}) == 'False'
814
    assert t.render({'number': '+33 (0)1 23 45 67 89'}) == 'False'
815
    assert t.render({'number': '06 23 45 67 89 89'}) == 'False'
816

  
817
    assert t.render({'number': '06 23 45 67 89'}) == 'True'
818
    assert t.render({'number': '07 23 45 67 89'}) == 'True'
819
    assert t.render({'number': '0 6 23 45 67 89'}) == 'True'
820
    assert t.render({'number': '00 33 6 23 45 67 89'}) == 'True'
821
    assert t.render({'number': '+33 7 23 45 67 89'}) == 'True'
822
    assert t.render({'number': '+33 (0)6 23 45 67 89'}) == 'True'
823

  
824

  
806 825
@pytest.mark.skipif('langdetect is None')
807 826
def test_language_detect():
808 827
    t = Template('{{ plop|language_detect }}')
wcs/qommon/templatetags/qommon.py
20 20
import math
21 21
import os
22 22
import random
23
import re
23 24
import string
24 25
import unicodedata
25 26
import urllib.parse
......
878 879
    return value
879 880

  
880 881

  
882
FRENCH_MOBILE_PHONE_NUMBER_REGEX = re.compile(
883
    '^'
884
    '(?:(?:\+|00)33|0)'  # Dialing code
885
    '\s*[67]'  # First number (6 and 7)
886
    '(?:[\s.-]*\d{2}){4}'  # End of the phone number
887
    '$'
888
)
889

  
890

  
891
@register.filter(is_safe=True)
892
def is_french_mobile_phone_number(value):
893
    value = unlazy(value)
894

  
895
    if not value:
896
        return False
897

  
898
    value = str(value)
899

  
900
    # for edge cases involving parenthesis that would make the regex way
901
    # more complex
902
    value = value.replace(' ', '').replace('(0)', '')
903

  
904
    return bool(re.match(FRENCH_MOBILE_PHONE_NUMBER_REGEX, value))
905

  
906

  
881 907
@register.filter
882 908
def is_empty(value):
883 909
    from wcs.variables import LazyFormDefObjectsManager, LazyList
884
-