From aef27f48df83bd9236a2f232a7b0839baa577607 Mon Sep 17 00:00:00 2001 From: Bill Yeh Date: Sat, 30 Jun 2018 14:58:47 +0200 Subject: [PATCH] Add option to exclude the Select2 library from form media (#484) --- django_select2/conf.py | 10 ++++++++++ django_select2/forms.py | 7 +++++-- tests/test_forms.py | 12 ++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/django_select2/conf.py b/django_select2/conf.py index ef564da..090bae8 100644 --- a/django_select2/conf.py +++ b/django_select2/conf.py @@ -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. """ diff --git a/django_select2/forms.py b/django_select2/forms.py index dbac21b..c56be82 100644 --- a/django_select2/forms.py +++ b/django_select2/forms.py @@ -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) diff --git a/tests/test_forms.py b/tests/test_forms.py index 9010862..d871e44 100644 --- a/tests/test_forms.py +++ b/tests/test_forms.py @@ -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')