from bootstrap_datepicker_plus import DatePickerInput from django import forms from django.forms import ModelForm from .models import Absence, AbsenceReason, FreeDays, Workday, Breaks from users.models import UserFullName from django.forms import HiddenInput 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", "startday_info" : "", "endday_info" : "" } 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'] fields = ['start', 'startday_info', 'end','endday_info', '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()) class UpdateAbsence(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", "confirm_info" : "Begründung zur An- oder Ablehnung", "startday_info" : "", "endday_info" : "" } 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'] fields = ['start', 'startday_info', 'end','endday_info', 'reason', "representator", 'info', 'holidays_normal', 'holidays_rest', 'holidays_normal_next', 'holidays_rest_next', 'confirm_info' ] def __init__(self, *arg, **kwargs): super(UpdateAbsence, 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['confirm_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()) self.fields['holidays_normal'] = forms.FloatField(required=False, widget=forms.HiddenInput()) self.fields['holidays_rest'] = forms.FloatField(required=False, widget=forms.HiddenInput()) self.fields['holidays_normal_next'] = forms.FloatField(required=False, widget=forms.HiddenInput()) self.fields['holidays_rest_next'] = forms.FloatField(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 # UPDATE WORK FORM class UpdateWorkdayForm(forms.ModelForm): class Meta: model = Workday labels = { "start" : "Start", "end" : "Ende", "target" : "Zielarbeitszeit", "freefield" : "Notiz" } fields = [ "start", "end", "target", "freefield" ] widgets = { 'start': DatePickerInput(options={"format":'HH:mm', "locale":'de'}), 'end': DatePickerInput(options={"format":'HH:mm', "locale":'de'}), } def __init__(self, *arg, **kwargs): super(UpdateWorkdayForm, self).__init__(*arg, **kwargs) self.fields['start'].required = True self.fields['end'].required = True # ADD WORKDAY FORM class AddWorkdayForm(forms.ModelForm): class Meta: model = Workday labels = { "start" : "Start", "end" : "Ende", "target" : "Zielarbeitszeit", "freefield" : "Notiz" } fields = [ "start", "end", "target", "freefield" ] widgets = { 'start': DatePickerInput(options={"format":'DD.MM.YYYY HH:mm', "locale":'de'}), 'end': DatePickerInput(options={"format":'DD.MM.YYYY HH:mm', "locale":'de'}), } def __init__(self, *arg, **kwargs): super(AddWorkdayForm, self).__init__(*arg, **kwargs) self.fields['start'].required = True self.fields['end'].required = True # ADD BREAK FORM class AddBreakForm(forms.ModelForm): class Meta: model = Breaks labels = { "start" : "Start", "end" : "Ende" } fields = [ "start", "end" ] widgets = { 'start': DatePickerInput(options={"format":'HH:mm', "locale":'de'}), 'end': DatePickerInput(options={"format":'HH:mm', "locale":'de'}), } def __init__(self, *arg, **kwargs): super(AddBreakForm, self).__init__(*arg, **kwargs) self.fields['start'].required = True self.fields['end'].required = True