ux(v2): Partei-Dropdown statt Freitext in /v2/abos und /v2/feed

Beide Routes liefern jetzt all_canonical_keys() (ohne Landesregierung) als Dropdown-
Optionen. Verhindert Tippfehler und gibt nur tatsaechlich erkannte Parteien zur Auswahl.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dotty Dotter 2026-04-25 22:37:31 +02:00
parent 7cbd46f88d
commit 6581acd28e
3 changed files with 15 additions and 2 deletions

View File

@ -2271,9 +2271,13 @@ async def v2_tags(request: Request, current_user: Optional[dict] = Depends(get_c
@app.get("/v2/abos", response_class=HTMLResponse)
async def v2_abos(request: Request, current_user: dict = Depends(require_auth)):
"""Eigene E-Mail-Abos verwalten — auth-only."""
from .parteien import all_canonical_keys
# Landesregierung als Filter unsinnig — ausblenden
parteien = [p for p in all_canonical_keys() if p != "Landesregierung"]
return templates.TemplateResponse("v2/screens/abos.html", {
"request": request,
"v2_active_nav": "abos",
"parteien": parteien,
**_v2_template_context(current_user),
})
@ -2281,9 +2285,12 @@ async def v2_abos(request: Request, current_user: dict = Depends(require_auth)):
@app.get("/v2/feed", response_class=HTMLResponse)
async def v2_feed(request: Request, current_user: dict = Depends(require_auth)):
"""Atom-Feed-Konfigurations-Seite — auth-only."""
from .parteien import all_canonical_keys
parteien = [p for p in all_canonical_keys() if p != "Landesregierung"]
return templates.TemplateResponse("v2/screens/feed.html", {
"request": request,
"v2_active_nav": "feed",
"parteien": parteien,
**_v2_template_context(current_user),
})

View File

@ -65,7 +65,10 @@
</div>
<div>
<label for="abo-partei">Partei</label>
<input type="text" id="abo-partei" placeholder="z.B. SPD oder leer = alle" autocomplete="off">
<select id="abo-partei">
<option value="">— alle —</option>
{% for p in parteien %}<option value="{{ p }}">{{ p }}</option>{% endfor %}
</select>
</div>
<div>
<label for="abo-freq">Frequenz</label>

View File

@ -56,7 +56,10 @@
</select>
<label for="feed-partei">Partei</label>
<input type="text" id="feed-partei" placeholder="z.B. SPD (leer = alle)" oninput="feedUpdate()" autocomplete="off">
<select id="feed-partei" onchange="feedUpdate()">
<option value="">— alle —</option>
{% for p in parteien %}<option value="{{ p }}">{{ p }}</option>{% endfor %}
</select>
<label for="feed-limit">Anzahl</label>
<input type="number" id="feed-limit" min="1" max="200" value="50" oninput="feedUpdate()">