Quellen-Seite: Programme nach Bundesland gruppiert statt einer langen Liste

This commit is contained in:
Dotty Dotter 2026-04-10 19:10:18 +02:00
parent 9e341a695f
commit d75e9441a3
2 changed files with 25 additions and 6 deletions

View File

@ -756,14 +756,31 @@ async def methodik_page(request: Request):
@app.get("/quellen", response_class=HTMLResponse)
async def quellen_page(request: Request):
"""Quellen-Seite mit allen Wahl- und Parteiprogrammen."""
"""Quellen-Seite mit allen Wahl- und Parteiprogrammen, nach BL gruppiert."""
from .bundeslaender import BUNDESLAENDER
programmes = get_programme_info()
status = get_indexing_status()
# Wahlprogramme nach Bundesland gruppieren
by_bl: dict[str, list] = {}
grundsatz = []
for prog in programmes:
if prog["typ"] == "parteiprogramm":
grundsatz.append(prog)
else:
bl = prog.get("bundesland") or "Sonstige"
bl_name = BUNDESLAENDER[bl].name if bl in BUNDESLAENDER else bl
by_bl.setdefault(bl_name, []).append(prog)
# Sortieren: alphabetisch nach BL-Name
wahlprogramme_grouped = sorted(by_bl.items())
return templates.TemplateResponse("quellen.html", {
"request": request,
"app_name": settings.app_name,
"programmes": programmes,
"wahlprogramme_grouped": wahlprogramme_grouped,
"grundsatzprogramme": grundsatz,
"status": status,
})

View File

@ -218,9 +218,10 @@
</div>
</div>
<h2>Wahlprogramme NRW 2022</h2>
{% for bl_name, bl_progs in wahlprogramme_grouped %}
<h2>{{ bl_name }}</h2>
<div class="programme-grid">
{% for prog in programmes if prog.typ == 'wahlprogramm' %}
{% for prog in bl_progs %}
<div class="programme-card" style="display: flex; gap: 1rem;">
<a href="{{ prog.pdf_url }}" target="_blank" style="flex-shrink: 0;">
<img src="/api/programme/thumbnail/{{ prog.id }}" alt="{{ prog.name }}"
@ -250,10 +251,11 @@
</div>
{% endfor %}
</div>
{% endfor %}
<h2>Grundsatzprogramme</h2>
<h2>Grundsatzprogramme (Bundesebene)</h2>
<div class="programme-grid">
{% for prog in programmes if prog.typ == 'parteiprogramm' %}
{% for prog in grundsatzprogramme %}
<div class="programme-card" style="display: flex; gap: 1rem;">
<a href="{{ prog.pdf_url }}" target="_blank" style="flex-shrink: 0;">
<img src="/api/programme/thumbnail/{{ prog.id }}" alt="{{ prog.name }}"