summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-03-27 17:23:42 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-03-27 17:23:42 +0200
commitf19a8dfbd0763a4b994ff77e4105ca54faeff648 (patch)
tree5157e8260af61bc54ab6502e22d9fb972d215bf6
parenta27e466364b4e2409d58f9ab11ed909098fcd790 (diff)
downloadIshtar-f19a8dfbd0763a4b994ff77e4105ca54faeff648.tar.bz2
Ishtar-f19a8dfbd0763a4b994ff77e4105ca54faeff648.zip
Widgets: update select2 usage
-rw-r--r--archaeological_finds/forms.py2
-rw-r--r--ishtar_common/widgets.py24
2 files changed, 20 insertions, 6 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 09d23a3bc..bbc8729d0 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -158,7 +158,7 @@ class FindForm(ManageOldType, forms.Form):
model=models.ObjectType, label=_(u"Object types"), required=False)
preservation_to_consider = forms.MultipleChoiceField(
label=_(u"Preservation type"), choices=[],
- widget=widgets.CheckboxSelectMultiple, required=False)
+ widget=widgets.Select2Multiple, required=False)
integritie = forms.MultipleChoiceField(
label=_(u"Integrity / interest"), choices=[],
widget=widgets.CheckboxSelectMultiple, required=False)
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py
index 3fbf24f29..ffa09e7b4 100644
--- a/ishtar_common/widgets.py
+++ b/ishtar_common/widgets.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
# Copyright (C) 2007 skam <massimo dot scamarcia at gmail.com>
# (http://djangosnippets.org/snippets/233/)
@@ -45,12 +45,19 @@ reverse_lazy = lazy(reverse, unicode)
class Select2Multiple(forms.SelectMultiple):
- class Media:
+
+ @property
+ def media(self):
+ media = super(Select2Multiple, self).media
css = {
'all': ('select2/css/select2.css',)
}
- js = ('select2/js/select2.min.js',
- 'select2/js/init.js')
+ js = ['select2/js/select2.min.js']
+ for lang_code, lang in settings.LANGUAGES:
+ js.append('select2/js/i18n/{}.js'.format(lang_code))
+ media.add_css(css)
+ media.add_js(js)
+ return media
def render(self, name, value, attrs=None, choices=()):
klass = attrs and attrs.get('class') or ''
@@ -58,8 +65,15 @@ class Select2Multiple(forms.SelectMultiple):
if not attrs:
attrs = {}
attrs['class'] = klass
- return super(Select2Multiple, self).render(name, value, attrs,
+ attrs['style'] = "width: 370px"
+ html = super(Select2Multiple, self).render(name, value, attrs,
choices)
+ html += """<script type="text/javascript">
+ $(document).ready(function() {{
+ $("#id_{}").select2();
+ }});</script>
+ """.format(name)
+ return mark_safe(html)
class CheckboxSelectMultiple(CheckboxSelectMultipleBase):