Projet

Général

Profil

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

A. Berriot, 18 juillet 2022 15:15

Télécharger (3,42 ko)

Voir les différences:

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

 tests/test_templates.py           | 29 +++++++++++++++++++++++++++++
 wcs/qommon/templatetags/qommon.py | 29 +++++++++++++++++++++++++++++
 2 files changed, 58 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
    assert t.render({'number': '+33 (0)6 23 45 67 (0)89'}) == 'False'
817

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

  
827
    # droms
828
    assert t.render({'number': '+262 7 23 45 67 89'}) == 'True'
829
    assert t.render({'number': '00 508 7 23 45 67 89'}) == 'True'
830
    assert t.render({'number': '00 590 7 23 45 67 89'}) == 'True'
831
    assert t.render({'number': '+594 7 23 45 67 89'}) == 'True'
832
    assert t.render({'number': '+596 7 23 45 67 89'}) == 'True'
833

  
834

  
806 835
@pytest.mark.skipif('langdetect is None')
807 836
def test_language_detect():
808 837
    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
    r'^'
884
    # Dialing code for metropole or DROMS
885
    r'(?:(?:\+|00)(33|262|508|590|594|596)(\(0\))?|0)'
886
    # First number (6 and 7)
887
    r'[67]'
888
    # End of the phone number
889
    r'(\d{2}){4}'
890
    r'$'
891
)
892

  
893

  
894
@register.filter(is_safe=True)
895
def is_french_mobile_phone_number(value):
896
    value = unlazy(value)
897

  
898
    if not value:
899
        return False
900

  
901
    value = str(value)
902

  
903
    # for edge cases involving parenthesis that would make the regex way
904
    # more complex
905
    value = value.strip().replace(' ', '').replace('.', '').replace('-', '')
906

  
907
    return bool(re.match(FRENCH_MOBILE_PHONE_NUMBER_REGEX, value))
908

  
909

  
881 910
@register.filter
882 911
def is_empty(value):
883 912
    from wcs.variables import LazyFormDefObjectsManager, LazyList
884
-