0001-misc-added-is_french_mobile_phone_number-template-ta.patch
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 |
- |