from django.db import models from django.forms import ModelForm, DateInput, Form, ChoiceField, RadioSelect from django.core.exceptions import ValidationError from .models import Employee # class EmployeeForm(ModelForm): # class Meta: # model = Employee # fields = '__all__' # widgets = {'firstdate_employment': DateInput(attrs={'type': 'date'}), # 'firstdate_presence': DateInput(attrs={'type': 'date'}),} class DummyForm(ModelForm): class Meta: model = Employee fields = [] class EvaForm(ModelForm): '''this base class provides the required css class for all forms''' required_css_class = 'required' TYPE_CHOICES = {'IN': 'Eintritt', 'CHANGE': 'Veränderung', 'OUT': 'Austritt'} class PersonalForm(EvaForm): # TODO: comment this back in to use implementation of change or exit process # choice = ChoiceField(choices=TYPE_CHOICES.items(), widget=RadioSelect, # label='Welcher Prozess soll angestoßen werden?') class Meta: model = Employee fields = ['firstname', 'lastname', 'department', 'team', ] class WorkingForm(EvaForm): def clean(self): data = self.cleaned_data if data['works_in_gs'] and data['desk'] is None: raise ValidationError('Wer nicht remote arbeitet braucht einen Schreibtisch!') return data class Meta: model = Employee fields = ['firstdate_employment', 'firstdate_presence', 'jobdescription_german', 'jobdescription_english', 'works_in_gs', 'desk',] widgets = {'firstdate_employment': DateInput(attrs={'type': 'date'}), 'firstdate_presence': DateInput(attrs={'type': 'date'}),} class ITForm(EvaForm): def clean(self): data = self.cleaned_data if data['vendor'] == 'MAC' and data['os'] != 'MOS': raise ValidationError('Ein MAC sollte Mac OS installiert haben') return data class Meta: model = Employee fields = [ 'vendor', 'os', 'keyboard', 'screen', 'mobile', 'comment', 'language', 'accounts', 'lists', 'rebu2go' ] class OfficeForm(EvaForm): class Meta: model = Employee fields = ['transponder', 'special', 'post_office_box',] class ChangeForm(EvaForm): class Meta: model = Employee fields = ['firstdate_employment', 'jobdescription_german', 'jobdescription_english', 'desk', 'comment', 'accounts', 'lists', 'transponder'] widgets = {'firstdate_employment': DateInput(attrs={'type': 'date'}),}