digitaleagenturnc/timemanagement/forms.py

210 lines
7.1 KiB
Python

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",
"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' ]
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['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"
}
fields = [
"start", "end", "target"
]
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"
}
fields = [
"start", "end", "target"
]
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