Add option to exclude the Select2 library from form media (#484)

This commit is contained in:
Bill Yeh 2018-06-30 14:58:47 +02:00 committed by Johannes Hoppe
parent f31beec0c4
commit aef27f48df
3 changed files with 27 additions and 2 deletions

View file

@ -62,6 +62,11 @@ class Select2Conf(AppConf):
SELECT2_JS = 'assets/js/select2.min.js'
If you provide your own JS and would not like Django-Select2 to load any, change
this setting to a blank string like so::
SELECT2_JS = ''
.. tip:: Change this setting to a local asset in your development environment to
develop without an Internet connection.
"""
@ -75,6 +80,11 @@ class Select2Conf(AppConf):
SELECT2_CSS = 'assets/css/select2.css'
If you provide your own CSS and would not like Django-Select2 to load any, change
this setting to a blank string like so::
SELECT2_CSS = ''
.. tip:: Change this setting to a local asset in your development environment to
develop without an Internet connection.
"""

View file

@ -100,6 +100,9 @@ class Select2Mixin(object):
"""
lang = get_language()
i18n_name = None
select2_js = (settings.SELECT2_JS,) if settings.SELECT2_JS else ()
select2_css = (settings.SELECT2_CSS,) if settings.SELECT2_CSS else ()
try:
from django.contrib.admin.widgets import SELECT2_TRANSLATIONS
i18n_name = SELECT2_TRANSLATIONS.get(lang)
@ -116,8 +119,8 @@ class Select2Mixin(object):
i18n_file = ('%s/%s.js' % (settings.SELECT2_I18N_PATH, i18n_name),) if i18n_name else ()
return forms.Media(
js=(settings.SELECT2_JS,) + i18n_file + ('django_select2/django_select2.js',),
css={'screen': (settings.SELECT2_CSS,)}
js=select2_js + i18n_file + ('django_select2/django_select2.js',),
css={'screen': select2_css}
)
media = property(_get_media)

View file

@ -161,12 +161,24 @@ class TestSelect2MixinSettings(object):
assert 'alternate.js' in result
assert 'django_select2/django_select2.js' in result
def test_empty_js_setting(self, settings):
settings.SELECT2_JS = ''
sut = Select2Widget()
result = sut.media.render()
assert 'django_select2/django_select2.js' in result
def test_css_setting(self, settings):
settings.SELECT2_CSS = 'alternate.css'
sut = Select2Widget()
result = sut.media.render()
assert 'alternate.css' in result
def test_empty_css_setting(self, settings):
settings.SELECT2_CSS = ''
sut = Select2Widget()
result = sut.media.render()
assert '.css' not in result
class TestHeavySelect2Mixin(TestSelect2Mixin):
url = reverse('heavy_select2_widget')