From 139fcf5cfda437acc0f19429a33403e558014189 Mon Sep 17 00:00:00 2001 From: Stiftung Development Date: Mon, 15 Sep 2025 21:47:30 +0200 Subject: [PATCH] feat: Add LandVerpachtung to Django admin interface - Register LandVerpachtung model in admin for easy production verification - Add comprehensive list display with status, dates, and relationships - Include colored status display and proper fieldsets - Enables verification of Verpachtung functionality in production --- app/stiftung/admin.py | 55 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/app/stiftung/admin.py b/app/stiftung/admin.py index 911780b..3fcd8c3 100644 --- a/app/stiftung/admin.py +++ b/app/stiftung/admin.py @@ -7,7 +7,7 @@ from django.utils.safestring import mark_safe from . import models from .models import (AppConfiguration, AuditLog, BackupJob, BankTransaction, CSVImport, Destinataer, DestinataerUnterstuetzung, - DokumentLink, Foerderung, Land, Paechter, Person, + DokumentLink, Foerderung, Land, LandVerpachtung, Paechter, Person, Rentmeister, StiftungsKonto, UnterstuetzungWiederkehrend, Verwaltungskosten) @@ -304,6 +304,59 @@ class LandAdmin(admin.ModelAdmin): verpachtungsgrad_berechnet.short_description = "Verpachtungsgrad" +@admin.register(LandVerpachtung) +class LandVerpachtungAdmin(admin.ModelAdmin): + list_display = [ + "land", + "paechter", + "pachtpreis_qm", + "laufzeit_von", + "laufzeit_bis", + "status_display", + "erstellt_am", + ] + list_filter = ["status", "laufzeit_von", "laufzeit_bis", "erstellt_am"] + search_fields = ["land__lfd_nr", "land__gemeinde", "paechter__vorname", "paechter__nachname"] + ordering = ["-erstellt_am"] + readonly_fields = ["id", "erstellt_am", "aktualisiert_am"] + + fieldsets = ( + ("Verpachtungsdetails", { + "fields": ("land", "paechter", "pachtpreis_qm", "status") + }), + ("Laufzeit", { + "fields": ("laufzeit_von", "laufzeit_bis", "kuendigungsfrist_monate") + }), + ("Finanziell", { + "fields": ("kaution", "indexierung", "zahlungsintervall") + }), + ("Zusatzinformationen", { + "fields": ("notizen", "besondere_vereinbarungen"), + "classes": ("collapse",) + }), + ("System", { + "fields": ("id", "erstellt_am", "aktualisiert_am"), + "classes": ("collapse",) + }), + ) + + def status_display(self, obj): + colors = { + 'aktiv': 'green', + 'beendet': 'red', + 'geplant': 'orange', + 'gekündigt': 'red' + } + color = colors.get(obj.status, 'black') + return format_html( + '{}', + color, + obj.get_status_display() + ) + + status_display.short_description = "Status" + + @admin.register(DokumentLink) class DokumentLinkAdmin(admin.ModelAdmin): list_display = ["titel", "kontext", "paperless_document_id"]