def __init__(self, *args, **kwargs):
veranstalter_queryset = kwargs.pop('all_veranstalter', None)
super(VeranstaltungBasisdatenForm, self).__init__(*args, **kwargs)
# Schränke QuerySet nur auf den Veranstalter ein
self.fields['verantwortlich'].queryset = veranstalter_queryset
self.fields['ergebnis_empfaenger'].queryset = veranstalter_queryset
# Keine negative Anzahl möglich
self.fields['anzahl'] = forms.IntegerField(min_value=1)
# Nutze ein Widget bei dem nur das jahr des letzten Auswertungstermins angegeben werden kann
years_tuple = kwargs['instance'].semester.auswertungstermin_years()
self.fields['auswertungstermin'].widget = widgets.SelectDateWidget(years=years_tuple)
# Auswertungstermin kann nur gewählt werden wenn es ein Seminar oder Praktikum ist
if kwargs['instance'].typ not in ['se', 'pr']:
del self.fields['auswertungstermin']
# Lösche die Auswahl ob es eine Übung gibt wenn es keine Vorlesung ist
vltypes = ['vu', 'v']
if kwargs['instance'].typ not in vltypes:
del self.fields['typ']
else:
choices = []
for cur in self.fields['typ'].choices:
if cur[0] in vltypes:
choices.append(cur)
self.fields['typ'].choices = choices
# Wenn Evaluation oder Vollerhebung, dann sind alle anderen Felder notwendig
for k, field in list(self.fields.items()):
field.required = True