class EnrollForm(forms.Form): students = forms.ModelMultipleChoiceField( queryset=Student.objects.all(), widget = forms.SelectMultiple(attrs={'class':'multiselect',}), required=False) cohorts = forms.ModelMultipleChoiceField( queryset=Cohort.objects.all(), widget = forms.SelectMultiple(attrs={'class': 'field picker', 'style': 'min-height: 400px;'}), required=False)
class TestForm(forms.ModelForm): class Meta: model = Test fields = ('name', 'school_year', 'teachers', 'department', 'marking_period', 'courses') widgets = { 'name': forms.TextInput, 'school_year': forms.Select, 'department': forms.Select, 'marking_period': forms.Select, 'course': forms.SelectMultiple(attrs={ 'size': '10', 'style': 'height:100%;' }), } teachers = AutoCompleteSelectMultipleField('faculty', required=True, help_text="") students = forms.ModelMultipleChoiceField( queryset=Student.objects.filter(is_active=True), widget=forms.SelectMultiple(attrs={'class': 'multiselect'}), required=False) quick_number_questions = forms.IntegerField(max_value=100, min_value=1, required=False, label="Number of Questions") quick_number_answers = forms.IntegerField(max_value=6, min_value=2, required=False, label="Number of Answers", help_text="Per Question") enroll_cohorts = forms.ModelMultipleChoiceField( queryset=Cohort.objects.all(), required=False, widget=forms.SelectMultiple(attrs={ 'size': '10', 'style': 'height:100%;' })) def save(self, *args, **kwargs): instance = super(TestForm, self).save(*args, **kwargs) instance.enroll_students(self.cleaned_data['students']) return instance
class GenericSplitConfig(forms.Form): def __init__(self, *args, **kwargs): super(GenericSplitConfig, self).__init__(*args) json_tables = RestClient.get_hbase_tables() self.fields["tables_selection"].choices = [ [table['tableName'], table['tableName']] for table in json_tables ] has_config = True title = "Generic Split Configuration" panel_info_template = "snippets/panel_info_generic_split.html" number_of_splits = forms.IntegerField(widget=NumberSlider, label='Number of splits', required=False, max_value=30) tables_selection = forms.MultipleChoiceField( widget=forms.SelectMultiple(attrs={'size': '10'}), label='Tables selection', required=False) def get_json_config(self): json_config = dict() json_config['number_of_splits'] = self.cleaned_data['number_of_splits'] json_config['tables_selection'] = self.cleaned_data['tables_selection'] return json_config
class OptaPlannerBalancingConfig(forms.Form): def __init__(self, *args, **kwargs): super(OptaPlannerBalancingConfig, self).__init__(*args) json_tables = RestClient.get_hbase_tables() self.fields["tables_selection"].choices = [ [table['tableName'], table['tableName']] for table in json_tables ] has_config = True title = "Opta Planner Balancing Configuration" panel_info_template = "snippets/panel_info_optaplanner_balancing.html" timeout = forms.IntegerField( widget=NumberSlider, label='Time in seconds to explore the space of solutions', required=False, max_value=240) move_max = forms.IntegerField( widget=NumberSlider, label='Maximum number of moves (hard constraint)', required=False, max_value=240) move_weight = forms.IntegerField(widget=NumberSlider, label='Move weight (soft constraint)', required=False, max_value=100) size_weight = forms.IntegerField(widget=NumberSlider, label='Size weight (soft constraint)', required=False, max_value=100) read_weight = forms.IntegerField( widget=NumberSlider, label='Read requests weight (soft constraint)', required=False, max_value=100) write_weight = forms.IntegerField( widget=NumberSlider, label='Write requests weight (soft constraint)', required=False, max_value=100) tables_selection = forms.MultipleChoiceField( widget=forms.SelectMultiple(attrs={'size': '10'}), label='Tables selection', required=True) def get_json_config(self): if len(self.cleaned_data['tables_selection']) == 0: raise forms.ValidationError("You must select at least one table!") json_config = dict() json_config['timeout'] = self.cleaned_data['timeout'] json_config['move_max'] = self.cleaned_data['move_max'] json_config['move_weight'] = self.cleaned_data['move_weight'] json_config['size_weight'] = self.cleaned_data['size_weight'] json_config['read_weight'] = self.cleaned_data['read_weight'] json_config['write_weight'] = self.cleaned_data['write_weight'] json_config['tables_selection'] = self.cleaned_data['tables_selection'] return json_config
class GradebookFilterForm(forms.Form): cohort = forms.ModelChoiceField( queryset=None, widget=forms.Select( attrs={'onchange': 'submit_filter_form(this.form)'}), required=False) marking_period = forms.ModelChoiceField( queryset=None, widget=forms.Select( attrs={'onchange': 'submit_filter_form(this.form)'}), required=False) benchmark = forms.ModelMultipleChoiceField( queryset=None, required=False, widget=forms.SelectMultiple(attrs={'class': 'simple_multiselect'})) category = forms.ModelChoiceField( queryset=None, widget=forms.Select( attrs={'onchange': 'submit_filter_form(this.form)'}), required=False) assignment_type = forms.ModelChoiceField( queryset=None, widget=forms.Select( attrs={'onchange': 'submit_filter_form(this.form)'}), required=False) name = forms.CharField(required=False) date_begin = forms.DateField( required=False, widget=forms.DateInput(attrs={'placeholder': 'Later than'}), validators=settings.DATE_VALIDATORS) date_end = forms.DateField( required=False, widget=forms.DateInput(attrs={'placeholder': 'Earlier than'}), validators=settings.DATE_VALIDATORS) def update_querysets(self, course_section): self.fields['cohort'].queryset = Cohort.objects.filter( Q(percoursesectioncohort=None, student__coursesection=course_section) | Q(percoursesectioncohort__coursesection=course_section) ).distinct().order_by('name') self.fields['marking_period'].queryset = MarkingPeriod.objects.filter( coursesection=course_section).distinct() self.fields['benchmark'].queryset = Benchmark.objects.filter( item__course_section=course_section).distinct() self.fields[ 'assignment_type'].queryset = AssignmentType.objects.filter( item__course_section=course_section).distinct() self.fields['category'].queryset = Category.objects.filter( item__course_section=course_section).distinct()
class Meta: model = Test fields = ('name', 'school_year', 'teachers', 'department', 'marking_period', 'course_sections') widgets = { 'name': forms.TextInput, 'school_year': forms.Select, 'department': forms.Select, 'marking_period': forms.Select, 'course_section': forms.SelectMultiple(attrs={ 'size': '10', 'style': 'height:100%;' }), }
class TestForm(forms.ModelForm): class Meta: model = Test fields = ('name', 'school_year', 'teachers', 'department', 'marking_period', 'courses') teachers = AutoCompleteSelectMultipleField('faculty', required=True, help_text="") students = forms.ModelMultipleChoiceField( queryset=Student.objects.filter(inactive=False), widget=forms.SelectMultiple(attrs={'class': 'multiselect'}), required=False) quick_number_questions = forms.IntegerField(max_value=100, min_value=1, required=False) quick_number_answers = forms.IntegerField(max_value=6, min_value=2, required=False) def save(self, *args, **kwargs): instance = super(TestForm, self).save(*args, **kwargs) instance.enroll_students(self.cleaned_data['students']) return instance
def test_is_multiple(self): """`is_multiple` detects a SelectMultiple widget.""" f = self.form() f.fields["level"].widget = forms.SelectMultiple() self.assertTrue(self.mtforms.is_multiple(f["level"]))