summaryrefslogtreecommitdiff
path: root/chimere/main/widgets.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/main/widgets.py')
-rw-r--r--chimere/main/widgets.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/chimere/main/widgets.py b/chimere/main/widgets.py
index e3977a1..62fac92 100644
--- a/chimere/main/widgets.py
+++ b/chimere/main/widgets.py
@@ -294,3 +294,39 @@ class AreaField(forms.MultiValueField):
if not data_list:
return None
return data_list
+
+class MultiSelectWidget(forms.SelectMultiple):
+ class Media:
+ css = {'all': (
+ settings.MEDIA_URL + 'jquery/bsmSelect/css/jquery.bsmselect.css',
+ settings.MEDIA_URL + 'jquery/css/jquery.bsmselect.custom.css',
+ )
+ }
+ js = (
+ settings.MEDIA_URL + 'jquery/jquery-1.4.4.min.js',
+ settings.MEDIA_URL + 'jquery/bsmSelect/js/jquery.bsmselect.js',
+ settings.MEDIA_URL + 'jquery/bsmSelect/js/jquery.bsmselect.compatibility.js',
+ )
+
+ def render(self, name, value, attrs=None):
+ rendered = super(MultiSelectWidget, self).render(name, value, attrs)
+ return mark_safe(rendered + u'''<hr class='spacer'/><script type="text/javascript">
+$("#id_%(name)s").bsmSelect({
+ removeLabel: '<strong>X</strong>',
+ containerClass: 'bsmContainer',
+ listClass: 'bsmList-custom',
+ listItemClass: 'bsmListItem-custom',
+ listItemLabelClass: 'bsmListItemLabel-custom',
+ removeClass: 'bsmListItemRemove-custom'
+});
+</script>''' % {'name':name})
+
+class SelectMultipleField(models.ManyToManyField):
+ '''
+ Set the widget for the category field
+ '''
+ def formfield(self, **keys):
+ self.help_text = ""
+ defaults = {'widget': MultiSelectWidget}
+ keys.update(defaults)
+ return super(SelectMultipleField, self).formfield(**keys)