Skip to content

Commit aef27f4

Browse files
billyehcodingjoe
authored andcommitted
Add option to exclude the Select2 library from form media (#484)
1 parent f31beec commit aef27f4

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

django_select2/conf.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ class Select2Conf(AppConf):
6262
6363
SELECT2_JS = 'assets/js/select2.min.js'
6464
65+
If you provide your own JS and would not like Django-Select2 to load any, change
66+
this setting to a blank string like so::
67+
68+
SELECT2_JS = ''
69+
6570
.. tip:: Change this setting to a local asset in your development environment to
6671
develop without an Internet connection.
6772
"""
@@ -75,6 +80,11 @@ class Select2Conf(AppConf):
7580
7681
SELECT2_CSS = 'assets/css/select2.css'
7782
83+
If you provide your own CSS and would not like Django-Select2 to load any, change
84+
this setting to a blank string like so::
85+
86+
SELECT2_CSS = ''
87+
7888
.. tip:: Change this setting to a local asset in your development environment to
7989
develop without an Internet connection.
8090
"""

django_select2/forms.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ def _get_media(self):
100100
"""
101101
lang = get_language()
102102
i18n_name = None
103+
select2_js = (settings.SELECT2_JS,) if settings.SELECT2_JS else ()
104+
select2_css = (settings.SELECT2_CSS,) if settings.SELECT2_CSS else ()
105+
103106
try:
104107
from django.contrib.admin.widgets import SELECT2_TRANSLATIONS
105108
i18n_name = SELECT2_TRANSLATIONS.get(lang)
@@ -116,8 +119,8 @@ def _get_media(self):
116119
i18n_file = ('%s/%s.js' % (settings.SELECT2_I18N_PATH, i18n_name),) if i18n_name else ()
117120

118121
return forms.Media(
119-
js=(settings.SELECT2_JS,) + i18n_file + ('django_select2/django_select2.js',),
120-
css={'screen': (settings.SELECT2_CSS,)}
122+
js=select2_js + i18n_file + ('django_select2/django_select2.js',),
123+
css={'screen': select2_css}
121124
)
122125

123126
media = property(_get_media)

tests/test_forms.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,24 @@ def test_js_setting(self, settings):
161161
assert 'alternate.js' in result
162162
assert 'django_select2/django_select2.js' in result
163163

164+
def test_empty_js_setting(self, settings):
165+
settings.SELECT2_JS = ''
166+
sut = Select2Widget()
167+
result = sut.media.render()
168+
assert 'django_select2/django_select2.js' in result
169+
164170
def test_css_setting(self, settings):
165171
settings.SELECT2_CSS = 'alternate.css'
166172
sut = Select2Widget()
167173
result = sut.media.render()
168174
assert 'alternate.css' in result
169175

176+
def test_empty_css_setting(self, settings):
177+
settings.SELECT2_CSS = ''
178+
sut = Select2Widget()
179+
result = sut.media.render()
180+
assert '.css' not in result
181+
170182

171183
class TestHeavySelect2Mixin(TestSelect2Mixin):
172184
url = reverse('heavy_select2_widget')

0 commit comments

Comments
 (0)