1234567891011121314151617181920212223242526272829303132333435363738394041 |
- from django import forms
- class ColorPickerWidget(forms.TextInput):
- input_type = 'color'
- class ClassifierSelectWidget(forms.CheckboxSelectMultiple):
- template_name = 'wagtailcrx/widgets/checkbox_classifiers.html'
- def optgroups(self, name, value, attrs=None):
- from wagtailcrx.models.snippet_models import Classifier
- classifiers = Classifier.objects.all().select_related()
- groups = []
- has_selected = False
- for index, classifier in enumerate(classifiers):
- subgroup = []
- group_name = classifier.name
- subindex = 0
- choices = []
- for term in classifier.terms.all():
- choices.append((term.pk, term.name))
- groups.append((group_name, subgroup, index))
- for subvalue, sublabel in choices:
- selected = (
- str(subvalue) in value and
- (not has_selected or self.allow_multiple_selected)
- )
- has_selected |= selected
- subgroup.append(self.create_option(
- name, subvalue, sublabel, selected, index,
- subindex=subindex, attrs=attrs,
- ))
- if subindex is not None:
- subindex += 1
- return groups
|