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 | ||
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 |
# droms |
|
825 |
assert t.render({'number': '+262 7 23 45 67 89'}) == 'True' |
|
826 |
assert t.render({'number': '00 508 7 23 45 67 89'}) == 'True' |
|
827 |
assert t.render({'number': '00 590 7 23 45 67 89'}) == 'True' |
|
828 |
assert t.render({'number': '+594 7 23 45 67 89'}) == 'True' |
|
829 |
assert t.render({'number': '+596 7 23 45 67 89'}) == 'True' |
|
830 | ||
831 | ||
806 | 832 |
@pytest.mark.skipif('langdetect is None') |
807 | 833 |
def test_language_detect(): |
808 | 834 |
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 |
r'(?:(?:\+|00)(33|262|508|590|594|596)|0)' # Dialing code for metropole or DROMS |
|
885 |
r'\s*[67]' # First number (6 and 7) |
|
886 |
r'(?:[\s.-]*\d{2}){4}' # End of the phone number |
|
887 |
r'$' |
|
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 |
- |