Quellen-Seite: Programme nach Bundesland gruppiert statt einer langen Liste
This commit is contained in:
parent
9e341a695f
commit
d75e9441a3
19
app/main.py
19
app/main.py
@ -756,14 +756,31 @@ async def methodik_page(request: Request):
|
|||||||
|
|
||||||
@app.get("/quellen", response_class=HTMLResponse)
|
@app.get("/quellen", response_class=HTMLResponse)
|
||||||
async def quellen_page(request: Request):
|
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()
|
programmes = get_programme_info()
|
||||||
status = get_indexing_status()
|
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", {
|
return templates.TemplateResponse("quellen.html", {
|
||||||
"request": request,
|
"request": request,
|
||||||
"app_name": settings.app_name,
|
"app_name": settings.app_name,
|
||||||
"programmes": programmes,
|
"programmes": programmes,
|
||||||
|
"wahlprogramme_grouped": wahlprogramme_grouped,
|
||||||
|
"grundsatzprogramme": grundsatz,
|
||||||
"status": status,
|
"status": status,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -218,9 +218,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h2>Wahlprogramme NRW 2022</h2>
|
{% for bl_name, bl_progs in wahlprogramme_grouped %}
|
||||||
|
<h2>{{ bl_name }}</h2>
|
||||||
<div class="programme-grid">
|
<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;">
|
<div class="programme-card" style="display: flex; gap: 1rem;">
|
||||||
<a href="{{ prog.pdf_url }}" target="_blank" style="flex-shrink: 0;">
|
<a href="{{ prog.pdf_url }}" target="_blank" style="flex-shrink: 0;">
|
||||||
<img src="/api/programme/thumbnail/{{ prog.id }}" alt="{{ prog.name }}"
|
<img src="/api/programme/thumbnail/{{ prog.id }}" alt="{{ prog.name }}"
|
||||||
@ -250,10 +251,11 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
<h2>Grundsatzprogramme</h2>
|
<h2>Grundsatzprogramme (Bundesebene)</h2>
|
||||||
<div class="programme-grid">
|
<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;">
|
<div class="programme-card" style="display: flex; gap: 1rem;">
|
||||||
<a href="{{ prog.pdf_url }}" target="_blank" style="flex-shrink: 0;">
|
<a href="{{ prog.pdf_url }}" target="_blank" style="flex-shrink: 0;">
|
||||||
<img src="/api/programme/thumbnail/{{ prog.id }}" alt="{{ prog.name }}"
|
<img src="/api/programme/thumbnail/{{ prog.id }}" alt="{{ prog.name }}"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user