diff options
| 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 | 
| commit | 04bb7042fada207d17e24214cb5a32177ba10c50 (patch) | |
| tree | 5157e8260af61bc54ab6502e22d9fb972d215bf6 | |
| parent | a4b7b6795ec4bf428ff2bdcfcf677273bb24b6cd (diff) | |
| download | Ishtar-04bb7042fada207d17e24214cb5a32177ba10c50.tar.bz2 Ishtar-04bb7042fada207d17e24214cb5a32177ba10c50.zip | |
Widgets: update select2 usage
| -rw-r--r-- | archaeological_finds/forms.py | 2 | ||||
| -rw-r--r-- | ishtar_common/widgets.py | 24 | 
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): | 
