Skip to content

Commit 23137db

Browse files
make phonenumbers and django-phonenumber-field optional
1 parent 13a0f80 commit 23137db

File tree

4 files changed

+42
-23
lines changed

4 files changed

+42
-23
lines changed

setup.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,21 @@
1515
'Django>=3.2',
1616
'django_otp>=0.8.0',
1717
'qrcode>=4.0.0,<7.99',
18-
'django-phonenumber-field<8',
1918
'django-formtools',
2019
],
2120
extras_require={
2221
'call': ['twilio>=6.0'],
2322
'sms': ['twilio>=6.0'],
2423
'webauthn': ['webauthn>=2.0,<2.99'],
2524
'yubikey': ['django-otp-yubikey'],
26-
'phonenumbers': ['phonenumbers>=7.0.9,<8.99'],
27-
'phonenumberslite': ['phonenumberslite>=7.0.9,<8.99'],
25+
'phonenumbers': [
26+
'phonenumbers>=7.0.9,<8.99',
27+
'django-phonenumber-field<8',
28+
],
29+
'phonenumberslite': [
30+
'phonenumberslite>=7.0.9,<8.99',
31+
'django-phonenumber-field<8',
32+
],
2833
# used internally for local development & CI
2934
'tests': [
3035
'coverage',

two_factor/migrations/0003_auto_20150817_1733.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import logging
22

3-
import phonenumbers
3+
from django.apps import apps
44
from django.db import migrations
5-
from phonenumber_field.modelfields import PhoneNumberField
65

76
logger = logging.getLogger(__name__)
87

98

109
def migrate_phone_numbers(apps, schema_editor):
10+
import phonenumbers
11+
1112
PhoneDevice = apps.get_model("two_factor", "PhoneDevice")
1213
for device in PhoneDevice.objects.all():
1314
try:
@@ -29,11 +30,17 @@ class Migration(migrations.Migration):
2930
('two_factor', '0002_auto_20150110_0810'),
3031
]
3132

32-
operations = [
33-
migrations.RunPython(migrate_phone_numbers, reverse_code=migrations.RunPython.noop),
34-
migrations.AlterField(
35-
model_name='phonedevice',
36-
name='number',
37-
field=PhoneNumberField(max_length=16, verbose_name='number'),
38-
),
39-
]
33+
if apps.is_installed('two_factor.plugins.phonenumber'):
34+
from phonenumber_field.modelfields import PhoneNumberField
35+
36+
operations = [
37+
migrations.RunPython(migrate_phone_numbers, reverse_code=migrations.RunPython.noop),
38+
migrations.AlterField(
39+
model_name='phonedevice',
40+
name='number',
41+
field=PhoneNumberField(max_length=16, verbose_name='number'),
42+
),
43+
]
44+
45+
else:
46+
operations = []
Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
# Generated by Django 1.9.2 on 2016-02-05 17:27
2-
3-
import phonenumber_field.modelfields
2+
from django.apps import apps
43
from django.db import migrations
54

65

@@ -10,10 +9,15 @@ class Migration(migrations.Migration):
109
('two_factor', '0003_auto_20150817_1733'),
1110
]
1211

13-
operations = [
14-
migrations.AlterField(
15-
model_name='phonedevice',
16-
name='number',
17-
field=phonenumber_field.modelfields.PhoneNumberField(max_length=128),
18-
),
19-
]
12+
if apps.is_installed('two_factor.plugins.phonenumber'):
13+
import phonenumber_field.modelfields
14+
15+
operations = [
16+
migrations.AlterField(
17+
model_name='phonedevice',
18+
name='number',
19+
field=phonenumber_field.modelfields.PhoneNumberField(max_length=128),
20+
),
21+
]
22+
else:
23+
operations = []

two_factor/plugins/phonenumber/utils.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import re
22

3-
import phonenumbers
43
from django.conf import settings
54
from django.utils.translation import gettext_lazy as _
65

@@ -39,6 +38,8 @@ def mask_phone_number(number):
3938
:param number: str or phonenumber object
4039
:return: str
4140
"""
41+
import phonenumbers
42+
4243
if isinstance(number, phonenumbers.PhoneNumber):
4344
number = format_phone_number(number)
4445
return phone_mask.sub('*', number)
@@ -50,6 +51,8 @@ def format_phone_number(number):
5051
:param number: str or phonenumber object
5152
:return: str
5253
"""
54+
import phonenumbers
55+
5356
if not isinstance(number, phonenumbers.PhoneNumber):
5457
number = phonenumbers.parse(number)
5558
return phonenumbers.format_number(number, phonenumbers.PhoneNumberFormat.INTERNATIONAL)

0 commit comments

Comments
 (0)