Remove obsolete dashboard functionality
- Remove dashboard view from urls.py and views.py - Delete dashboard.html template - Remove dashboard navigation link from base.html - Replace all dashboard redirects with home redirects in views.py - Update all breadcrumb links from 'Dashboard' to 'Home' in templates - Update German text from 'Dashboard' to 'Startseite' in auth templates - Update 'Zurück zum Dashboard' links to 'Zurück zur Startseite' The dashboard was redundant with the home page functionality. All navigation now directs users to the main home page instead. System check passes without issues after removal.
This commit is contained in:
@@ -7,8 +7,6 @@ app_name = "stiftung"
|
|||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
# Home - Main landing page after login
|
# Home - Main landing page after login
|
||||||
path("", views.home, name="home"),
|
path("", views.home, name="home"),
|
||||||
# Dashboard (detailed view)
|
|
||||||
path("dashboard/", views.dashboard, name="dashboard"),
|
|
||||||
# CSV Import URLs
|
# CSV Import URLs
|
||||||
path("import/", views.csv_import_list, name="csv_import_list"),
|
path("import/", views.csv_import_list, name="csv_import_list"),
|
||||||
path("import/neu/", views.csv_import_create, name="csv_import_create"),
|
path("import/neu/", views.csv_import_create, name="csv_import_create"),
|
||||||
|
|||||||
@@ -2498,145 +2498,6 @@ def jahresbericht_pdf(request, jahr):
|
|||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
# Dashboard Views
|
|
||||||
@login_required
|
|
||||||
def dashboard(request):
|
|
||||||
# Foerderung statistics (Person statistics removed - was legacy Verpachtung system)
|
|
||||||
total_foerderungen = Foerderung.objects.aggregate(total=Sum("betrag"))["total"] or 0
|
|
||||||
|
|
||||||
# Land statistics
|
|
||||||
total_land = Land.objects.count()
|
|
||||||
active_land = Land.objects.filter(aktiv=True).count()
|
|
||||||
total_flaeche = Land.objects.aggregate(total=Sum("groesse_qm"))["total"] or 0
|
|
||||||
|
|
||||||
# Calculate total verpachtet from active verpachtungen
|
|
||||||
total_verpachtet = (
|
|
||||||
LandVerpachtung.objects.filter(status="aktiv").aggregate(
|
|
||||||
total=Sum("verpachtete_flaeche")
|
|
||||||
)["total"]
|
|
||||||
or 0
|
|
||||||
)
|
|
||||||
|
|
||||||
# Verpachtung statistics
|
|
||||||
total_verpachtungen = LandVerpachtung.objects.count()
|
|
||||||
active_verpachtungen = LandVerpachtung.objects.filter(status="aktiv").count()
|
|
||||||
total_pachtzins = (
|
|
||||||
LandVerpachtung.objects.filter(status="aktiv").aggregate(
|
|
||||||
total=Sum("pachtzins_pauschal")
|
|
||||||
)["total"]
|
|
||||||
or 0
|
|
||||||
)
|
|
||||||
|
|
||||||
# Recent activities
|
|
||||||
recent_lands = Land.objects.order_by("-erstellt_am")[:5]
|
|
||||||
recent_verpachtungen = LandVerpachtung.objects.select_related(
|
|
||||||
"land", "paechter"
|
|
||||||
).order_by("-erstellt_am")[:5]
|
|
||||||
|
|
||||||
# Dokumentenübersicht
|
|
||||||
dokumente_uebersicht = DokumentLink.objects.all().order_by("-id")[:10]
|
|
||||||
|
|
||||||
# Verfügbare Paperless-Dokumente für Dashboard
|
|
||||||
available_paperless_docs = []
|
|
||||||
from stiftung.utils.config import get_paperless_config
|
|
||||||
|
|
||||||
config = get_paperless_config()
|
|
||||||
url = config["api_url"]
|
|
||||||
token = config["api_token"]
|
|
||||||
|
|
||||||
if url and token:
|
|
||||||
try:
|
|
||||||
base_url = url.rstrip("/api") if url.endswith("/api") else url
|
|
||||||
headers = {"Authorization": f"Token {token}"}
|
|
||||||
|
|
||||||
# Alle verfügbaren Dokumente abrufen (mit Paginierung)
|
|
||||||
all_dokumente = []
|
|
||||||
page = 1
|
|
||||||
page_size = 100
|
|
||||||
|
|
||||||
while True:
|
|
||||||
response = requests.get(
|
|
||||||
f"{base_url}/api/documents/?page={page}&page_size={page_size}",
|
|
||||||
headers=headers,
|
|
||||||
timeout=10,
|
|
||||||
)
|
|
||||||
response.raise_for_status()
|
|
||||||
data = response.json()
|
|
||||||
|
|
||||||
all_dokumente.extend(data.get("results", []))
|
|
||||||
|
|
||||||
if not data.get("next"):
|
|
||||||
break
|
|
||||||
page += 1
|
|
||||||
|
|
||||||
# Stiftung-Dokumente filtern
|
|
||||||
for doc in all_dokumente:
|
|
||||||
try:
|
|
||||||
tags = []
|
|
||||||
doc_tags = doc.get("tags", [])
|
|
||||||
|
|
||||||
if isinstance(doc_tags, list):
|
|
||||||
for tag in doc_tags:
|
|
||||||
if isinstance(tag, dict) and "name" in tag:
|
|
||||||
tags.append(tag["name"])
|
|
||||||
elif isinstance(tag, str):
|
|
||||||
tags.append(tag)
|
|
||||||
elif isinstance(tag, int):
|
|
||||||
tags.append(f"Tag_{tag}")
|
|
||||||
elif isinstance(doc_tags, str):
|
|
||||||
tags = [tag.strip() for tag in doc_tags.split(",")]
|
|
||||||
|
|
||||||
if any(
|
|
||||||
tag
|
|
||||||
in [
|
|
||||||
config["destinataere_tag"],
|
|
||||||
config["land_tag"],
|
|
||||||
config["admin_tag"],
|
|
||||||
]
|
|
||||||
for tag in tags
|
|
||||||
):
|
|
||||||
bereits_verknuepft = DokumentLink.objects.filter(
|
|
||||||
paperless_document_id=doc["id"]
|
|
||||||
).exists()
|
|
||||||
|
|
||||||
if not bereits_verknuepft:
|
|
||||||
available_paperless_docs.append(
|
|
||||||
{
|
|
||||||
"id": doc["id"],
|
|
||||||
"title": doc.get("title", f'Dokument {doc["id"]}'),
|
|
||||||
"created_date": doc.get("created_date", ""),
|
|
||||||
"tags": tags,
|
|
||||||
"thumbnail_url": f"{base_url}/api/documents/{doc['id']}/thumb/",
|
|
||||||
"document_url": f"{base_url}/documents/{doc['id']}/",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
except Exception:
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Nach Erstellungsdatum sortieren (neueste zuerst)
|
|
||||||
available_paperless_docs.sort(key=lambda x: x["created_date"], reverse=True)
|
|
||||||
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
|
|
||||||
context = {
|
|
||||||
# Person statistics removed - was legacy Verpachtung system
|
|
||||||
"total_foerderungen": total_foerderungen,
|
|
||||||
"total_land": total_land,
|
|
||||||
"active_land": active_land,
|
|
||||||
"total_flaeche": total_flaeche,
|
|
||||||
"total_verpachtet": total_verpachtet,
|
|
||||||
"total_verpachtungen": total_verpachtungen,
|
|
||||||
"active_verpachtungen": active_verpachtungen,
|
|
||||||
"total_pachtzins": total_pachtzins,
|
|
||||||
"recent_lands": recent_lands,
|
|
||||||
"recent_verpachtungen": recent_verpachtungen,
|
|
||||||
"dokumente_uebersicht": dokumente_uebersicht,
|
|
||||||
"available_paperless_docs": available_paperless_docs,
|
|
||||||
}
|
|
||||||
return render(request, "stiftung/dashboard.html", context)
|
|
||||||
|
|
||||||
|
|
||||||
# API Views for AJAX
|
# API Views for AJAX
|
||||||
@login_required
|
@login_required
|
||||||
def land_stats_api(request):
|
def land_stats_api(request):
|
||||||
@@ -6517,7 +6378,7 @@ def user_login(request):
|
|||||||
from django.contrib.auth.forms import AuthenticationForm
|
from django.contrib.auth.forms import AuthenticationForm
|
||||||
|
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
return redirect("stiftung:dashboard")
|
return redirect("stiftung:home")
|
||||||
|
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
form = AuthenticationForm(request, data=request.POST)
|
form = AuthenticationForm(request, data=request.POST)
|
||||||
@@ -6535,11 +6396,11 @@ def user_login(request):
|
|||||||
|
|
||||||
messages.success(request, f"Willkommen zurück, {user.username}!")
|
messages.success(request, f"Willkommen zurück, {user.username}!")
|
||||||
|
|
||||||
# Redirect to safe next URL path or dashboard
|
# Redirect to safe next URL path or home
|
||||||
next_param = request.GET.get("next") or request.POST.get("next")
|
next_param = request.GET.get("next") or request.POST.get("next")
|
||||||
if next_param and next_param.startswith("/"):
|
if next_param and next_param.startswith("/"):
|
||||||
return redirect(next_param)
|
return redirect(next_param)
|
||||||
return redirect("stiftung:dashboard")
|
return redirect("stiftung:home")
|
||||||
else:
|
else:
|
||||||
messages.error(request, "Ungültige Anmeldedaten.")
|
messages.error(request, "Ungültige Anmeldedaten.")
|
||||||
else:
|
else:
|
||||||
@@ -7248,7 +7109,7 @@ def edit_help_box(request):
|
|||||||
messages.error(
|
messages.error(
|
||||||
request, "Sie haben keine Berechtigung, Hilfsboxen zu bearbeiten."
|
request, "Sie haben keine Berechtigung, Hilfsboxen zu bearbeiten."
|
||||||
)
|
)
|
||||||
return redirect("stiftung:dashboard")
|
return redirect("stiftung:home")
|
||||||
|
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
page_key = request.POST.get("page_key")
|
page_key = request.POST.get("page_key")
|
||||||
@@ -7258,7 +7119,7 @@ def edit_help_box(request):
|
|||||||
|
|
||||||
if not page_key or not title or not content:
|
if not page_key or not title or not content:
|
||||||
messages.error(request, "Alle Felder sind erforderlich.")
|
messages.error(request, "Alle Felder sind erforderlich.")
|
||||||
return redirect(request.META.get("HTTP_REFERER", "stiftung:dashboard"))
|
return redirect(request.META.get("HTTP_REFERER", "stiftung:home"))
|
||||||
|
|
||||||
# Hilfsbox erstellen oder aktualisieren
|
# Hilfsbox erstellen oder aktualisieren
|
||||||
help_box, created = HelpBox.objects.get_or_create(
|
help_box, created = HelpBox.objects.get_or_create(
|
||||||
@@ -7285,7 +7146,7 @@ def edit_help_box(request):
|
|||||||
messages.success(request, f'Hilfsbox "{title}" wurde erstellt.')
|
messages.success(request, f'Hilfsbox "{title}" wurde erstellt.')
|
||||||
|
|
||||||
# Zurück zur vorherigen Seite
|
# Zurück zur vorherigen Seite
|
||||||
return redirect(request.META.get("HTTP_REFERER", "stiftung:dashboard"))
|
return redirect(request.META.get("HTTP_REFERER", "stiftung:home"))
|
||||||
|
|
||||||
# GET Request - Zeige Admin-Übersicht der Hilfsboxen
|
# GET Request - Zeige Admin-Übersicht der Hilfsboxen
|
||||||
help_boxes = HelpBox.objects.all().order_by("page_key", "-updated_at")
|
help_boxes = HelpBox.objects.all().order_by("page_key", "-updated_at")
|
||||||
@@ -7955,7 +7816,7 @@ def two_factor_verify(request):
|
|||||||
if device.verify_token(token):
|
if device.verify_token(token):
|
||||||
request.session['2fa_verified'] = True
|
request.session['2fa_verified'] = True
|
||||||
messages.success(request, "Zwei-Faktor-Authentifizierung erfolgreich.")
|
messages.success(request, "Zwei-Faktor-Authentifizierung erfolgreich.")
|
||||||
return redirect(request.GET.get('next', 'stiftung:dashboard'))
|
return redirect(request.GET.get('next', 'stiftung:home'))
|
||||||
|
|
||||||
# Check static backup tokens
|
# Check static backup tokens
|
||||||
static_devices = StaticDevice.objects.filter(user=request.user)
|
static_devices = StaticDevice.objects.filter(user=request.user)
|
||||||
@@ -7963,7 +7824,7 @@ def two_factor_verify(request):
|
|||||||
if device.verify_token(token):
|
if device.verify_token(token):
|
||||||
request.session['2fa_verified'] = True
|
request.session['2fa_verified'] = True
|
||||||
messages.success(request, "Backup-Code erfolgreich verwendet.")
|
messages.success(request, "Backup-Code erfolgreich verwendet.")
|
||||||
return redirect(request.GET.get('next', 'stiftung:dashboard'))
|
return redirect(request.GET.get('next', 'stiftung:home'))
|
||||||
|
|
||||||
messages.error(request, "Ungültiger Code. Bitte versuchen Sie es erneut.")
|
messages.error(request, "Ungültiger Code. Bitte versuchen Sie es erneut.")
|
||||||
|
|
||||||
@@ -7992,7 +7853,7 @@ def two_factor_disable(request):
|
|||||||
request,
|
request,
|
||||||
"Zwei-Faktor-Authentifizierung wurde erfolgreich deaktiviert."
|
"Zwei-Faktor-Authentifizierung wurde erfolgreich deaktiviert."
|
||||||
)
|
)
|
||||||
return redirect("stiftung:dashboard")
|
return redirect("stiftung:home")
|
||||||
else:
|
else:
|
||||||
messages.error(request, "Ungültiges Passwort.")
|
messages.error(request, "Ungültiges Passwort.")
|
||||||
|
|
||||||
|
|||||||
@@ -528,11 +528,6 @@
|
|||||||
<i class="fas fa-home me-1"></i>Home
|
<i class="fas fa-home me-1"></i>Home
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="{% url 'stiftung:dashboard' %}">
|
|
||||||
<i class="fas fa-tachometer-alt me-1"></i>Dashboard
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<!-- Destinatäre -->
|
<!-- Destinatäre -->
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
|
|||||||
@@ -72,9 +72,9 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="text-center mt-4">
|
<div class="text-center mt-4">
|
||||||
<a href="{% url 'stiftung:dashboard' %}" class="btn btn-primary btn-lg">
|
<a href="{% url 'stiftung:home' %}" class="btn btn-primary btn-lg">
|
||||||
<i class="fas fa-home"></i>
|
<i class="fas fa-home"></i>
|
||||||
Weiter zum Dashboard
|
Weiter zur Startseite
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -133,9 +133,9 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="text-center mt-3">
|
<div class="text-center mt-3">
|
||||||
<a href="{% url 'stiftung:dashboard' %}" class="btn btn-outline-secondary">
|
<a href="{% url 'stiftung:home' %}" class="btn btn-outline-secondary">
|
||||||
<i class="fas fa-arrow-left"></i>
|
<i class="fas fa-arrow-left"></i>
|
||||||
Zurück zum Dashboard
|
Zurück zur Startseite
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
<i class="fas fa-times-circle"></i>
|
<i class="fas fa-times-circle"></i>
|
||||||
Zwei-Faktor-Authentifizierung deaktivieren
|
Zwei-Faktor-Authentifizierung deaktivieren
|
||||||
</button>
|
</button>
|
||||||
<a href="{% url 'stiftung:dashboard' %}" class="btn btn-outline-secondary">
|
<a href="{% url 'stiftung:home' %}" class="btn btn-outline-secondary">
|
||||||
<i class="fas fa-arrow-left"></i>
|
<i class="fas fa-arrow-left"></i>
|
||||||
Abbrechen
|
Abbrechen
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -111,9 +111,9 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="text-center mt-3">
|
<div class="text-center mt-3">
|
||||||
<a href="{% url 'stiftung:dashboard' %}" class="btn btn-outline-secondary">
|
<a href="{% url 'stiftung:home' %}" class="btn btn-outline-secondary">
|
||||||
<i class="fas fa-arrow-left"></i>
|
<i class="fas fa-arrow-left"></i>
|
||||||
Zurück zum Dashboard
|
Zurück zur Startseite
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -79,7 +79,7 @@
|
|||||||
<i class="fas fa-check"></i>
|
<i class="fas fa-check"></i>
|
||||||
Zwei-Faktor-Authentifizierung aktivieren
|
Zwei-Faktor-Authentifizierung aktivieren
|
||||||
</button>
|
</button>
|
||||||
<a href="{% url 'stiftung:dashboard' %}" class="btn btn-outline-secondary">
|
<a href="{% url 'stiftung:home' %}" class="btn btn-outline-secondary">
|
||||||
<i class="fas fa-times"></i>
|
<i class="fas fa-times"></i>
|
||||||
Abbrechen
|
Abbrechen
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -1,400 +0,0 @@
|
|||||||
{% extends 'base.html' %}
|
|
||||||
{% load static %}
|
|
||||||
|
|
||||||
{% block title %}Dashboard - Stiftungsverwaltung{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-12">
|
|
||||||
<h1 class="h3 mb-4">
|
|
||||||
<i class="fas fa-tachometer-alt text-primary me-2"></i>
|
|
||||||
Dashboard - Stiftungsverwaltung
|
|
||||||
</h1>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Statistics Cards -->
|
|
||||||
<div class="row mb-4">
|
|
||||||
<!-- Land Statistics -->
|
|
||||||
<div class="col-xl-3 col-md-6 mb-4">
|
|
||||||
<div class="card border-left-success shadow h-100 py-2">
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="row no-gutters align-items-center">
|
|
||||||
<div class="col mr-2">
|
|
||||||
<div class="text-xs font-weight-bold text-success text-uppercase mb-1">
|
|
||||||
Ländereien
|
|
||||||
</div>
|
|
||||||
<div class="h5 mb-0 font-weight-bold text-gray-800">
|
|
||||||
{{ total_land }}
|
|
||||||
</div>
|
|
||||||
<div class="text-xs text-muted">
|
|
||||||
{{ total_flaeche|floatformat:0 }} qm Gesamtfläche
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-auto">
|
|
||||||
<i class="fas fa-map fa-2x text-gray-300"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Verpachtung Statistics -->
|
|
||||||
<div class="col-xl-3 col-md-6 mb-4">
|
|
||||||
<div class="card border-left-info shadow h-100 py-2">
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="row no-gutters align-items-center">
|
|
||||||
<div class="col mr-2">
|
|
||||||
<div class="text-xs font-weight-bold text-info text-uppercase mb-1">
|
|
||||||
Verpachtungen
|
|
||||||
</div>
|
|
||||||
<div class="h5 mb-0 font-weight-bold text-gray-800">
|
|
||||||
{{ active_verpachtungen }}
|
|
||||||
</div>
|
|
||||||
<div class="text-xs text-muted">
|
|
||||||
{{ total_verpachtet|floatformat:0 }} qm verpachtet
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-auto">
|
|
||||||
<i class="fas fa-handshake fa-2x text-gray-300"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Financial Statistics -->
|
|
||||||
<div class="col-xl-3 col-md-6 mb-4">
|
|
||||||
<div class="card border-left-warning shadow h-100 py-2">
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="row no-gutters align-items-center">
|
|
||||||
<div class="col mr-2">
|
|
||||||
<div class="text-xs font-weight-bold text-warning text-uppercase mb-1">
|
|
||||||
Einnahmen
|
|
||||||
</div>
|
|
||||||
<div class="h5 mb-0 font-weight-bold text-gray-800">
|
|
||||||
€{{ total_pachtzins|floatformat:0 }}
|
|
||||||
</div>
|
|
||||||
<div class="text-xs text-muted">
|
|
||||||
Jährlicher Pachtzins
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-auto">
|
|
||||||
<i class="fas fa-euro-sign fa-2x text-gray-300"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Quick Actions -->
|
|
||||||
<div class="row mb-4">
|
|
||||||
<div class="col-12">
|
|
||||||
<div class="card shadow">
|
|
||||||
<div class="card-header py-3">
|
|
||||||
<h6 class="m-0 font-weight-bold text-primary">
|
|
||||||
<i class="fas fa-bolt me-2"></i>Schnellzugriff
|
|
||||||
</h6>
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-3 mb-3">
|
|
||||||
<a href="{% url 'stiftung:foerderung_create' %}" class="btn btn-outline-primary w-100 h-100 d-flex flex-column align-items-center justify-content-center p-3">
|
|
||||||
<i class="fas fa-gift fa-2x mb-2"></i>
|
|
||||||
<span>Neue Förderung</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<!-- Removed generic "Neue Verpachtung" - now created via specific Land pages -->
|
|
||||||
<div class="col-md-3 mb-3">
|
|
||||||
<a href="{% url 'stiftung:bericht_list' %}" class="btn btn-outline-info w-100 h-100 d-flex flex-column align-items-center justify-content-center p-3">
|
|
||||||
<i class="fas fa-chart-bar fa-2x mb-2"></i>
|
|
||||||
<span>Jahresberichte</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 mb-3">
|
|
||||||
<a href="{% url 'stiftung:csv_import_create' %}" class="btn btn-outline-warning w-100 h-100 d-flex flex-column align-items-center justify-content-center p-3">
|
|
||||||
<i class="fas fa-upload fa-2x mb-2"></i>
|
|
||||||
<span>CSV Import</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 mb-3">
|
|
||||||
<a href="{% url 'stiftung:dokument_management' %}" class="btn btn-outline-info w-100 h-100 d-flex flex-column align-items-center justify-content-center p-3">
|
|
||||||
<i class="fas fa-file-alt fa-2x mb-2"></i>
|
|
||||||
<span>Dokumentenverwaltung</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 mb-3">
|
|
||||||
<a href="{% url 'stiftung:dokument_list' %}" class="btn btn-outline-secondary w-100 h-100 d-flex flex-column align-items-center justify-content-center p-3">
|
|
||||||
<i class="fas fa-link fa-2x mb-2"></i>
|
|
||||||
<span>Dokumente</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Dokumentenübersicht -->
|
|
||||||
<div class="row mb-4">
|
|
||||||
<div class="col-12">
|
|
||||||
<div class="card shadow">
|
|
||||||
<div class="card-header py-3 d-flex justify-content-between align-items-center">
|
|
||||||
<h6 class="m-0 font-weight-bold text-success">
|
|
||||||
<i class="fas fa-file-alt me-2"></i>Dokumentenübersicht
|
|
||||||
</h6>
|
|
||||||
<a href="{% url 'stiftung:dokument_management' %}" class="btn btn-success btn-sm">
|
|
||||||
<i class="fas fa-external-link-alt me-1"></i>Dokumentenverwaltung
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
|
||||||
{% if dokumente_uebersicht %}
|
|
||||||
<div class="table-responsive">
|
|
||||||
<table class="table table-hover">
|
|
||||||
<thead class="table-light">
|
|
||||||
<tr>
|
|
||||||
<th>Dokument</th>
|
|
||||||
<th>Kontext</th>
|
|
||||||
<th>Verknüpft mit</th>
|
|
||||||
<th>Aktionen</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for dokument in dokumente_uebersicht %}
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<strong>{{ dokument.titel }}</strong>
|
|
||||||
<br>
|
|
||||||
<small class="text-muted">ID: {{ dokument.paperless_document_id }}</small>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span class="badge bg-secondary">{{ dokument.get_kontext_display }}</span>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{% if dokument.verpachtung_id %}
|
|
||||||
<span class="badge bg-info">Verpachtung</span>
|
|
||||||
{% elif dokument.land_id %}
|
|
||||||
<span class="badge bg-success">Länderei</span>
|
|
||||||
{% elif dokument.paechter_id %}
|
|
||||||
<span class="badge bg-primary">Pächter</span>
|
|
||||||
{% elif dokument.destinataer_id %}
|
|
||||||
<span class="badge bg-warning">Destinatär</span>
|
|
||||||
{% elif dokument.foerderung_id %}
|
|
||||||
<span class="badge bg-secondary">Förderung</span>
|
|
||||||
{% else %}
|
|
||||||
<span class="text-muted">Keine Verknüpfung</span>
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<div class="btn-group" role="group">
|
|
||||||
<a href="{{ dokument.get_paperless_url }}" target="_blank" class="btn btn-sm btn-outline-primary" title="In Paperless öffnen">
|
|
||||||
<i class="fas fa-external-link-alt"></i>
|
|
||||||
</a>
|
|
||||||
<a href="{% url 'stiftung:dokument_detail' dokument.pk %}" class="btn btn-sm btn-outline-info" title="Details">
|
|
||||||
<i class="fas fa-eye"></i>
|
|
||||||
</a>
|
|
||||||
<a href="{% url 'stiftung:dokument_update' dokument.pk %}" class="btn btn-sm btn-outline-warning" title="Bearbeiten">
|
|
||||||
<i class="fas fa-edit"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="text-center mt-3">
|
|
||||||
<a href="{% url 'stiftung:dokument_list' %}" class="btn btn-success">
|
|
||||||
Alle Dokumente anzeigen
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="text-center py-4">
|
|
||||||
<i class="fas fa-file-alt fa-3x text-muted mb-3"></i>
|
|
||||||
<h5 class="text-muted">Keine Dokumente verknüpft</h5>
|
|
||||||
<p class="text-muted">Verknüpfen Sie Dokumente aus Paperless mit Ihren Entitäten.</p>
|
|
||||||
<a href="{% url 'stiftung:dokument_management' %}" class="btn btn-success">
|
|
||||||
<i class="fas fa-external-link-alt me-2"></i>Dokumentenverwaltung öffnen
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Verfügbare Paperless-Dokumente -->
|
|
||||||
{% if available_paperless_docs %}
|
|
||||||
<div class="row mb-4">
|
|
||||||
<div class="col-12">
|
|
||||||
<div class="card shadow">
|
|
||||||
<div class="card-header py-3 d-flex justify-content-between align-items-center">
|
|
||||||
<h6 class="m-0 font-weight-bold text-info">
|
|
||||||
<i class="fas fa-plus-circle me-2"></i>Verfügbare Paperless-Dokumente
|
|
||||||
</h6>
|
|
||||||
<span class="badge bg-info">{{ available_paperless_docs|length }} verfügbar</span>
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="row">
|
|
||||||
{% for doc in available_paperless_docs|slice:":6" %}
|
|
||||||
<div class="col-md-6 col-lg-4 mb-3">
|
|
||||||
<div class="card h-100 border-info">
|
|
||||||
<div class="card-body">
|
|
||||||
<h6 class="card-title">{{ doc.title }}</h6>
|
|
||||||
<div class="mb-2">
|
|
||||||
{% for tag in doc.tags %}
|
|
||||||
{% if tag == 'Stiftung_Destinatäre' or tag == 'Stiftung_Land_und_Pächter' or tag == 'Stiftung_Administration' %}
|
|
||||||
<span class="badge bg-primary me-1">{{ tag }}</span>
|
|
||||||
{% else %}
|
|
||||||
<span class="badge bg-light text-dark me-1">{{ tag }}</span>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
<div class="d-flex justify-content-between align-items-center">
|
|
||||||
<a href="{{ doc.document_url }}" target="_blank" class="btn btn-sm btn-outline-info">
|
|
||||||
<i class="fas fa-external-link-alt me-1"></i>In Paperless öffnen
|
|
||||||
</a>
|
|
||||||
<a href="{% url 'stiftung:dokument_management' %}" class="btn btn-sm btn-success">
|
|
||||||
<i class="fas fa-link me-1"></i>Verknüpfen
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
<div class="text-center mt-3">
|
|
||||||
<a href="{% url 'stiftung:dokument_management' %}" class="btn btn-info">
|
|
||||||
<i class="fas fa-external-link-alt me-2"></i>Alle verfügbaren Dokumente anzeigen
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<!-- Recent Activities -->
|
|
||||||
<div class="row">
|
|
||||||
<!-- Recent Lands -->
|
|
||||||
<div class="col-lg-6 mb-4">
|
|
||||||
<div class="card shadow">
|
|
||||||
<div class="card-header py-3">
|
|
||||||
<h6 class="m-0 font-weight-bold text-primary">
|
|
||||||
<i class="fas fa-map me-2"></i>Neueste Ländereien
|
|
||||||
</h6>
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
|
||||||
{% if recent_lands %}
|
|
||||||
<div class="list-group list-group-flush">
|
|
||||||
{% for land in recent_lands %}
|
|
||||||
<div class="list-group-item d-flex justify-content-between align-items-center">
|
|
||||||
<div>
|
|
||||||
<h6 class="mb-1">{{ land.gemeinde }} - {{ land.gemarkung }}</h6>
|
|
||||||
<small class="text-muted">
|
|
||||||
Flur {{ land.flur }}, Flurstück {{ land.flurstueck }}
|
|
||||||
({{ land.groesse_qm|floatformat:0 }} qm)
|
|
||||||
</small>
|
|
||||||
</div>
|
|
||||||
<a href="{% url 'stiftung:land_detail' land.pk %}" class="btn btn-sm btn-outline-primary">
|
|
||||||
<i class="fas fa-eye"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
<div class="text-center mt-3">
|
|
||||||
<a href="{% url 'stiftung:land_list' %}" class="btn btn-sm btn-primary">
|
|
||||||
Alle Ländereien anzeigen
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<p class="text-muted text-center">Noch keine Ländereien vorhanden.</p>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Recent Verpachtungen -->
|
|
||||||
<div class="col-lg-6 mb-4">
|
|
||||||
<div class="card shadow">
|
|
||||||
<div class="card-header py-3">
|
|
||||||
<h6 class="m-0 font-weight-bold text-primary">
|
|
||||||
<i class="fas fa-handshake me-2"></i>Neueste Verpachtungen
|
|
||||||
</h6>
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
|
||||||
{% if recent_verpachtungen %}
|
|
||||||
<div class="list-group list-group-flush">
|
|
||||||
{% for verpachtung in recent_verpachtungen %}
|
|
||||||
<div class="list-group-item d-flex justify-content-between align-items-center">
|
|
||||||
<div>
|
|
||||||
<h6 class="mb-1">{{ verpachtung.land.gemeinde }}</h6>
|
|
||||||
<small class="text-muted">
|
|
||||||
{{ verpachtung.paechter.get_full_name }} -
|
|
||||||
€{{ verpachtung.pachtzins_jaehrlich|floatformat:0 }}/Jahr
|
|
||||||
</small>
|
|
||||||
</div>
|
|
||||||
<a href="{% url 'stiftung:land_verpachtung_detail' verpachtung.pk %}" class="btn btn-sm btn-outline-primary">
|
|
||||||
<i class="fas fa-eye"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
<div class="text-center mt-3">
|
|
||||||
<a href="{% url 'stiftung:land_list' %}" class="btn btn-sm btn-primary">
|
|
||||||
Ländereien verwalten
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<p class="text-muted text-center">Noch keine Verpachtungen vorhanden.</p>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Financial Overview -->
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-12">
|
|
||||||
<div class="card shadow">
|
|
||||||
<div class="card-header py-3">
|
|
||||||
<h6 class="m-0 font-weight-bold text-primary">
|
|
||||||
<i class="fas fa-chart-pie me-2"></i>Finanzübersicht
|
|
||||||
</h6>
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-4 text-center">
|
|
||||||
<div class="border rounded p-3">
|
|
||||||
<h4 class="text-success">€{{ total_pachtzins|floatformat:0 }}</h4>
|
|
||||||
<p class="text-muted mb-0">Jährlicher Pachtzins</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 text-center">
|
|
||||||
<div class="border rounded p-3">
|
|
||||||
<h4 class="text-info">€{{ total_foerderungen|floatformat:0 }}</h4>
|
|
||||||
<p class="text-muted mb-0">Gesamtförderungen</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 text-center">
|
|
||||||
<div class="border rounded p-3">
|
|
||||||
<h4 class="text-warning">{{ total_verpachtet|floatformat:0 }} qm</h4>
|
|
||||||
<p class="text-muted mb-0">Verpachtete Fläche</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block extra_js %}
|
|
||||||
<script>
|
|
||||||
// Auto-refresh dashboard every 5 minutes
|
|
||||||
setTimeout(function() {
|
|
||||||
location.reload();
|
|
||||||
}, 300000);
|
|
||||||
</script>
|
|
||||||
{% endblock %}
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<nav aria-label="breadcrumb">
|
<nav aria-label="breadcrumb">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:dashboard' %}">Dashboard</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:home' %}">Home</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:geschichte_list' %}">Geschichte</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:geschichte_list' %}">Geschichte</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{{ seite.get_absolute_url }}">{{ seite.titel }}</a></li>
|
<li class="breadcrumb-item"><a href="{{ seite.get_absolute_url }}">{{ seite.titel }}</a></li>
|
||||||
<li class="breadcrumb-item active" aria-current="page">Bild löschen</li>
|
<li class="breadcrumb-item active" aria-current="page">Bild löschen</li>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<nav aria-label="breadcrumb">
|
<nav aria-label="breadcrumb">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:dashboard' %}">Dashboard</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:home' %}">Home</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:geschichte_list' %}">Geschichte</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:geschichte_list' %}">Geschichte</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{{ seite.get_absolute_url }}">{{ seite.titel }}</a></li>
|
<li class="breadcrumb-item"><a href="{{ seite.get_absolute_url }}">{{ seite.titel }}</a></li>
|
||||||
<li class="breadcrumb-item active" aria-current="page">Bild hinzufügen</li>
|
<li class="breadcrumb-item active" aria-current="page">Bild hinzufügen</li>
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<nav aria-label="breadcrumb">
|
<nav aria-label="breadcrumb">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:dashboard' %}">Dashboard</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:home' %}">Home</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:geschichte_list' %}">Geschichte</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:geschichte_list' %}">Geschichte</a></li>
|
||||||
<li class="breadcrumb-item active" aria-current="page">{{ seite.titel }}</li>
|
<li class="breadcrumb-item active" aria-current="page">{{ seite.titel }}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<nav aria-label="breadcrumb">
|
<nav aria-label="breadcrumb">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:dashboard' %}">Dashboard</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:home' %}">Home</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:geschichte_list' %}">Geschichte</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:geschichte_list' %}">Geschichte</a></li>
|
||||||
{% if seite %}
|
{% if seite %}
|
||||||
<li class="breadcrumb-item"><a href="{{ seite.get_absolute_url }}">{{ seite.titel }}</a></li>
|
<li class="breadcrumb-item"><a href="{{ seite.get_absolute_url }}">{{ seite.titel }}</a></li>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<nav aria-label="breadcrumb">
|
<nav aria-label="breadcrumb">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:dashboard' %}">Dashboard</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:home' %}">Home</a></li>
|
||||||
<li class="breadcrumb-item active" aria-current="page">Geschichte</li>
|
<li class="breadcrumb-item active" aria-current="page">Geschichte</li>
|
||||||
</ol>
|
</ol>
|
||||||
</nav>
|
</nav>
|
||||||
|
|||||||
@@ -155,7 +155,7 @@
|
|||||||
</h6>
|
</h6>
|
||||||
<div>
|
<div>
|
||||||
<a href="{% url 'stiftung:home' %}" class="btn btn-outline-secondary btn-sm">
|
<a href="{% url 'stiftung:home' %}" class="btn btn-outline-secondary btn-sm">
|
||||||
<i class="fas fa-arrow-left me-2"></i>Zurück zum Dashboard
|
<i class="fas fa-arrow-left me-2"></i>Zurück zur Startseite
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -77,7 +77,7 @@
|
|||||||
</h6>
|
</h6>
|
||||||
<div>
|
<div>
|
||||||
<a href="{% url 'stiftung:home' %}" class="btn btn-outline-secondary btn-sm">
|
<a href="{% url 'stiftung:home' %}" class="btn btn-outline-secondary btn-sm">
|
||||||
<i class="fas fa-arrow-left me-2"></i>Zurück zum Dashboard
|
<i class="fas fa-arrow-left me-2"></i>Zurück zur Startseite
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<nav aria-label="breadcrumb">
|
<nav aria-label="breadcrumb">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:dashboard' %}">Dashboard</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:home' %}">Home</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:unterstuetzungen_all' %}">Unterstützungen</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:unterstuetzungen_all' %}">Unterstützungen</a></li>
|
||||||
<li class="breadcrumb-item active" aria-current="page">{{ title }}</li>
|
<li class="breadcrumb-item active" aria-current="page">{{ title }}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<nav aria-label="breadcrumb">
|
<nav aria-label="breadcrumb">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:dashboard' %}">Dashboard</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:home' %}">Home</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:unterstuetzungen_all' %}">Unterstützungen</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:unterstuetzungen_all' %}">Unterstützungen</a></li>
|
||||||
<li class="breadcrumb-item active" aria-current="page">{{ title }}</li>
|
<li class="breadcrumb-item active" aria-current="page">{{ title }}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<nav aria-label="breadcrumb">
|
<nav aria-label="breadcrumb">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:dashboard' %}">Dashboard</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:home' %}">Home</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:unterstuetzungen_all' %}">Unterstützungen</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:unterstuetzungen_all' %}">Unterstützungen</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:unterstuetzung_detail' pk=unterstuetzung.pk %}">Unterstützung Details</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:unterstuetzung_detail' pk=unterstuetzung.pk %}">Unterstützung Details</a></li>
|
||||||
<li class="breadcrumb-item active" aria-current="page">Als bezahlt markieren</li>
|
<li class="breadcrumb-item active" aria-current="page">Als bezahlt markieren</li>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<nav aria-label="breadcrumb">
|
<nav aria-label="breadcrumb">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:dashboard' %}">Dashboard</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:home' %}">Home</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{% url 'stiftung:unterstuetzungen_all' %}">Unterstützungen</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'stiftung:unterstuetzungen_all' %}">Unterstützungen</a></li>
|
||||||
<li class="breadcrumb-item active" aria-current="page">{{ title }}</li>
|
<li class="breadcrumb-item active" aria-current="page">{{ title }}</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|||||||
Reference in New Issue
Block a user