class TrendtimeForm(forms.Form): """ Form to display bank transaction sums with a timeline. """ CHART_LINE = 'line' CHART_BAR = 'bar' CHART_RADAR = 'radar' CHART_TYPES = ( (CHART_LINE, ugettext_lazy('Line')), (CHART_BAR, ugettext_lazy('Bar')), (CHART_RADAR, ugettext_lazy('Radar')), ) chart = forms.ChoiceField(choices=CHART_TYPES, initial=CHART_LINE) GRANULARITY_CHOICES = ( (GRANULARITY_WEEK, ugettext_lazy('Week')), (GRANULARITY_MONTH, ugettext_lazy('Month')), ) granularity = forms.ChoiceField( choices=GRANULARITY_CHOICES, initial=GRANULARITY_MONTH, ) date = forms.DateField(required=True, widget=Datepicker()) reconciled = forms.NullBooleanField(required=False) def __init__(self, *args, **kwargs): super(TrendtimeForm, self).__init__(*args, **kwargs) self.fields['reconciled'].widget.choices[0] = ('1', _('Reconciled?')) self.fields['date'].initial = formats.date_format( datetime.date.today(), 'SHORT_DATE_FORMAT', )
class AllFieldsForm(forms.Form): boolean = forms.BooleanField() char = forms.CharField(max_length=50) choices = forms.ChoiceField(choices=ALPHA_CHOICES) date = forms.DateField() datetime = forms.DateTimeField() decimal = forms.DecimalField(decimal_places=2, max_digits=4) email = forms.EmailField() file_field = forms.FileField() file_path = forms.FilePathField(path='uploads/') float_field = forms.FloatField() generic_ip_address = forms.GenericIPAddressField() image = forms.ImageField() integer = forms.IntegerField() ip_address = forms.IPAddressField() multiple_choices = forms.MultipleChoiceField(choices=ALPHA_CHOICES) null_boolean = forms.NullBooleanField() regex_field = forms.RegexField(regex='^\w+$', js_regex='^[a-zA-Z]+$') slug = forms.SlugField() split_datetime = forms.SplitDateTimeField() time = forms.TimeField() typed_choices = forms.TypedChoiceField(choices=NUMERIC_CHOICES, coerce=int) typed_multiple_choices = forms.TypedMultipleChoiceField( choices=NUMERIC_CHOICES, coerce=int) url = forms.URLField() # GIS fields. if gis_forms: osm_point = gis.PointField( widget=mixin(gis.PointWidget, gis.BaseOsmWidget)) osm_multipoint = gis.MultiPointField( widget=mixin(gis.MultiPointWidget, gis.BaseOsmWidget)) osm_linestring = gis.LineStringField( widget=mixin(gis.LineStringWidget, gis.BaseOsmWidget)) osm_multilinestring = gis.MultiLineStringField( widget=mixin(gis.MultiLineStringWidget, gis.BaseOsmWidget)) osm_polygon = gis.PolygonField( widget=mixin(gis.PolygonWidget, gis.BaseOsmWidget)) osm_multipolygon = gis.MultiPolygonField( widget=mixin(gis.MultiPolygonWidget, gis.BaseOsmWidget)) gmap_point = gis.PointField( widget=mixin(gis.PointWidget, BaseGMapWidget)) gmap_multipoint = gis.MultiPointField( widget=mixin(gis.MultiPointWidget, BaseGMapWidget)) gmap_linestring = gis.LineStringField( widget=mixin(gis.LineStringWidget, BaseGMapWidget)) gmap_multilinestring = gis.MultiLineStringField( widget=mixin(gis.MultiLineStringWidget, BaseGMapWidget)) gmap_polygon = gis.PolygonField( widget=mixin(gis.PolygonWidget, BaseGMapWidget)) gmap_multipolygon = gis.MultiPolygonField( widget=mixin(gis.MultiPolygonWidget, BaseGMapWidget))
class NewAuditeurForm(forms.Form): auditeur = forms.NullBooleanField( label= u"Voullez vous faire une demande de préinscription en tant qu'auditeur libre", widget=forms.Select(choices=(("", "-----"), ("True", "Oui"), ("False", "Non")), attrs={'class': 'required auto'})) def clean_auditeur(self): if self.cleaned_data.get('auditeur', None) is None: raise forms.ValidationError(u'Vous devez choisir') return self.cleaned_data.get('auditeur', None)
class StudentBulkChangeForm(forms.Form): grad_date = forms.DateField(widget=adminwidgets.AdminDateWidget(), required=False, validators=settings.DATE_VALIDATORS) year = forms.ModelChoiceField(queryset=GradeLevel.objects.all(), required=False) individual_education_program = forms.NullBooleanField(required=False) cohort = forms.ModelChoiceField(queryset=Cohort.objects.all(), required=False) cohort_primary = forms.BooleanField(required=False) award = forms.ModelChoiceField(queryset=Award.objects.all(), required=False) award_marking_period = forms.ModelChoiceField( queryset=MarkingPeriod.objects.all(), required=False)
class NBForm(forms.Form): nb = forms.NullBooleanField()
class RatioForm(forms.Form): """ Form to display bank transaction sums grouped by tags. """ SINGLE_CREDIT = 'single_credit' SINGLE_DEBIT = 'single_debit' SUM_CREDIT = 'sum_credit' SUM_DEBIT = 'sum_debit' TYPES = ( (ugettext_lazy('Sum'), ( (SUM_DEBIT, ugettext_lazy('Expenses')), (SUM_CREDIT, ugettext_lazy('Income')), )), (ugettext_lazy('Single'), ( (SINGLE_DEBIT, ugettext_lazy('Expenses')), (SINGLE_CREDIT, ugettext_lazy('Income')), )), ) type = forms.ChoiceField(choices=TYPES, initial=SUM_DEBIT) CHART_DOUGHNUT = 'doughtnut' CHART_PIE = 'pie' CHART_POLAR = 'polar' CHART_TYPES = ( (CHART_DOUGHNUT, ugettext_lazy('Doughnut')), (CHART_PIE, ugettext_lazy('Pie')), (CHART_POLAR, ugettext_lazy('Polar area')), ) chart = forms.ChoiceField( choices=CHART_TYPES, initial=CHART_DOUGHNUT, required=False, ) date_start = forms.DateField( widget=Datepicker(attrs={ 'placeholder': ugettext_lazy('Date start'), }), ) date_end = forms.DateField( widget=Datepicker(attrs={ 'placeholder': ugettext_lazy('Date end'), }), ) reconciled = forms.NullBooleanField(required=False) tags = forms.ModelMultipleChoiceField( queryset=BankTransactionTag.objects.none(), required=False) sum_min = forms.DecimalField( max_digits=10, decimal_places=2, localize=True, required=False, widget=forms.NumberInput(attrs={ 'placeholder': _('Minimum sum'), }), ) sum_max = forms.DecimalField( max_digits=10, decimal_places=2, localize=True, required=False, widget=forms.NumberInput(attrs={ 'placeholder': _('Maximum sum'), }), ) def __init__(self, user, *args, **kwargs): super(RatioForm, self).__init__(*args, **kwargs) self.fields['tags'].queryset = ( BankTransactionTag.objects.get_user_tags_queryset(user)) self.fields['reconciled'].widget.choices[0] = ('1', _('Reconciled?')) def clean(self): cleaned_data = super(RatioForm, self).clean() date_start = cleaned_data.get('date_start') date_end = cleaned_data.get('date_end') if date_start and date_end and date_start > date_end: raise forms.ValidationError( _("Date start could not be greater than date end."), code='date_start_greater', ) sum_min = cleaned_data.get('sum_min', None) sum_max = cleaned_data.get('sum_max', None) if sum_min is not None and sum_max is not None and sum_min > sum_max: raise forms.ValidationError( _("Minimum sum could not be greater than maximum sum."), code='sum_min_greater', ) return cleaned_data