0009-qommon-misc-add-local-phone-number-representation-ut.patch
tests/test_misc.py | ||
---|---|---|
30 | 30 |
parse_isotime, |
31 | 31 |
simplify, |
32 | 32 |
try_e164_format, |
33 |
try_local_number, |
|
33 | 34 |
validate_phone_fr, |
34 | 35 |
) |
35 | 36 |
from wcs.scripts import Script |
... | ... | |
653 | 654 |
assert try_e164_format('0123456789') == '+33123456789' |
654 | 655 |
assert try_e164_format('+33123456789') == '+33123456789' |
655 | 656 |
assert try_e164_format('1234559') == '1234559' |
657 | ||
658 | ||
659 |
def test_try_local_number(): |
|
660 |
assert try_local_number('+33123456789') == '01 23 45 67 89' |
|
661 |
assert try_local_number('+590690000102') == '0690 00 01 02' |
|
662 |
assert try_local_number('+32123456789') == '+32123456789' |
wcs/qommon/misc.py | ||
---|---|---|
1252 | 1252 | |
1253 | 1253 | |
1254 | 1254 |
def try_e164_format(phone): |
1255 |
return try_phone_format(phone, number_format='international') |
|
1256 | ||
1257 | ||
1258 |
def try_local_number(phone): |
|
1259 |
return try_phone_format(phone, number_format='local') |
|
1260 | ||
1261 | ||
1262 |
def try_phone_format(phone, number_format=None): |
|
1255 | 1263 |
default_country_code = settings.DEFAULT_COUNTRY_CODE |
1256 | 1264 |
pn = None |
1265 | ||
1266 |
if number_format == 'local': |
|
1267 |
pn_format = phonenumbers.PhoneNumberFormat.NATIONAL |
|
1268 |
elif number_format == 'international': |
|
1269 |
pn_format = phonenumbers.PhoneNumberFormat.E164 |
|
1270 |
else: |
|
1271 |
return phone |
|
1272 | ||
1257 | 1273 |
try: |
1258 | 1274 |
pn = phonenumbers.parse(phone) |
1259 | 1275 |
except phonenumbers.NumberParseException: |
... | ... | |
1262 | 1278 |
except phonenumbers.NumberParseException: |
1263 | 1279 |
return phone |
1264 | 1280 |
if phonenumbers.is_valid_number(pn): |
1265 |
return phonenumbers.format_number(pn, phonenumbers.PhoneNumberFormat.E164)
|
|
1281 |
return phonenumbers.format_number(pn, pn_format)
|
|
1266 | 1282 |
else: |
1267 | 1283 |
return phone |
1268 |
- |