from bootstrap_datepicker_plus import DatePickerInput from django import forms from django.forms import ModelForm from .models import Absence, AbsenceReason, FreeDays from users.models import UserFullName class AddAbsence(forms.ModelForm): class Meta: model = Absence labels = { "start" : "Beginn der Abwesenheit", "start_ishalf" : "Halber Tag?", "end" : "Ende der Abwesenheit", "end_ishalf" : "Halber Tag?", "reason" : "Abwesenheitsgrund", "representator" : "Vertreter", "info" : "Begründung" } widgets = { 'start': DatePickerInput(options={"format":'DD.MM.YYYY', "locale":'de'}), 'end': DatePickerInput(options={"format":'DD.MM.YYYY', "locale":'de'}), } fields = ['start', 'start_ishalf', 'end','end_ishalf', 'reason', "representator", 'info'] def __init__(self, *arg, **kwargs): super(AddAbsence, self).__init__(*arg, **kwargs) self.fields['reason'].queryset = AbsenceReason.objects.filter(agency=kwargs['instance'].profile.agency).order_by('-name') self.fields['representator'].queryset = UserFullName.objects.filter(profile__agency=kwargs['instance'].profile.agency) self.fields['info'].widget.attrs['rows'] = 3 self.fields['start'].required = True self.fields['end'].required = True self.fields['reason'].required = True self.fields['nextmonth'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['prevmonth'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['nextyear'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['prevyear'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['activemonth'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['activeyear'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['userid'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) ''' def clean(self): start_date = self.cleaned_data['start'] end_date = self.cleaned_data['end'] if end_date <= start_date: raise forms.ValidationError("Das Ende der Abwesenheit muss am oder nach dem Start der Abwesenheit liegen.") return super(AddAbsence, self).clean() ''' class ConfirmAbsenceForm(forms.ModelForm): class Meta: model = Absence labels = { "confirm_info" : "Begründung zur Annahme/zur Ablehnung" } fields = ['confirm_info'] def __init__(self, *arg, **kwargs): super(ConfirmAbsenceForm, self).__init__(*arg, **kwargs) self.fields['confirm_info'].widget.attrs['rows'] = 3 # NEW USER FORM class AddFreeDayForm(forms.ModelForm): class Meta: model = FreeDays labels = { "day" : "Datum", "name" : "Bezeichnung" } fields = [ "name", "day" ] widgets = { 'day': DatePickerInput(options={"format":'DD.MM.YYYY', "locale":'de'}), } def __init__(self, *arg, **kwargs): super(AddFreeDayForm, self).__init__(*arg, **kwargs) self.fields['name'].required = True self.fields['day'].required = True