Skip to content

Commit 7348d1b

Browse files
committed
Make widget media property & fix use_default_init
1 parent dc8c912 commit 7348d1b

File tree

5 files changed

+44
-20
lines changed

5 files changed

+44
-20
lines changed

intl_tel_input/widgets.py

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,28 +12,11 @@
1212
class IntlTelInputWidget(forms.TextInput):
1313
input_type = 'tel'
1414

15-
class Media:
16-
css = {
17-
'all': (
18-
'https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/'
19-
'{version}/css/intlTelInput.css'.format(
20-
version=INTL_TEL_INPUT_VERSION
21-
),
22-
),
23-
}
24-
js = (
25-
'https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/'
26-
'{version}/js/intlTelInput-jquery.min.js'.format(
27-
version=INTL_TEL_INPUT_VERSION
28-
),
29-
)
30-
3115
def __init__(self, attrs=None, allow_dropdown=True,
3216
preferred_countries=['us', 'gb'], default_code='us',
3317
use_default_init=True):
3418

35-
if use_default_init:
36-
self.Media.js += ('intl_tel_input/init.js',)
19+
self.use_default_init = use_default_init
3720

3821
final_attrs = {
3922
'size': '20',
@@ -47,6 +30,30 @@ def __init__(self, attrs=None, allow_dropdown=True,
4730

4831
super(IntlTelInputWidget, self).__init__(attrs=final_attrs)
4932

33+
@property
34+
def media(self):
35+
js = (
36+
'https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/'
37+
'{version}/js/intlTelInput-jquery.min.js'.format(
38+
version=INTL_TEL_INPUT_VERSION
39+
),
40+
)
41+
42+
if self.use_default_init:
43+
js += ('intl_tel_input/init.js',)
44+
45+
return forms.Media(
46+
css={
47+
'all': (
48+
'https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/'
49+
'{version}/css/intlTelInput.css'.format(
50+
version=INTL_TEL_INPUT_VERSION
51+
),
52+
),
53+
},
54+
js=js
55+
)
56+
5057
def render(self, name, value, renderer=None, attrs=None):
5158
if value is None:
5259
value = ''

testapp/forms.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,9 @@ class TelFormAttrs(forms.Form):
1717

1818
class TwoTelForm(TelForm):
1919
tel_number_2 = forms.CharField(widget=IntlTelInputWidget(), required=True)
20+
21+
22+
class TelFormNoInit(forms.Form):
23+
tel_number = forms.CharField(widget=IntlTelInputWidget(
24+
use_default_init=False
25+
))

testapp/tests.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ def test_with_initial(self):
5858
r = self.client.get('/initial-test/')
5959
self.assertIn('value="+81123456789"', r.content.decode('utf-8'))
6060

61+
def test_use_default_init(self):
62+
r = self.client.get('/no-init-test/')
63+
self.assertNotIn('/intl_tel_input/init.js', r.content.decode('utf-8'))
64+
6165

6266
class wait_for_utils_script(object):
6367
def __call__(self, driver):

testapp/urls.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
from django.conf.urls import url
22

3-
from .views import attrs_test, home, initial_test, two_fields_test
3+
from .views import (attrs_test, home, initial_test, no_init_test,
4+
two_fields_test)
45

56
urlpatterns = [
67
url(r'^$', home),
78
url(r'^attrs-test/$', attrs_test),
89
url(r'^initial-test/$', initial_test),
910
url(r'^two-field-test/$', two_fields_test),
11+
url(r'^no-init-test/$', no_init_test)
1012
]

testapp/views.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from django.http import HttpResponseRedirect
22
from django.shortcuts import render
33

4-
from .forms import TelForm, TelFormAttrs, TwoTelForm
4+
from .forms import TelForm, TelFormAttrs, TwoTelForm, TelFormNoInit
55

66

77
def home(request):
@@ -30,3 +30,8 @@ def two_fields_test(request):
3030
else:
3131
form = TwoTelForm()
3232
return render(request, 'home.html', {'form': form})
33+
34+
35+
def no_init_test(request):
36+
form = TelFormNoInit()
37+
return render(request, 'home.html', {'form': form})

0 commit comments

Comments
 (0)