|
| 1 | +from django.apps import apps |
1 | 2 | from django.conf import settings |
2 | 3 | from django.contrib.auth.decorators import login_required |
3 | 4 | from django.shortcuts import redirect, resolve_url |
|
7 | 8 | from django_otp import devices_for_user |
8 | 9 | from django_otp.decorators import otp_required |
9 | 10 |
|
10 | | -from two_factor.plugins.phonenumber.utils import ( |
11 | | - backup_phones, get_available_phone_methods, |
12 | | -) |
13 | | - |
14 | 11 | from ..forms import DisableForm |
15 | 12 | from ..utils import default_device |
16 | 13 | from .utils import class_view_decorator |
@@ -41,10 +38,18 @@ def get_context_data(self, **kwargs): |
41 | 38 | 'default_device': default_device(user), |
42 | 39 | 'default_device_type': default_device(user).__class__.__name__, |
43 | 40 | 'backup_tokens': backup_tokens, |
44 | | - 'backup_phones': backup_phones(user), |
45 | | - 'available_phone_methods': get_available_phone_methods(), |
46 | 41 | } |
47 | 42 |
|
| 43 | + if apps.is_installed('two_factor.plugins.phonenumber'): |
| 44 | + from two_factor.plugins.phonenumber.utils import ( |
| 45 | + backup_phones, get_available_phone_methods, |
| 46 | + ) |
| 47 | + |
| 48 | + context.update({ |
| 49 | + 'backup_phones': backup_phones(self.request.user), |
| 50 | + 'available_phone_methods': get_available_phone_methods(), |
| 51 | + }) |
| 52 | + |
48 | 53 | return context |
49 | 54 |
|
50 | 55 |
|
|
0 commit comments