- forms.py → forms/ Package (8 Domänen: destinataere, land, finanzen, foerderung, dokumente, veranstaltung, system, geschichte) - admin.py → admin/ Package (7 Domänen, alle 22 @admin.register dekoriert) - views.py (8845 Zeilen) → views/ Package (10 Domänen: dashboard, destinataere, land, paechter, finanzen, foerderung, dokumente, unterstuetzungen, veranstaltung, geschichte, system) - __init__.py in jedem Package re-exportiert alle Symbole für Rückwärtskompatibilität - urls.py bleibt unverändert (funktioniert durch Re-Exports) - Django system check: 0 Fehler, alle URL-Auflösungen funktionieren Keine funktionalen Änderungen – reine Strukturverbesserung für Vision 2026. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
74 lines
2.7 KiB
Python
74 lines
2.7 KiB
Python
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",
|
|
}
|