- 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>
192 lines
5.4 KiB
Python
192 lines
5.4 KiB
Python
from django.contrib import admin
|
|
|
|
from ..models import BankTransaction, Rentmeister, StiftungsKonto, Verwaltungskosten
|
|
|
|
|
|
@admin.register(Rentmeister)
|
|
class RentmeisterAdmin(admin.ModelAdmin):
|
|
list_display = [
|
|
"__str__",
|
|
"email",
|
|
"telefon",
|
|
"seit_datum",
|
|
"bis_datum",
|
|
"aktiv",
|
|
"monatliche_verguetung",
|
|
]
|
|
list_filter = ["aktiv", "seit_datum", "anrede"]
|
|
search_fields = ["vorname", "nachname", "email", "telefon", "ort"]
|
|
ordering = ["nachname", "vorname"]
|
|
readonly_fields = ["id", "erstellt_am", "aktualisiert_am"]
|
|
|
|
fieldsets = (
|
|
("Persönliche Daten", {"fields": ("anrede", "vorname", "nachname", "titel")}),
|
|
(
|
|
"Kontaktdaten",
|
|
{"fields": ("email", "telefon", "mobil", "strasse", "plz", "ort")},
|
|
),
|
|
(
|
|
"Bankdaten",
|
|
{"fields": ("iban", "bic", "bank_name"), "classes": ["collapse"]},
|
|
),
|
|
(
|
|
"Stiftungsdaten",
|
|
{
|
|
"fields": (
|
|
"seit_datum",
|
|
"bis_datum",
|
|
"aktiv",
|
|
"monatliche_verguetung",
|
|
"km_pauschale",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
"Zusätzliche Informationen",
|
|
{"fields": ("notizen",), "classes": ["collapse"]},
|
|
),
|
|
(
|
|
"System",
|
|
{
|
|
"fields": ("id", "erstellt_am", "aktualisiert_am"),
|
|
"classes": ["collapse"],
|
|
},
|
|
),
|
|
)
|
|
|
|
|
|
@admin.register(StiftungsKonto)
|
|
class StiftungsKontoAdmin(admin.ModelAdmin):
|
|
list_display = [
|
|
"kontoname",
|
|
"bank_name",
|
|
"konto_typ",
|
|
"saldo",
|
|
"saldo_datum",
|
|
"aktiv",
|
|
]
|
|
list_filter = ["konto_typ", "aktiv", "bank_name"]
|
|
search_fields = ["kontoname", "bank_name", "iban"]
|
|
ordering = ["bank_name", "kontoname"]
|
|
readonly_fields = ["id", "erstellt_am", "aktualisiert_am"]
|
|
|
|
fieldsets = (
|
|
(
|
|
"Kontodaten",
|
|
{"fields": ("kontoname", "bank_name", "iban", "bic", "konto_typ")},
|
|
),
|
|
(
|
|
"Finanzdaten",
|
|
{"fields": ("saldo", "saldo_datum", "zinssatz", "laufzeit_bis")},
|
|
),
|
|
("Status", {"fields": ("aktiv", "notizen")}),
|
|
(
|
|
"System",
|
|
{
|
|
"fields": ("id", "erstellt_am", "aktualisiert_am"),
|
|
"classes": ["collapse"],
|
|
},
|
|
),
|
|
)
|
|
|
|
|
|
@admin.register(Verwaltungskosten)
|
|
class VerwaltungskostenAdmin(admin.ModelAdmin):
|
|
list_display = [
|
|
"bezeichnung",
|
|
"kategorie",
|
|
"betrag",
|
|
"datum",
|
|
"status",
|
|
"rentmeister",
|
|
"konto",
|
|
]
|
|
list_filter = ["kategorie", "status", "datum", "rentmeister", "konto"]
|
|
search_fields = [
|
|
"bezeichnung",
|
|
"lieferant_firma",
|
|
"rechnungsnummer",
|
|
"beschreibung",
|
|
]
|
|
ordering = ["-datum", "-erstellt_am"]
|
|
readonly_fields = ["id", "erstellt_am", "aktualisiert_am"]
|
|
date_hierarchy = "datum"
|
|
|
|
fieldsets = (
|
|
(
|
|
"Grunddaten",
|
|
{"fields": ("bezeichnung", "kategorie", "betrag", "datum", "status")},
|
|
),
|
|
("Zuordnung", {"fields": ("rentmeister", "konto")}),
|
|
(
|
|
"Lieferant/Rechnung",
|
|
{"fields": ("lieferant_firma", "rechnungsnummer"), "classes": ["collapse"]},
|
|
),
|
|
(
|
|
"Fahrtkosten",
|
|
{
|
|
"fields": ("km_anzahl", "km_satz", "von_ort", "nach_ort", "zweck"),
|
|
"classes": ["collapse"],
|
|
"description": 'Nur für Kategorie "Fahrtkosten" relevant',
|
|
},
|
|
),
|
|
(
|
|
"Zusätzliche Informationen",
|
|
{"fields": ("beschreibung", "notizen"), "classes": ["collapse"]},
|
|
),
|
|
(
|
|
"System",
|
|
{
|
|
"fields": ("id", "erstellt_am", "aktualisiert_am"),
|
|
"classes": ["collapse"],
|
|
},
|
|
),
|
|
)
|
|
|
|
|
|
@admin.register(BankTransaction)
|
|
class BankTransactionAdmin(admin.ModelAdmin):
|
|
list_display = [
|
|
"datum",
|
|
"konto",
|
|
"betrag",
|
|
"empfaenger_zahlungspflichtiger",
|
|
"transaction_type",
|
|
"status",
|
|
"verwaltungskosten",
|
|
]
|
|
list_filter = ["konto", "transaction_type", "status", "datum", "importiert_am"]
|
|
search_fields = ["verwendungszweck", "empfaenger_zahlungspflichtiger", "referenz"]
|
|
readonly_fields = ["importiert_am", "import_datei"]
|
|
ordering = ["-datum", "-importiert_am"]
|
|
|
|
fieldsets = (
|
|
("Basisdaten", {"fields": ("konto", "datum", "valuta", "betrag", "waehrung")}),
|
|
(
|
|
"Transaktionsdetails",
|
|
{
|
|
"fields": (
|
|
"verwendungszweck",
|
|
"empfaenger_zahlungspflichtiger",
|
|
"iban_gegenpartei",
|
|
"bic_gegenpartei",
|
|
"referenz",
|
|
"transaction_type",
|
|
)
|
|
},
|
|
),
|
|
("Verwaltung", {"fields": ("status", "kommentare", "verwaltungskosten")}),
|
|
(
|
|
"Import-Information",
|
|
{
|
|
"fields": ("import_datei", "importiert_am", "saldo_nach_buchung"),
|
|
"classes": ("collapse",),
|
|
},
|
|
),
|
|
)
|
|
|
|
def get_queryset(self, request):
|
|
return (
|
|
super().get_queryset(request).select_related("konto", "verwaltungskosten")
|
|
)
|