from django import forms from ..models import Destinataer, DokumentLink, Foerderung class FoerderungForm(forms.ModelForm): """Form für das Erstellen und Bearbeiten von Förderungen""" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # Add empty option for optional fields self.fields["verwendungsnachweis"].empty_label = ( "--- Kein Dokument verknüpfen ---" ) # Ensure destinataer has proper choices from django.utils import timezone from ..models import Destinataer, DokumentLink self.fields["destinataer"].queryset = Destinataer.objects.all().order_by( "nachname", "vorname" ) self.fields["verwendungsnachweis"].queryset = ( DokumentLink.objects.all().order_by("titel") ) # Set current year as default for new forms if not self.instance.pk: self.fields["jahr"].initial = timezone.now().year class Meta: model = Foerderung fields = [ "destinataer", "jahr", "betrag", "kategorie", "status", "antragsdatum", "entscheidungsdatum", "verwendungsnachweis", "bemerkungen", ] widgets = { "destinataer": forms.Select(attrs={"class": "form-select"}), "jahr": forms.NumberInput(attrs={"class": "form-control"}), "betrag": forms.NumberInput( attrs={"class": "form-control", "step": "0.01"} ), "kategorie": forms.Select(attrs={"class": "form-select"}), "status": forms.Select(attrs={"class": "form-select"}), "antragsdatum": forms.DateInput( attrs={"class": "form-control", "type": "date"} ), "entscheidungsdatum": forms.DateInput( attrs={"class": "form-control", "type": "date"} ), "verwendungsnachweis": forms.Select(attrs={"class": "form-select"}), "bemerkungen": forms.Textarea(attrs={"class": "form-control", "rows": 3}), } labels = { "destinataer": "Destinatär", "verwendungsnachweis": "Verknüpftes Dokument", "bemerkungen": "Bemerkungen/Beschreibung", "antragsdatum": "Antragsdatum", "entscheidungsdatum": "Entscheidungsdatum", } help_texts = { "verwendungsnachweis": "Optionale Verknüpfung zu einem Dokument aus dem Paperless-System", "entscheidungsdatum": "Datum der Bewilligung/Ablehnung (optional)", "bemerkungen": "Zusätzliche Informationen zur Förderung", }