Skip to content

Commit a8d295d

Browse files
make phonenumbers and django-phonenumber-field optional
1 parent ebd1d78 commit a8d295d

File tree

4 files changed

+38
-23
lines changed

4 files changed

+38
-23
lines changed

setup.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,15 @@
1515
'Django>=3.2',
1616
'django_otp>=0.8.0',
1717
'qrcode>=4.0.0,<7.99',
18-
'django-phonenumber-field>=1.1.0,<7',
1918
'django-formtools',
2019
],
2120
extras_require={
2221
'call': ['twilio>=6.0'],
2322
'sms': ['twilio>=6.0'],
2423
'webauthn': ['webauthn>=1.6.0,<1.99', 'pydantic>=1.9.0,<1.99'],
2524
'yubikey': ['django-otp-yubikey'],
26-
'phonenumbers': ['phonenumbers>=7.0.9,<8.99'],
27-
'phonenumberslite': ['phonenumberslite>=7.0.9,<8.99'],
25+
'phonenumbers': ['django-phonenumber-field>=1.1.0,<7', 'phonenumbers>=7.0.9,<8.99'],
26+
'phonenumberslite': ['django-phonenumber-field>=1.1.0,<7', 'phonenumberslite>=7.0.9,<8.99'],
2827
},
2928
include_package_data=True,
3029
classifiers=[

two_factor/migrations/0003_auto_20150817_1733.py

+18-10
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
import logging
22

3-
import phonenumbers
3+
from django.conf import settings
44
from django.db import migrations
5-
from phonenumber_field.modelfields import PhoneNumberField
5+
6+
if 'two_factor.plugins.phonenumber' in settings.INSTALLED_APPS:
7+
from phonenumber_field.modelfields import PhoneNumberField
68

79
logger = logging.getLogger(__name__)
810

911

1012
def migrate_phone_numbers(apps, schema_editor):
13+
import phonenumbers
14+
1115
PhoneDevice = apps.get_model("two_factor", "PhoneDevice")
1216
for device in PhoneDevice.objects.all():
1317
try:
@@ -29,11 +33,15 @@ class Migration(migrations.Migration):
2933
('two_factor', '0002_auto_20150110_0810'),
3034
]
3135

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-
]
36+
if 'two_factor.plugins.phonenumber' in settings.INSTALLED_APPS:
37+
operations = [
38+
migrations.RunPython(migrate_phone_numbers, reverse_code=migrations.RunPython.noop),
39+
migrations.AlterField(
40+
model_name='phonedevice',
41+
name='number',
42+
field=PhoneNumberField(max_length=16, verbose_name='number'),
43+
),
44+
]
45+
46+
else:
47+
operations = []
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
11
# Generated by Django 1.9.2 on 2016-02-05 17:27
2-
3-
import phonenumber_field.modelfields
2+
from django.conf import settings
43
from django.db import migrations
54

5+
if 'two_factor.plugins.phonenumber' in settings.INSTALLED_APPS:
6+
import phonenumber_field.modelfields
7+
68

79
class Migration(migrations.Migration):
810

911
dependencies = [
1012
('two_factor', '0003_auto_20150817_1733'),
1113
]
1214

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

two_factor/plugins/phonenumber/utils.py

+4-1
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)