Schließt #222. Entfernt die Doppelung zwischen ``wahlprogramme.WAHLPROGRAMME`` und ``programme.PROGRAMME``. Single source of truth ist jetzt ``programme.PROGRAMME`` als Literal mit allen 287 Programmen (Wahlprogramme + Bundes- + Landes-Grundsatzprogramme, historisch + aktuell). Schema schmaler — Felder ohne Konsumenten entfallen: - ``regierungsbildung`` / ``regierungsende`` → gehören zu ``legislaturen.REGIERUNGEN``. Verbindung Programm→Regierung läuft jetzt über ``legislaturen.regierung_zum_zeitpunkt(bl, datum)``. - ``partei`` (Langform "CDU NRW") → ableitbar aus partei + bundesland. - ``jahr`` → ableitbar aus ``gueltig_ab[:4]``. - ``beschluss`` / ``wahl`` / ``hinweis`` → keine App-Konsumenten. Felder im neuen Schema: id, typ, partei, bundesland, wp, gueltig_ab, gueltig_bis, name, titel (Slogan, optional), pdf, seiten. Daten-Migration einmalig via ``tools/build_programme_literal.py``: - Basis: bisherige embeddings.PROGRAMME (alle 287 IDs + gueltig_ab/bis) - titel aus WAHLPROGRAMME für die ~80 aktuellen Wahlprogramme + Land-Grundsatzprogramm-Slogans (ehem. _ARCHIVED_SKELETONS) - seiten via ``fitz.open(p).page_count`` für alle 287 PDFs Aufrufer migriert: - app/main.py:4055 — ``aktuelles_wahlprogramm(bl, partei).pdf`` - app/wahlprogramm_check.py — ``parteien_mit_wahlprogramm(bl)`` - app/redline_utils.py — Reverse-Lookup über ``all_programme()`` - app/wahlprogramm_fetch.py (3 Stellen) — ``aktuelles_wahlprogramm()`` - tests/test_redline_parser.py — Programm-Lookup statt WAHLPROGRAMME ``wahlprogramme.py`` schrumpft auf den Such-Code: Keyword-Fallback + PDF-Text-Loader + ein dünner ``get_wahlprogramm``-Compat-Adapter zu ``programme.aktuelles_wahlprogramm``. Drei Helper gelöscht (keine App-Konsumenten): ``regierungsbildung_for``, ``regierungsende_for``, ``regierung_aktuell``. Wer das Datum der Regierungsbildung will, fragt ``legislaturen.aktuelle_regierung(bl).get('von')``. Test-Suite: 1217 grün (vorher 1244, Differenz 27 = entfernte regierungs-Helper-Tests + obsolete WAHLPROGRAMME-Strukturtests).
535 lines
88 KiB
Python
535 lines
88 KiB
Python
"""Zentrale Programm-Registry — alle politischen Programm-Dokumente
|
||
(Wahlprogramme, Bundes-Grundsatzprogramme, Landes-Grundsatzprogramme),
|
||
historisch und aktuell.
|
||
|
||
Single Source of Truth für:
|
||
- ``embeddings.py`` (Indexer liest die PDFs aus dieser Liste)
|
||
- ``analyzer.py`` (sucht das zum Antrag passende Wahlprogramm)
|
||
- UI (zeigt Geltungszeitraum + zugeordnete Regierung pro Programm)
|
||
|
||
Siehe ``app/legislaturen.py`` für Wahlperioden + Regierungen — Programm-
|
||
Daten beschreiben das Dokument selbst, nicht die Regierung, die aus ihm
|
||
hervorging. Die Verbindung läuft über
|
||
``legislaturen.regierung_zum_zeitpunkt(bundesland, datum)``.
|
||
"""
|
||
from __future__ import annotations
|
||
|
||
from pathlib import Path
|
||
from typing import Literal, Optional, TypedDict
|
||
|
||
|
||
# ─────────────────────────────────────────────────────────────────────────────
|
||
# Schema
|
||
# ─────────────────────────────────────────────────────────────────────────────
|
||
|
||
|
||
ProgrammTyp = Literal[
|
||
"wahlprogramm", # zur Wahl beschlossen, gilt für 1 Legislatur
|
||
"grundsatzprogramm-bund", # bundesweites Grundsatzprogramm
|
||
"grundsatzprogramm-land", # landesspezifisches Grundsatzprogramm
|
||
]
|
||
|
||
|
||
class Programm(TypedDict, total=False):
|
||
"""Single source of truth für ein politisches Programm-Dokument.
|
||
|
||
Pflichtfelder: id, typ, partei, gueltig_ab, name, pdf.
|
||
Optional: bundesland, wp, gueltig_bis, titel, seiten.
|
||
|
||
Was hier bewusst NICHT drin ist:
|
||
- ``regierungsbildung`` / ``regierungsende`` — gehört zu
|
||
``legislaturen.REGIERUNGEN``. Verbindung Programm→Regierung läuft
|
||
über ``legislaturen.regierung_zum_zeitpunkt(bl, antrag_datum)``.
|
||
- ``partei`` Langform ("CDU NRW") — ableitbar via partei + bundesland.
|
||
- ``jahr`` — ``int(gueltig_ab[:4])`` reicht.
|
||
"""
|
||
id: str # eindeutiger Schlüssel, z.B. "cdu-nrw-2022"
|
||
typ: ProgrammTyp
|
||
partei: str # kanonisch (CDU, BiW, BÜNDNIS 90/DIE GRÜNEN, …)
|
||
bundesland: Optional[str] # BL-Code; None nur bei Bundesgrundsatzprogrammen
|
||
wp: Optional[int] # Legislatur-Nummer; nur typ=wahlprogramm
|
||
gueltig_ab: str # ISO YYYY-MM-DD; bei wahl: Wahltag
|
||
gueltig_bis: Optional[str] # ISO; None = aktuell gültig
|
||
name: str # voll-qualifiziert für Citation, z.B. "CDU NRW Wahlprogramm 2022"
|
||
titel: Optional[str] # Slogan ("Machen, worauf es ankommt"); None wenn nicht erfasst
|
||
pdf: str # Dateiname in static/referenzen/
|
||
seiten: Optional[int] # PDF-Seitenzahl
|
||
|
||
|
||
REFERENZEN_PATH = Path(__file__).parent / "static" / "referenzen"
|
||
KONTEXT_PATH = Path(__file__).parent / "kontext"
|
||
|
||
|
||
# ─────────────────────────────────────────────────────────────────────────────
|
||
# Daten — alle 287 Programme (historisch + aktuell), sortiert nach
|
||
# (typ, bundesland, gueltig_ab, partei). Auto-generiert aus der bisherigen
|
||
# embeddings.PROGRAMME + WAHLPROGRAMME-Lazy-Migration via fitz für seiten.
|
||
# Generator: tools/build_programme_literal.py (siehe Commit-Historie).
|
||
# ─────────────────────────────────────────────────────────────────────────────
|
||
|
||
|
||
PROGRAMME: dict[str, Programm] = {
|
||
|
||
# ─── grundsatzprogramm-bund · BUND ───
|
||
"spd-grundsatz": {"id": "spd-grundsatz", "typ": "grundsatzprogramm-bund", "partei": "SPD", "bundesland": None, "wp": None, "gueltig_ab": "2007-10-28", "gueltig_bis": None, "name": "SPD Hamburger Programm 2007", "titel": None, "pdf": "spd-grundsatzprogramm.pdf", "seiten": 79},
|
||
"linke-grundsatz": {"id": "linke-grundsatz", "typ": "grundsatzprogramm-bund", "partei": "LINKE", "bundesland": None, "wp": None, "gueltig_ab": "2011-10-23", "gueltig_bis": None, "name": "DIE LINKE Erfurter Programm 2011", "titel": None, "pdf": "linke-grundsatzprogramm.pdf", "seiten": 58},
|
||
"fw-grundsatz": {"id": "fw-grundsatz", "typ": "grundsatzprogramm-bund", "partei": "FREIE WÄHLER", "bundesland": None, "wp": None, "gueltig_ab": "2012-02-25", "gueltig_bis": None, "name": "FREIE WÄHLER Bundesgrundsatzprogramm", "titel": None, "pdf": "fw-grundsatz.pdf", "seiten": 46},
|
||
"fdp-grundsatz": {"id": "fdp-grundsatz", "typ": "grundsatzprogramm-bund", "partei": "FDP", "bundesland": None, "wp": None, "gueltig_ab": "2012-04-22", "gueltig_bis": None, "name": "FDP Karlsruher Freiheitsthesen 2012", "titel": None, "pdf": "fdp-grundsatzprogramm.pdf", "seiten": 118},
|
||
"afd-grundsatz": {"id": "afd-grundsatz", "typ": "grundsatzprogramm-bund", "partei": "AfD", "bundesland": None, "wp": None, "gueltig_ab": "2016-05-01", "gueltig_bis": None, "name": "AfD Grundsatzprogramm 2016", "titel": None, "pdf": "afd-grundsatzprogramm.pdf", "seiten": 96},
|
||
"gruene-grundsatz": {"id": "gruene-grundsatz", "typ": "grundsatzprogramm-bund", "partei": "GRÜNE", "bundesland": None, "wp": None, "gueltig_ab": "2020-11-22", "gueltig_bis": None, "name": "Grüne Grundsatzprogramm 2020", "titel": None, "pdf": "gruene-grundsatzprogramm.pdf", "seiten": 136},
|
||
"cdu-grundsatz": {"id": "cdu-grundsatz", "typ": "grundsatzprogramm-bund", "partei": "CDU", "bundesland": None, "wp": None, "gueltig_ab": "2024-05-07", "gueltig_bis": None, "name": "CDU Grundsatzprogramm 2024", "titel": None, "pdf": "cdu-grundsatzprogramm.pdf", "seiten": 82},
|
||
|
||
# ─── grundsatzprogramm-land · BY ───
|
||
"csu-grundsatz": {"id": "csu-grundsatz", "typ": "grundsatzprogramm-land", "partei": "CSU", "bundesland": "BY", "wp": None, "gueltig_ab": "2023-05-06", "gueltig_bis": None, "name": "CSU Grundsatzprogramm 2023", "titel": "Für ein neues Miteinander — Grundsatzprogramm der CSU", "pdf": "csu-grundsatz-2023.pdf", "seiten": 55},
|
||
|
||
# ─── grundsatzprogramm-land · LSA ───
|
||
"cdu-grundsatz-lsa": {"id": "cdu-grundsatz-lsa", "typ": "grundsatzprogramm-land", "partei": "CDU", "bundesland": "LSA", "wp": None, "gueltig_ab": "2023-09-30", "gueltig_bis": None, "name": "CDU Sachsen-Anhalt Grundsatzprogramm 2023", "titel": "Sachsen-Anhalt. Unsere Verantwortung. Unsere Zukunft.", "pdf": "cdu-grundsatz-lsa-2023.pdf", "seiten": 70},
|
||
|
||
# ─── grundsatzprogramm-land · NRW ───
|
||
"cdu-grundsatz-nrw": {"id": "cdu-grundsatz-nrw", "typ": "grundsatzprogramm-land", "partei": "CDU", "bundesland": "NRW", "wp": None, "gueltig_ab": "2015-06-13", "gueltig_bis": None, "name": "CDU NRW Grundsatzprogramm 2015", "titel": "Aufstieg, Sicherheit, Perspektive — Das Nordrhein-Westfalen-Programm", "pdf": "cdu-grundsatz-nrw-2015.pdf", "seiten": 48},
|
||
|
||
# ─── grundsatzprogramm-land · SH ───
|
||
"ssw-grundsatz": {"id": "ssw-grundsatz", "typ": "grundsatzprogramm-land", "partei": "SSW", "bundesland": "SH", "wp": None, "gueltig_ab": "2016-04-16", "gueltig_bis": None, "name": "SSW Rahmenprogramm 2016", "titel": "SSW Rahmenprogramm", "pdf": "ssw-grundsatz-sh-2016.pdf", "seiten": 34},
|
||
|
||
# ─── grundsatzprogramm-land · SN ───
|
||
"cdu-grundsatz-sn": {"id": "cdu-grundsatz-sn", "typ": "grundsatzprogramm-land", "partei": "CDU", "bundesland": "SN", "wp": None, "gueltig_ab": "2023-11-20", "gueltig_bis": None, "name": "CDU Sachsen Grundsatzprogramm 2023", "titel": "Zukunftsplan für Sachsen", "pdf": "cdu-grundsatz-sn-2023.pdf", "seiten": 54},
|
||
|
||
# ─── wahlprogramm · BB ───
|
||
"afd-bb-2014": {"id": "afd-bb-2014", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "BB", "wp": 6, "gueltig_ab": "2014-09-14", "gueltig_bis": "2019-09-01", "name": "AfD BB Wahlprogramm 2014", "titel": None, "pdf": "afd-bb-2014.pdf", "seiten": 37},
|
||
"bvb-fw-bb-2014": {"id": "bvb-fw-bb-2014", "typ": "wahlprogramm", "partei": "BVB/FREIE WÄHLER", "bundesland": "BB", "wp": 6, "gueltig_ab": "2014-09-14", "gueltig_bis": "2019-09-01", "name": "BVB/FREIE WÄHLER BB Wahlprogramm 2014", "titel": None, "pdf": "bvb-fw-bb-2014.pdf", "seiten": 39},
|
||
"cdu-bb-2014": {"id": "cdu-bb-2014", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "BB", "wp": 6, "gueltig_ab": "2014-09-14", "gueltig_bis": "2019-09-01", "name": "CDU BB Wahlprogramm 2014", "titel": None, "pdf": "cdu-bb-2014.pdf", "seiten": 20},
|
||
"gruene-bb-2014": {"id": "gruene-bb-2014", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BB", "wp": 6, "gueltig_ab": "2014-09-14", "gueltig_bis": "2019-09-01", "name": "Grüne BB Wahlprogramm 2014", "titel": None, "pdf": "gruene-bb-2014.pdf", "seiten": 150},
|
||
"linke-bb-2014": {"id": "linke-bb-2014", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "BB", "wp": 6, "gueltig_ab": "2014-09-14", "gueltig_bis": "2019-09-01", "name": "DIE LINKE BB Wahlprogramm 2014", "titel": None, "pdf": "linke-bb-2014.pdf", "seiten": 60},
|
||
"spd-bb-2014": {"id": "spd-bb-2014", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BB", "wp": 6, "gueltig_ab": "2014-09-14", "gueltig_bis": "2019-09-01", "name": "SPD BB Wahlprogramm 2014", "titel": None, "pdf": "spd-bb-2014.pdf", "seiten": 26},
|
||
"afd-bb-2019": {"id": "afd-bb-2019", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "BB", "wp": 7, "gueltig_ab": "2019-09-01", "gueltig_bis": "2024-09-22", "name": "AfD BB Wahlprogramm 2019", "titel": None, "pdf": "afd-bb-2019.pdf", "seiten": 42},
|
||
"bvb-fw-bb-2019": {"id": "bvb-fw-bb-2019", "typ": "wahlprogramm", "partei": "BVB/FREIE WÄHLER", "bundesland": "BB", "wp": 7, "gueltig_ab": "2019-09-01", "gueltig_bis": "2024-09-22", "name": "BVB/FREIE WÄHLER BB Wahlprogramm 2019", "titel": None, "pdf": "bvb-fw-bb-2019.pdf", "seiten": 37},
|
||
"cdu-bb-2019": {"id": "cdu-bb-2019", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "BB", "wp": 7, "gueltig_ab": "2019-09-01", "gueltig_bis": "2024-09-22", "name": "CDU BB Wahlprogramm 2019", "titel": None, "pdf": "cdu-bb-2019.pdf", "seiten": 50},
|
||
"gruene-bb-2019": {"id": "gruene-bb-2019", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BB", "wp": 7, "gueltig_ab": "2019-09-01", "gueltig_bis": "2024-09-22", "name": "Grüne BB Wahlprogramm 2019", "titel": None, "pdf": "gruene-bb-2019.pdf", "seiten": 106},
|
||
"linke-bb-2019": {"id": "linke-bb-2019", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "BB", "wp": 7, "gueltig_ab": "2019-09-01", "gueltig_bis": "2024-09-22", "name": "DIE LINKE BB Wahlprogramm 2019", "titel": None, "pdf": "linke-bb-2019.pdf", "seiten": 100},
|
||
"spd-bb-2019": {"id": "spd-bb-2019", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BB", "wp": 7, "gueltig_ab": "2019-09-01", "gueltig_bis": "2024-09-22", "name": "SPD BB Wahlprogramm 2019", "titel": None, "pdf": "spd-bb-2019.pdf", "seiten": 47},
|
||
"afd-bb-2024": {"id": "afd-bb-2024", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "BB", "wp": 8, "gueltig_ab": "2024-09-22", "gueltig_bis": None, "name": "AfD Brandenburg Wahlprogramm 2024", "titel": None, "pdf": "afd-bb-2024.pdf", "seiten": 100},
|
||
"bsw-bb-2024": {"id": "bsw-bb-2024", "typ": "wahlprogramm", "partei": "BSW", "bundesland": "BB", "wp": 8, "gueltig_ab": "2024-09-22", "gueltig_bis": None, "name": "BSW Brandenburg Wahlprogramm 2024", "titel": None, "pdf": "bsw-bb-2024.pdf", "seiten": 50},
|
||
"cdu-bb-2024": {"id": "cdu-bb-2024", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "BB", "wp": 8, "gueltig_ab": "2024-09-22", "gueltig_bis": None, "name": "CDU Brandenburg Wahlprogramm 2024", "titel": None, "pdf": "cdu-bb-2024.pdf", "seiten": 100},
|
||
"spd-bb-2024": {"id": "spd-bb-2024", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BB", "wp": 8, "gueltig_ab": "2024-09-22", "gueltig_bis": None, "name": "SPD Brandenburg Wahlprogramm 2024", "titel": None, "pdf": "spd-bb-2024.pdf", "seiten": 100},
|
||
|
||
# ─── wahlprogramm · BE ───
|
||
"cdu-be-2011": {"id": "cdu-be-2011", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "BE", "wp": 17, "gueltig_ab": "2011-09-18", "gueltig_bis": "2016-09-18", "name": "CDU BE Wahlprogramm 2011", "titel": None, "pdf": "cdu-be-2011.pdf", "seiten": 41},
|
||
"gruene-be-2011": {"id": "gruene-be-2011", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BE", "wp": 17, "gueltig_ab": "2011-09-18", "gueltig_bis": "2016-09-18", "name": "Grüne BE Wahlprogramm 2011", "titel": None, "pdf": "gruene-be-2011.pdf", "seiten": 120},
|
||
"linke-be-2011": {"id": "linke-be-2011", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "BE", "wp": 17, "gueltig_ab": "2011-09-18", "gueltig_bis": "2016-09-18", "name": "DIE LINKE BE Wahlprogramm 2011", "titel": None, "pdf": "linke-be-2011.pdf", "seiten": 72},
|
||
"piraten-be-2011": {"id": "piraten-be-2011", "typ": "wahlprogramm", "partei": "PIRATEN", "bundesland": "BE", "wp": 17, "gueltig_ab": "2011-09-18", "gueltig_bis": "2016-09-18", "name": "PIRATEN BE Wahlprogramm 2011", "titel": None, "pdf": "piraten-be-2011.pdf", "seiten": 51},
|
||
"spd-be-2011": {"id": "spd-be-2011", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BE", "wp": 17, "gueltig_ab": "2011-09-18", "gueltig_bis": "2016-09-18", "name": "SPD BE Wahlprogramm 2011", "titel": None, "pdf": "spd-be-2011.pdf", "seiten": 60},
|
||
"afd-be-2016": {"id": "afd-be-2016", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "BE", "wp": 18, "gueltig_ab": "2016-09-18", "gueltig_bis": "2021-09-26", "name": "AfD BE Wahlprogramm 2016", "titel": None, "pdf": "afd-be-2016.pdf", "seiten": 40},
|
||
"cdu-be-2016": {"id": "cdu-be-2016", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "BE", "wp": 18, "gueltig_ab": "2016-09-18", "gueltig_bis": "2021-09-26", "name": "CDU BE Wahlprogramm 2016", "titel": None, "pdf": "cdu-be-2016.pdf", "seiten": 49},
|
||
"fdp-be-2016": {"id": "fdp-be-2016", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "BE", "wp": 18, "gueltig_ab": "2016-09-18", "gueltig_bis": "2021-09-26", "name": "FDP BE Wahlprogramm 2016", "titel": None, "pdf": "fdp-be-2016.pdf", "seiten": 57},
|
||
"gruene-be-2016": {"id": "gruene-be-2016", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BE", "wp": 18, "gueltig_ab": "2016-09-18", "gueltig_bis": "2021-09-26", "name": "Grüne BE Wahlprogramm 2016", "titel": None, "pdf": "gruene-be-2016.pdf", "seiten": 104},
|
||
"linke-be-2016": {"id": "linke-be-2016", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "BE", "wp": 18, "gueltig_ab": "2016-09-18", "gueltig_bis": "2021-09-26", "name": "DIE LINKE BE Wahlprogramm 2016", "titel": None, "pdf": "linke-be-2016.pdf", "seiten": 100},
|
||
"spd-be-2016": {"id": "spd-be-2016", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BE", "wp": 18, "gueltig_ab": "2016-09-18", "gueltig_bis": "2021-09-26", "name": "SPD BE Wahlprogramm 2016", "titel": None, "pdf": "spd-be-2016.pdf", "seiten": 99},
|
||
"afd-be-2023": {"id": "afd-be-2023", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "BE", "wp": 19, "gueltig_ab": "2021-09-26", "gueltig_bis": None, "name": "AfD Berlin Wahlprogramm 2021", "titel": "Wahlprogramm der AfD Berlin für die Wahl des Abgeordnetenhauses am 26. September 2021", "pdf": "afd-be-2023.pdf", "seiten": 166},
|
||
"cdu-be-2023": {"id": "cdu-be-2023", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "BE", "wp": 19, "gueltig_ab": "2021-09-26", "gueltig_bis": None, "name": "CDU Berlin Wahlprogramm 2021", "titel": "Unser Berlin. Mehr geht nur gemeinsam. — Berlin-Plan der CDU Berlin 2021–2026", "pdf": "cdu-be-2023.pdf", "seiten": 135},
|
||
"gruene-be-2023": {"id": "gruene-be-2023", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BE", "wp": 19, "gueltig_ab": "2021-09-26", "gueltig_bis": None, "name": "BÜNDNIS 90/DIE GRÜNEN Berlin Wahlprogramm 2021", "titel": "Unser Plan für Berlin — Landeswahlprogramm BÜNDNIS 90/DIE GRÜNEN Berlin 2021", "pdf": "gruene-be-2023.pdf", "seiten": 280},
|
||
"linke-be-2023": {"id": "linke-be-2023", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "BE", "wp": 19, "gueltig_ab": "2021-09-26", "gueltig_bis": None, "name": "DIE LINKE Berlin Wahlprogramm 2021", "titel": "rot. radikal. realistisch. — Unser Programm für die soziale Stadt", "pdf": "linke-be-2023.pdf", "seiten": 130},
|
||
"spd-be-2023": {"id": "spd-be-2023", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BE", "wp": 19, "gueltig_ab": "2021-09-26", "gueltig_bis": None, "name": "SPD Berlin Wahlprogramm 2021", "titel": "Ganz sicher Berlin — Wahlprogramm der SPD Berlin zur Abgeordnetenhauswahl 2021", "pdf": "spd-be-2023.pdf", "seiten": 86},
|
||
|
||
# ─── wahlprogramm · BUND ───
|
||
"cdu-bund-2013": {"id": "cdu-bund-2013", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "BUND", "wp": 18, "gueltig_ab": "2013-09-22", "gueltig_bis": "2017-09-24", "name": "CDU BUND Wahlprogramm 2013", "titel": None, "pdf": "cdu-bund-2013.pdf", "seiten": 81},
|
||
"csu-bund-2013": {"id": "csu-bund-2013", "typ": "wahlprogramm", "partei": "CSU", "bundesland": "BUND", "wp": 18, "gueltig_ab": "2013-09-22", "gueltig_bis": "2017-09-24", "name": "CSU BUND Wahlprogramm 2013", "titel": None, "pdf": "csu-bund-2013.pdf", "seiten": 41},
|
||
"gruene-bund-2013": {"id": "gruene-bund-2013", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BUND", "wp": 18, "gueltig_ab": "2013-09-22", "gueltig_bis": "2017-09-24", "name": "Grüne BUND Wahlprogramm 2013", "titel": None, "pdf": "gruene-bund-2013.pdf", "seiten": 337},
|
||
"linke-bund-2013": {"id": "linke-bund-2013", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "BUND", "wp": 18, "gueltig_ab": "2013-09-22", "gueltig_bis": "2017-09-24", "name": "DIE LINKE BUND Wahlprogramm 2013", "titel": None, "pdf": "linke-bund-2013.pdf", "seiten": 93},
|
||
"spd-bund-2013": {"id": "spd-bund-2013", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BUND", "wp": 18, "gueltig_ab": "2013-09-22", "gueltig_bis": "2017-09-24", "name": "SPD BUND Wahlprogramm 2013", "titel": None, "pdf": "spd-bund-2013.pdf", "seiten": 120},
|
||
"afd-bund-2017": {"id": "afd-bund-2017", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "BUND", "wp": 19, "gueltig_ab": "2017-09-24", "gueltig_bis": "2021-09-26", "name": "AfD Bundestagswahlprogramm 2017", "titel": None, "pdf": "afd-bund-2017.pdf", "seiten": 76},
|
||
"cdu-bund-2017": {"id": "cdu-bund-2017", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "BUND", "wp": 19, "gueltig_ab": "2017-09-24", "gueltig_bis": "2021-09-26", "name": "CDU/CSU Wahlprogramm BTW 2017", "titel": None, "pdf": "cdu-bund-2017.pdf", "seiten": 76},
|
||
"csu-bund-2017": {"id": "csu-bund-2017", "typ": "wahlprogramm", "partei": "CSU", "bundesland": "BUND", "wp": 19, "gueltig_ab": "2017-09-24", "gueltig_bis": "2021-09-26", "name": "CSU Bayernplan 2017", "titel": None, "pdf": "csu-bund-2017.pdf", "seiten": 31},
|
||
"fdp-bund-2017": {"id": "fdp-bund-2017", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "BUND", "wp": 19, "gueltig_ab": "2017-09-24", "gueltig_bis": "2021-09-26", "name": "FDP Wahlprogramm BTW 2017", "titel": None, "pdf": "fdp-bund-2017.pdf", "seiten": 158},
|
||
"gruene-bund-2017": {"id": "gruene-bund-2017", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BUND", "wp": 19, "gueltig_ab": "2017-09-24", "gueltig_bis": "2021-09-26", "name": "Grüne Bundestagswahlprogramm 2017", "titel": None, "pdf": "gruene-bund-2017.pdf", "seiten": 248},
|
||
"linke-bund-2017": {"id": "linke-bund-2017", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "BUND", "wp": 19, "gueltig_ab": "2017-09-24", "gueltig_bis": "2021-09-26", "name": "DIE LINKE Bundestagswahlprogramm 2017", "titel": None, "pdf": "linke-bund-2017.pdf", "seiten": 144},
|
||
"spd-bund-2017": {"id": "spd-bund-2017", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BUND", "wp": 19, "gueltig_ab": "2017-09-24", "gueltig_bis": "2021-09-26", "name": "SPD Zukunftsprogramm BTW 2017", "titel": None, "pdf": "spd-bund-2017.pdf", "seiten": 116},
|
||
"afd-bund-2021": {"id": "afd-bund-2021", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "BUND", "wp": 20, "gueltig_ab": "2021-09-26", "gueltig_bis": "2025-02-23", "name": "AfD Bundestagswahlprogramm 2021", "titel": None, "pdf": "afd-bund-2021.pdf", "seiten": 210},
|
||
"cdu-bund-2021": {"id": "cdu-bund-2021", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "BUND", "wp": 20, "gueltig_ab": "2021-09-26", "gueltig_bis": "2025-02-23", "name": "CDU/CSU Programm fuer Stabilitaet und Erneuerung 2021", "titel": None, "pdf": "cdu-bund-2021.pdf", "seiten": 140},
|
||
"csu-bund-2021": {"id": "csu-bund-2021", "typ": "wahlprogramm", "partei": "CSU", "bundesland": "BUND", "wp": 20, "gueltig_ab": "2021-09-26", "gueltig_bis": "2025-02-23", "name": "CSU-Programm Bundestagswahl 2021", "titel": None, "pdf": "csu-bund-2021.pdf", "seiten": 18},
|
||
"fdp-bund-2021": {"id": "fdp-bund-2021", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "BUND", "wp": 20, "gueltig_ab": "2021-09-26", "gueltig_bis": "2025-02-23", "name": "FDP Wahlprogramm Bundestagswahl 2021", "titel": None, "pdf": "fdp-bund-2021.pdf", "seiten": 68},
|
||
"gruene-bund-2021": {"id": "gruene-bund-2021", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BUND", "wp": 20, "gueltig_ab": "2021-09-26", "gueltig_bis": "2025-02-23", "name": "Gruene Bundestagswahlprogramm 2021", "titel": None, "pdf": "gruene-bund-2021.pdf", "seiten": 272},
|
||
"linke-bund-2021": {"id": "linke-bund-2021", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "BUND", "wp": 20, "gueltig_ab": "2021-09-26", "gueltig_bis": "2025-02-23", "name": "DIE LINKE Bundestagswahlprogramm 2021", "titel": None, "pdf": "linke-bund-2021.pdf", "seiten": 168},
|
||
"spd-bund-2021": {"id": "spd-bund-2021", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BUND", "wp": 20, "gueltig_ab": "2021-09-26", "gueltig_bis": "2025-02-23", "name": "SPD Zukunftsprogramm Bundestagswahl 2021", "titel": None, "pdf": "spd-bund-2021.pdf", "seiten": 66},
|
||
"afd-bund-2025": {"id": "afd-bund-2025", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "BUND", "wp": 21, "gueltig_ab": "2025-02-23", "gueltig_bis": None, "name": "AfD Wahlprogramm 2025", "titel": "Zeit für Deutschland — AfD Bundestagswahlprogramm 2025", "pdf": "afd-bund-2025.pdf", "seiten": 177},
|
||
"bsw-bund-2025": {"id": "bsw-bund-2025", "typ": "wahlprogramm", "partei": "BSW", "bundesland": "BUND", "wp": 21, "gueltig_ab": "2025-02-23", "gueltig_bis": None, "name": "BSW Wahlprogramm 2025", "titel": "Unser Land verdient mehr — BSW Wahlprogramm BTW 2025", "pdf": "bsw-bund-2025.pdf", "seiten": 45},
|
||
"cdu-bund-2025": {"id": "cdu-bund-2025", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "BUND", "wp": 21, "gueltig_ab": "2025-02-23", "gueltig_bis": None, "name": "CDU Wahlprogramm 2025", "titel": "Politikwechsel für Deutschland — Wahlprogramm CDU/CSU BTW 2025", "pdf": "cdu-bund-2025.pdf", "seiten": 82},
|
||
"csu-bund-2025": {"id": "csu-bund-2025", "typ": "wahlprogramm", "partei": "CSU", "bundesland": "BUND", "wp": 21, "gueltig_ab": "2025-02-23", "gueltig_bis": None, "name": "CSU Wahlprogramm 2025", "titel": "Politikwechsel für Deutschland — Wahlprogramm CDU/CSU BTW 2025 (CSU)", "pdf": "csu-bund-2025.pdf", "seiten": 81},
|
||
"fdp-bund-2025": {"id": "fdp-bund-2025", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "BUND", "wp": 21, "gueltig_ab": "2025-02-23", "gueltig_bis": None, "name": "FDP Wahlprogramm 2025", "titel": "Alles lässt sich ändern — FDP Wahlprogramm BTW 2025", "pdf": "fdp-bund-2025.pdf", "seiten": 52},
|
||
"gruene-bund-2025": {"id": "gruene-bund-2025", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BUND", "wp": 21, "gueltig_ab": "2025-02-23", "gueltig_bis": None, "name": "BÜNDNIS 90/DIE GRÜNEN Wahlprogramm 2025", "titel": "Zusammen wachsen — Regierungsprogramm BÜNDNIS 90/DIE GRÜNEN BTW 2025", "pdf": "gruene-bund-2025.pdf", "seiten": 160},
|
||
"linke-bund-2025": {"id": "linke-bund-2025", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "BUND", "wp": 21, "gueltig_ab": "2025-02-23", "gueltig_bis": None, "name": "DIE LINKE Wahlprogramm 2025", "titel": "Alle wollen regieren. Wir wollen verändern. — DIE LINKE Wahlprogramm BTW 2025", "pdf": "linke-bund-2025.pdf", "seiten": 60},
|
||
"spd-bund-2025": {"id": "spd-bund-2025", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BUND", "wp": 21, "gueltig_ab": "2025-02-23", "gueltig_bis": None, "name": "SPD Wahlprogramm 2025", "titel": "Mehr für Dich. Besser für Deutschland. — SPD Regierungsprogramm BTW 2025", "pdf": "spd-bund-2025.pdf", "seiten": 68},
|
||
|
||
# ─── wahlprogramm · BW ───
|
||
"cdu-bw-2011": {"id": "cdu-bw-2011", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "BW", "wp": 15, "gueltig_ab": "2011-03-27", "gueltig_bis": "2016-03-13", "name": "CDU BW Wahlprogramm 2011", "titel": None, "pdf": "cdu-bw-2011.pdf", "seiten": 57},
|
||
"fdp-bw-2011": {"id": "fdp-bw-2011", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "BW", "wp": 15, "gueltig_ab": "2011-03-27", "gueltig_bis": "2016-03-13", "name": "FDP BW Wahlprogramm 2011", "titel": None, "pdf": "fdp-bw-2011.pdf", "seiten": 137},
|
||
"gruene-bw-2011": {"id": "gruene-bw-2011", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BW", "wp": 15, "gueltig_ab": "2011-03-27", "gueltig_bis": "2016-03-13", "name": "Grüne BW Wahlprogramm 2011", "titel": None, "pdf": "gruene-bw-2011.pdf", "seiten": 241},
|
||
"spd-bw-2011": {"id": "spd-bw-2011", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BW", "wp": 15, "gueltig_ab": "2011-03-27", "gueltig_bis": "2016-03-13", "name": "SPD BW Wahlprogramm 2011", "titel": None, "pdf": "spd-bw-2011.pdf", "seiten": 65},
|
||
"afd-bw-2016": {"id": "afd-bw-2016", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "BW", "wp": 16, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-03-14", "name": "AfD BW Wahlprogramm 2016", "titel": None, "pdf": "afd-bw-2016.pdf", "seiten": 64},
|
||
"cdu-bw-2016": {"id": "cdu-bw-2016", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "BW", "wp": 16, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-03-14", "name": "CDU BW Wahlprogramm 2016", "titel": None, "pdf": "cdu-bw-2016.pdf", "seiten": 156},
|
||
"fdp-bw-2016": {"id": "fdp-bw-2016", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "BW", "wp": 16, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-03-14", "name": "FDP BW Wahlprogramm 2016", "titel": None, "pdf": "fdp-bw-2016.pdf", "seiten": 124},
|
||
"gruene-bw-2016": {"id": "gruene-bw-2016", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BW", "wp": 16, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-03-14", "name": "Grüne BW Wahlprogramm 2016", "titel": None, "pdf": "gruene-bw-2016.pdf", "seiten": 249},
|
||
"spd-bw-2016": {"id": "spd-bw-2016", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BW", "wp": 16, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-03-14", "name": "SPD BW Wahlprogramm 2016", "titel": None, "pdf": "spd-bw-2016.pdf", "seiten": 41},
|
||
"afd-bw-2021": {"id": "afd-bw-2021", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "BW", "wp": 17, "gueltig_ab": "2021-03-14", "gueltig_bis": None, "name": "AfD Baden-Württemberg Wahlprogramm 2021", "titel": "AfD Baden-Württemberg Landtagswahlprogramm 2021", "pdf": "afd-bw-2021.pdf", "seiten": 100},
|
||
"cdu-bw-2021": {"id": "cdu-bw-2021", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "BW", "wp": 17, "gueltig_ab": "2021-03-14", "gueltig_bis": None, "name": "CDU Baden-Württemberg Wahlprogramm 2021", "titel": "Neue Ideen für eine neue Zeit — Regierungsprogramm der CDU Baden-Württemberg zur Landtagswahl 2021", "pdf": "cdu-bw-2021.pdf", "seiten": 100},
|
||
"fdp-bw-2021": {"id": "fdp-bw-2021", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "BW", "wp": 17, "gueltig_ab": "2021-03-14", "gueltig_bis": None, "name": "FDP Baden-Württemberg Wahlprogramm 2021", "titel": "FDP Baden-Württemberg Landtagswahlprogramm 2021", "pdf": "fdp-bw-2021.pdf", "seiten": 100},
|
||
"gruene-bw-2021": {"id": "gruene-bw-2021", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BW", "wp": 17, "gueltig_ab": "2021-03-14", "gueltig_bis": None, "name": "BÜNDNIS 90/DIE GRÜNEN Baden-Württemberg Wahlprogramm 2021", "titel": "Wachsen wir über uns hinaus — Landtagswahlprogramm BÜNDNIS 90/DIE GRÜNEN Baden-Württemberg 2021", "pdf": "gruene-bw-2021.pdf", "seiten": 100},
|
||
"spd-bw-2021": {"id": "spd-bw-2021", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BW", "wp": 17, "gueltig_ab": "2021-03-14", "gueltig_bis": None, "name": "SPD Baden-Württemberg Wahlprogramm 2021", "titel": "SPD Baden-Württemberg Wahlprogramm zur Landtagswahl 2021", "pdf": "spd-bw-2021.pdf", "seiten": 100},
|
||
|
||
# ─── wahlprogramm · BY ───
|
||
"csu-by-2013": {"id": "csu-by-2013", "typ": "wahlprogramm", "partei": "CSU", "bundesland": "BY", "wp": 17, "gueltig_ab": "2013-09-15", "gueltig_bis": "2018-10-14", "name": "CSU BY Wahlprogramm 2013", "titel": None, "pdf": "csu-by-2013.pdf", "seiten": 28},
|
||
"fw-by-2013": {"id": "fw-by-2013", "typ": "wahlprogramm", "partei": "FREIE WÄHLER", "bundesland": "BY", "wp": 17, "gueltig_ab": "2013-09-15", "gueltig_bis": "2018-10-14", "name": "FREIE WÄHLER BY Wahlprogramm 2013", "titel": None, "pdf": "fw-by-2013.pdf", "seiten": 67},
|
||
"gruene-by-2013": {"id": "gruene-by-2013", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BY", "wp": 17, "gueltig_ab": "2013-09-15", "gueltig_bis": "2018-10-14", "name": "Grüne BY Wahlprogramm 2013", "titel": None, "pdf": "gruene-by-2013.pdf", "seiten": 87},
|
||
"spd-by-2013": {"id": "spd-by-2013", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BY", "wp": 17, "gueltig_ab": "2013-09-15", "gueltig_bis": "2018-10-14", "name": "SPD BY Wahlprogramm 2013", "titel": None, "pdf": "spd-by-2013.pdf", "seiten": 150},
|
||
"afd-by-2018": {"id": "afd-by-2018", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "BY", "wp": 18, "gueltig_ab": "2018-10-14", "gueltig_bis": "2023-10-08", "name": "AfD BY Wahlprogramm 2018", "titel": None, "pdf": "afd-by-2018.pdf", "seiten": 100},
|
||
"csu-by-2018": {"id": "csu-by-2018", "typ": "wahlprogramm", "partei": "CSU", "bundesland": "BY", "wp": 18, "gueltig_ab": "2018-10-14", "gueltig_bis": "2023-10-08", "name": "CSU BY Wahlprogramm 2018", "titel": None, "pdf": "csu-by-2018.pdf", "seiten": 24},
|
||
"fdp-by-2018": {"id": "fdp-by-2018", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "BY", "wp": 18, "gueltig_ab": "2018-10-14", "gueltig_bis": "2023-10-08", "name": "FDP BY Wahlprogramm 2018", "titel": None, "pdf": "fdp-by-2018.pdf", "seiten": 78},
|
||
"fw-by-2018": {"id": "fw-by-2018", "typ": "wahlprogramm", "partei": "FREIE WÄHLER", "bundesland": "BY", "wp": 18, "gueltig_ab": "2018-10-14", "gueltig_bis": "2023-10-08", "name": "FREIE WÄHLER BY Wahlprogramm 2018", "titel": None, "pdf": "fw-by-2018.pdf", "seiten": 43},
|
||
"gruene-by-2018": {"id": "gruene-by-2018", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BY", "wp": 18, "gueltig_ab": "2018-10-14", "gueltig_bis": "2023-10-08", "name": "Grüne BY Wahlprogramm 2018", "titel": None, "pdf": "gruene-by-2018.pdf", "seiten": 107},
|
||
"spd-by-2018": {"id": "spd-by-2018", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BY", "wp": 18, "gueltig_ab": "2018-10-14", "gueltig_bis": "2023-10-08", "name": "SPD BY Wahlprogramm 2018", "titel": None, "pdf": "spd-by-2018.pdf", "seiten": 69},
|
||
"afd-by-2023": {"id": "afd-by-2023", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "BY", "wp": 19, "gueltig_ab": "2023-10-08", "gueltig_bis": None, "name": "AfD Bayern Wahlprogramm 2023", "titel": None, "pdf": "afd-by-2023.pdf", "seiten": 100},
|
||
"csu-by-2023": {"id": "csu-by-2023", "typ": "wahlprogramm", "partei": "CSU", "bundesland": "BY", "wp": 19, "gueltig_ab": "2023-10-08", "gueltig_bis": None, "name": "CSU Bayern Wahlprogramm 2023", "titel": "CSU Bayern Bayernplan 2023", "pdf": "csu-by-2023.pdf", "seiten": 100},
|
||
"fw-by-2023": {"id": "fw-by-2023", "typ": "wahlprogramm", "partei": "FREIE WÄHLER", "bundesland": "BY", "wp": 19, "gueltig_ab": "2023-10-08", "gueltig_bis": None, "name": "FREIE WÄHLER Bayern Wahlprogramm 2023", "titel": None, "pdf": "fw-by-2023.pdf", "seiten": 80},
|
||
"gruene-by-2023": {"id": "gruene-by-2023", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "BY", "wp": 19, "gueltig_ab": "2023-10-08", "gueltig_bis": None, "name": "BÜNDNIS 90/DIE GRÜNEN Bayern Wahlprogramm 2023", "titel": "BÜNDNIS 90/DIE GRÜNEN Bayern Regierungsprogramm 2023", "pdf": "gruene-by-2023.pdf", "seiten": 100},
|
||
"spd-by-2023": {"id": "spd-by-2023", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "BY", "wp": 19, "gueltig_ab": "2023-10-08", "gueltig_bis": None, "name": "SPD Bayern Wahlprogramm 2023", "titel": "SPD Bayern Zukunftsprogramm 2023", "pdf": "spd-by-2023.pdf", "seiten": 100},
|
||
|
||
# ─── wahlprogramm · HB ───
|
||
"afd-hb-2015": {"id": "afd-hb-2015", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "HB", "wp": 19, "gueltig_ab": "2015-05-10", "gueltig_bis": "2019-05-26", "name": "AfD HB Wahlprogramm 2015", "titel": None, "pdf": "afd-hb-2015.pdf", "seiten": 49},
|
||
"biw-hb-2015": {"id": "biw-hb-2015", "typ": "wahlprogramm", "partei": "BiW", "bundesland": "HB", "wp": 19, "gueltig_ab": "2015-05-10", "gueltig_bis": "2019-05-26", "name": "BIW Bremen HB Wahlprogramm 2015", "titel": None, "pdf": "biw-hb-2015.pdf", "seiten": 32},
|
||
"cdu-hb-2015": {"id": "cdu-hb-2015", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "HB", "wp": 19, "gueltig_ab": "2015-05-10", "gueltig_bis": "2019-05-26", "name": "CDU HB Wahlprogramm 2015", "titel": None, "pdf": "cdu-hb-2015.pdf", "seiten": 58},
|
||
"fdp-hb-2015": {"id": "fdp-hb-2015", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "HB", "wp": 19, "gueltig_ab": "2015-05-10", "gueltig_bis": "2019-05-26", "name": "FDP HB Wahlprogramm 2015", "titel": None, "pdf": "fdp-hb-2015.pdf", "seiten": 80},
|
||
"gruene-hb-2015": {"id": "gruene-hb-2015", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "HB", "wp": 19, "gueltig_ab": "2015-05-10", "gueltig_bis": "2019-05-26", "name": "Grüne HB Wahlprogramm 2015", "titel": None, "pdf": "gruene-hb-2015.pdf", "seiten": 140},
|
||
"linke-hb-2015": {"id": "linke-hb-2015", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "HB", "wp": 19, "gueltig_ab": "2015-05-10", "gueltig_bis": "2019-05-26", "name": "DIE LINKE HB Wahlprogramm 2015", "titel": None, "pdf": "linke-hb-2015.pdf", "seiten": 82},
|
||
"spd-hb-2015": {"id": "spd-hb-2015", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "HB", "wp": 19, "gueltig_ab": "2015-05-10", "gueltig_bis": "2019-05-26", "name": "SPD HB Wahlprogramm 2015", "titel": None, "pdf": "spd-hb-2015.pdf", "seiten": 67},
|
||
"afd-hb-2019": {"id": "afd-hb-2019", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "HB", "wp": 20, "gueltig_ab": "2019-05-26", "gueltig_bis": "2023-05-14", "name": "AfD HB Wahlprogramm 2019", "titel": None, "pdf": "afd-hb-2019.pdf", "seiten": 27},
|
||
"biw-hb-2019": {"id": "biw-hb-2019", "typ": "wahlprogramm", "partei": "BiW", "bundesland": "HB", "wp": 20, "gueltig_ab": "2019-05-26", "gueltig_bis": "2023-05-14", "name": "BIW Bremen Wahlprogramm 2019", "titel": None, "pdf": "biw-hb-2019.pdf", "seiten": 22},
|
||
"cdu-hb-2019": {"id": "cdu-hb-2019", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "HB", "wp": 20, "gueltig_ab": "2019-05-26", "gueltig_bis": "2023-05-14", "name": "CDU HB Wahlprogramm 2019", "titel": None, "pdf": "cdu-hb-2019.pdf", "seiten": 66},
|
||
"fdp-hb-2019": {"id": "fdp-hb-2019", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "HB", "wp": 20, "gueltig_ab": "2019-05-26", "gueltig_bis": "2023-05-14", "name": "FDP HB Wahlprogramm 2019", "titel": None, "pdf": "fdp-hb-2019.pdf", "seiten": 89},
|
||
"gruene-hb-2019": {"id": "gruene-hb-2019", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "HB", "wp": 20, "gueltig_ab": "2019-05-26", "gueltig_bis": "2023-05-14", "name": "Grüne HB Wahlprogramm 2019", "titel": None, "pdf": "gruene-hb-2019.pdf", "seiten": 190},
|
||
"linke-hb-2019": {"id": "linke-hb-2019", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "HB", "wp": 20, "gueltig_ab": "2019-05-26", "gueltig_bis": "2023-05-14", "name": "DIE LINKE HB Wahlprogramm 2019", "titel": None, "pdf": "linke-hb-2019.pdf", "seiten": 64},
|
||
"spd-hb-2019": {"id": "spd-hb-2019", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "HB", "wp": 20, "gueltig_ab": "2019-05-26", "gueltig_bis": "2023-05-14", "name": "SPD HB Wahlprogramm 2019", "titel": None, "pdf": "spd-hb-2019.pdf", "seiten": 132},
|
||
"biw-hb-2023": {"id": "biw-hb-2023", "typ": "wahlprogramm", "partei": "BiW", "bundesland": "HB", "wp": 21, "gueltig_ab": "2023-05-14", "gueltig_bis": None, "name": "BiW Bremen Wahlprogramm 2023", "titel": "BÜRGER IN WUT — Programm für die Bürgerschaftswahl 2023", "pdf": "biw-hb-2023.pdf", "seiten": 26},
|
||
"cdu-hb-2023": {"id": "cdu-hb-2023", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "HB", "wp": 21, "gueltig_ab": "2023-05-14", "gueltig_bis": None, "name": "CDU Bremen Wahlprogramm 2023", "titel": "CDU Bremen Wahlprogramm Bürgerschaftswahl 2023", "pdf": "cdu-hb-2023.pdf", "seiten": 100},
|
||
"gruene-hb-2023": {"id": "gruene-hb-2023", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "HB", "wp": 21, "gueltig_ab": "2023-05-14", "gueltig_bis": None, "name": "BÜNDNIS 90/DIE GRÜNEN Bremen Wahlprogramm 2023", "titel": None, "pdf": "gruene-hb-2023.pdf", "seiten": 100},
|
||
"linke-hb-2023": {"id": "linke-hb-2023", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "HB", "wp": 21, "gueltig_ab": "2023-05-14", "gueltig_bis": None, "name": "DIE LINKE Bremen Wahlprogramm 2023", "titel": "DIE LINKE Bremen Wahlprogramm Bürgerschaftswahl 2023", "pdf": "linke-hb-2023.pdf", "seiten": 100},
|
||
"spd-hb-2023": {"id": "spd-hb-2023", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "HB", "wp": 21, "gueltig_ab": "2023-05-14", "gueltig_bis": None, "name": "SPD Bremen Wahlprogramm 2023", "titel": "SPD Bremen Wahlprogramm Bürgerschaftswahl 2023", "pdf": "spd-hb-2023.pdf", "seiten": 100},
|
||
|
||
# ─── wahlprogramm · HE ───
|
||
"cdu-he-2013": {"id": "cdu-he-2013", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "HE", "wp": 19, "gueltig_ab": "2013-09-22", "gueltig_bis": "2019-01-18", "name": "CDU HE Wahlprogramm 2013", "titel": None, "pdf": "cdu-he-2013.pdf", "seiten": 72},
|
||
"fdp-he-2013": {"id": "fdp-he-2013", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "HE", "wp": 19, "gueltig_ab": "2013-09-22", "gueltig_bis": "2019-01-18", "name": "FDP HE Wahlprogramm 2013", "titel": None, "pdf": "fdp-he-2013.pdf", "seiten": 197},
|
||
"gruene-he-2013": {"id": "gruene-he-2013", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "HE", "wp": 19, "gueltig_ab": "2013-09-22", "gueltig_bis": "2019-01-18", "name": "Grüne HE Wahlprogramm 2013", "titel": None, "pdf": "gruene-he-2013.pdf", "seiten": 110},
|
||
"linke-he-2013": {"id": "linke-he-2013", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "HE", "wp": 19, "gueltig_ab": "2013-09-22", "gueltig_bis": "2019-01-18", "name": "DIE LINKE HE Wahlprogramm 2013", "titel": None, "pdf": "linke-he-2013.pdf", "seiten": 60},
|
||
"spd-he-2013": {"id": "spd-he-2013", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "HE", "wp": 19, "gueltig_ab": "2013-09-22", "gueltig_bis": "2019-01-18", "name": "SPD HE Wahlprogramm 2013", "titel": None, "pdf": "spd-he-2013.pdf", "seiten": 112},
|
||
"afd-he-2018": {"id": "afd-he-2018", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "HE", "wp": 20, "gueltig_ab": "2018-10-28", "gueltig_bis": "2023-10-08", "name": "AfD HE Wahlprogramm 2018", "titel": None, "pdf": "afd-he-2018.pdf", "seiten": 90},
|
||
"cdu-he-2018": {"id": "cdu-he-2018", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "HE", "wp": 20, "gueltig_ab": "2018-10-28", "gueltig_bis": "2023-10-08", "name": "CDU HE Wahlprogramm 2018", "titel": None, "pdf": "cdu-he-2018.pdf", "seiten": 132},
|
||
"fdp-he-2018": {"id": "fdp-he-2018", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "HE", "wp": 20, "gueltig_ab": "2018-10-28", "gueltig_bis": "2023-10-08", "name": "FDP HE Wahlprogramm 2018", "titel": None, "pdf": "fdp-he-2018.pdf", "seiten": 112},
|
||
"gruene-he-2018": {"id": "gruene-he-2018", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "HE", "wp": 20, "gueltig_ab": "2018-10-28", "gueltig_bis": "2023-10-08", "name": "Grüne HE Wahlprogramm 2018", "titel": None, "pdf": "gruene-he-2018.pdf", "seiten": 140},
|
||
"linke-he-2018": {"id": "linke-he-2018", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "HE", "wp": 20, "gueltig_ab": "2018-10-28", "gueltig_bis": "2023-10-08", "name": "DIE LINKE HE Wahlprogramm 2018", "titel": None, "pdf": "linke-he-2018.pdf", "seiten": 90},
|
||
"spd-he-2018": {"id": "spd-he-2018", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "HE", "wp": 20, "gueltig_ab": "2018-10-28", "gueltig_bis": "2023-10-08", "name": "SPD HE Wahlprogramm 2018", "titel": None, "pdf": "spd-he-2018.pdf", "seiten": 175},
|
||
"afd-he-2023": {"id": "afd-he-2023", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "HE", "wp": 21, "gueltig_ab": "2023-10-08", "gueltig_bis": None, "name": "AfD Hessen Wahlprogramm 2023", "titel": None, "pdf": "afd-he-2023.pdf", "seiten": 100},
|
||
"cdu-he-2023": {"id": "cdu-he-2023", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "HE", "wp": 21, "gueltig_ab": "2023-10-08", "gueltig_bis": None, "name": "CDU Hessen Wahlprogramm 2023", "titel": "CDU Hessen Regierungsprogramm 2023", "pdf": "cdu-he-2023.pdf", "seiten": 100},
|
||
"fdp-he-2023": {"id": "fdp-he-2023", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "HE", "wp": 21, "gueltig_ab": "2023-10-08", "gueltig_bis": None, "name": "FDP Hessen Wahlprogramm 2023", "titel": None, "pdf": "fdp-he-2023.pdf", "seiten": 100},
|
||
"gruene-he-2023": {"id": "gruene-he-2023", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "HE", "wp": 21, "gueltig_ab": "2023-10-08", "gueltig_bis": None, "name": "BÜNDNIS 90/DIE GRÜNEN Hessen Wahlprogramm 2023", "titel": None, "pdf": "gruene-he-2023.pdf", "seiten": 100},
|
||
"spd-he-2023": {"id": "spd-he-2023", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "HE", "wp": 21, "gueltig_ab": "2023-10-08", "gueltig_bis": None, "name": "SPD Hessen Wahlprogramm 2023", "titel": None, "pdf": "spd-he-2023.pdf", "seiten": 100},
|
||
|
||
# ─── wahlprogramm · HH ───
|
||
"afd-hh-2015": {"id": "afd-hh-2015", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "HH", "wp": 21, "gueltig_ab": "2015-02-15", "gueltig_bis": "2020-02-23", "name": "AfD HH Wahlprogramm 2015", "titel": None, "pdf": "afd-hh-2015.pdf", "seiten": 28},
|
||
"cdu-hh-2015": {"id": "cdu-hh-2015", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "HH", "wp": 21, "gueltig_ab": "2015-02-15", "gueltig_bis": "2020-02-23", "name": "CDU HH Wahlprogramm 2015", "titel": None, "pdf": "cdu-hh-2015.pdf", "seiten": 60},
|
||
"fdp-hh-2015": {"id": "fdp-hh-2015", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "HH", "wp": 21, "gueltig_ab": "2015-02-15", "gueltig_bis": "2020-02-23", "name": "FDP HH Wahlprogramm 2015", "titel": None, "pdf": "fdp-hh-2015.pdf", "seiten": 63},
|
||
"gruene-hh-2015": {"id": "gruene-hh-2015", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "HH", "wp": 21, "gueltig_ab": "2015-02-15", "gueltig_bis": "2020-02-23", "name": "Grüne HH Wahlprogramm 2015", "titel": None, "pdf": "gruene-hh-2015.pdf", "seiten": 237},
|
||
"linke-hh-2015": {"id": "linke-hh-2015", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "HH", "wp": 21, "gueltig_ab": "2015-02-15", "gueltig_bis": "2020-02-23", "name": "DIE LINKE HH Wahlprogramm 2015", "titel": None, "pdf": "linke-hh-2015.pdf", "seiten": 44},
|
||
"spd-hh-2015": {"id": "spd-hh-2015", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "HH", "wp": 21, "gueltig_ab": "2015-02-15", "gueltig_bis": "2020-02-23", "name": "SPD HH Wahlprogramm 2015", "titel": None, "pdf": "spd-hh-2015.pdf", "seiten": 70},
|
||
"afd-hh-2020": {"id": "afd-hh-2020", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "HH", "wp": 22, "gueltig_ab": "2020-02-23", "gueltig_bis": "2025-03-02", "name": "AfD HH Wahlprogramm 2020", "titel": None, "pdf": "afd-hh-2020.pdf", "seiten": 40},
|
||
"cdu-hh-2020": {"id": "cdu-hh-2020", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "HH", "wp": 22, "gueltig_ab": "2020-02-23", "gueltig_bis": "2025-03-02", "name": "CDU HH Wahlprogramm 2020", "titel": None, "pdf": "cdu-hh-2020.pdf", "seiten": 84},
|
||
"fdp-hh-2020": {"id": "fdp-hh-2020", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "HH", "wp": 22, "gueltig_ab": "2020-02-23", "gueltig_bis": "2025-03-02", "name": "FDP HH Wahlprogramm 2020", "titel": None, "pdf": "fdp-hh-2020.pdf", "seiten": 97},
|
||
"gruene-hh-2020": {"id": "gruene-hh-2020", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "HH", "wp": 22, "gueltig_ab": "2020-02-23", "gueltig_bis": "2025-03-02", "name": "Grüne HH Wahlprogramm 2020", "titel": None, "pdf": "gruene-hh-2020.pdf", "seiten": 146},
|
||
"linke-hh-2020": {"id": "linke-hh-2020", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "HH", "wp": 22, "gueltig_ab": "2020-02-23", "gueltig_bis": "2025-03-02", "name": "DIE LINKE HH Wahlprogramm 2020", "titel": None, "pdf": "linke-hh-2020.pdf", "seiten": 37},
|
||
"spd-hh-2020": {"id": "spd-hh-2020", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "HH", "wp": 22, "gueltig_ab": "2020-02-23", "gueltig_bis": "2025-03-02", "name": "SPD HH Wahlprogramm 2020", "titel": None, "pdf": "spd-hh-2020.pdf", "seiten": 90},
|
||
"afd-hh-2025": {"id": "afd-hh-2025", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "HH", "wp": 23, "gueltig_ab": "2025-03-02", "gueltig_bis": None, "name": "AfD Hamburg Wahlprogramm 2025", "titel": "AfD Hamburg Wahlprogramm Bürgerschaftswahl 2025", "pdf": "afd-hh-2025.pdf", "seiten": 100},
|
||
"cdu-hh-2025": {"id": "cdu-hh-2025", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "HH", "wp": 23, "gueltig_ab": "2025-03-02", "gueltig_bis": None, "name": "CDU Hamburg Wahlprogramm 2025", "titel": "CDU Hamburg Wahlprogramm Bürgerschaftswahl 2025", "pdf": "cdu-hh-2025.pdf", "seiten": 100},
|
||
"gruene-hh-2025": {"id": "gruene-hh-2025", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "HH", "wp": 23, "gueltig_ab": "2025-03-02", "gueltig_bis": None, "name": "BÜNDNIS 90/DIE GRÜNEN Hamburg Wahlprogramm 2025", "titel": "Gute Gründe für Grün — Regierungsprogramm BÜNDNIS 90/DIE GRÜNEN Hamburg 2025", "pdf": "gruene-hh-2025.pdf", "seiten": 100},
|
||
"linke-hh-2025": {"id": "linke-hh-2025", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "HH", "wp": 23, "gueltig_ab": "2025-03-02", "gueltig_bis": None, "name": "DIE LINKE Hamburg Wahlprogramm 2025", "titel": "DIE LINKE Hamburg Wahlprogramm Bürgerschaftswahl 2025", "pdf": "linke-hh-2025.pdf", "seiten": 100},
|
||
"spd-hh-2025": {"id": "spd-hh-2025", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "HH", "wp": 23, "gueltig_ab": "2025-03-02", "gueltig_bis": None, "name": "SPD Hamburg Wahlprogramm 2025", "titel": "SPD Hamburg Wahlprogramm Bürgerschaftswahl 2025", "pdf": "spd-hh-2025.pdf", "seiten": 100},
|
||
|
||
# ─── wahlprogramm · LSA ───
|
||
"cdu-lsa-2011": {"id": "cdu-lsa-2011", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "LSA", "wp": 6, "gueltig_ab": "2011-03-20", "gueltig_bis": "2016-04-13", "name": "CDU LSA Wahlprogramm 2011", "titel": None, "pdf": "cdu-lsa-2011.pdf", "seiten": 66},
|
||
"gruene-lsa-2011": {"id": "gruene-lsa-2011", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "LSA", "wp": 6, "gueltig_ab": "2011-03-20", "gueltig_bis": "2016-04-13", "name": "Grüne LSA Wahlprogramm 2011", "titel": None, "pdf": "gruene-lsa-2011.pdf", "seiten": 94},
|
||
"linke-lsa-2011": {"id": "linke-lsa-2011", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "LSA", "wp": 6, "gueltig_ab": "2011-03-20", "gueltig_bis": "2016-04-13", "name": "DIE LINKE LSA Wahlprogramm 2011", "titel": None, "pdf": "linke-lsa-2011.pdf", "seiten": 36},
|
||
"spd-lsa-2011": {"id": "spd-lsa-2011", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "LSA", "wp": 6, "gueltig_ab": "2011-03-20", "gueltig_bis": "2016-04-13", "name": "SPD LSA Wahlprogramm 2011", "titel": None, "pdf": "spd-lsa-2011.pdf", "seiten": 38},
|
||
"afd-lsa-2016": {"id": "afd-lsa-2016", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "LSA", "wp": 7, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-06-06", "name": "AfD LSA Wahlprogramm 2016", "titel": None, "pdf": "afd-lsa-2016.pdf", "seiten": 68},
|
||
"cdu-lsa-2016": {"id": "cdu-lsa-2016", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "LSA", "wp": 7, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-06-06", "name": "CDU LSA Wahlprogramm 2016", "titel": None, "pdf": "cdu-lsa-2016.pdf", "seiten": 64},
|
||
"fdp-lsa-2016": {"id": "fdp-lsa-2016", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "LSA", "wp": 7, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-06-06", "name": "FDP LSA Wahlprogramm 2016", "titel": None, "pdf": "fdp-lsa-2016.pdf", "seiten": 51},
|
||
"gruene-lsa-2016": {"id": "gruene-lsa-2016", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "LSA", "wp": 7, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-06-06", "name": "Grüne LSA Wahlprogramm 2016", "titel": None, "pdf": "gruene-lsa-2016.pdf", "seiten": 129},
|
||
"linke-lsa-2016": {"id": "linke-lsa-2016", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "LSA", "wp": 7, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-06-06", "name": "DIE LINKE LSA Wahlprogramm 2016", "titel": None, "pdf": "linke-lsa-2016.pdf", "seiten": 59},
|
||
"spd-lsa-2016": {"id": "spd-lsa-2016", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "LSA", "wp": 7, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-06-06", "name": "SPD LSA Wahlprogramm 2016", "titel": None, "pdf": "spd-lsa-2016.pdf", "seiten": 72},
|
||
"afd-lsa-2021": {"id": "afd-lsa-2021", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "LSA", "wp": 8, "gueltig_ab": "2021-06-06", "gueltig_bis": None, "name": "AfD Sachsen-Anhalt Wahlprogramm 2021", "titel": "Alles für unsere Heimat! Programm der AfD Sachsen-Anhalt zur Landtagswahl 2021", "pdf": "afd-lsa-2021.pdf", "seiten": 64},
|
||
"cdu-lsa-2021": {"id": "cdu-lsa-2021", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "LSA", "wp": 8, "gueltig_ab": "2021-06-06", "gueltig_bis": None, "name": "CDU Sachsen-Anhalt Wahlprogramm 2021", "titel": "Unsere Heimat. Unsere Verantwortung.", "pdf": "cdu-lsa-2021.pdf", "seiten": 82},
|
||
"fdp-lsa-2021": {"id": "fdp-lsa-2021", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "LSA", "wp": 8, "gueltig_ab": "2021-06-06", "gueltig_bis": None, "name": "FDP Sachsen-Anhalt Wahlprogramm 2021", "titel": "Wahlprogramm der FDP Sachsen-Anhalt zur Landtagswahl 2021", "pdf": "fdp-lsa-2021.pdf", "seiten": 76},
|
||
"gruene-lsa-2021": {"id": "gruene-lsa-2021", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "LSA", "wp": 8, "gueltig_ab": "2021-06-06", "gueltig_bis": None, "name": "BÜNDNIS 90/DIE GRÜNEN Sachsen-Anhalt Wahlprogramm 2021", "titel": "Verlässlich für Sachsen-Anhalt", "pdf": "gruene-lsa-2021.pdf", "seiten": 164},
|
||
"linke-lsa-2021": {"id": "linke-lsa-2021", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "LSA", "wp": 8, "gueltig_ab": "2021-06-06", "gueltig_bis": None, "name": "DIE LINKE Sachsen-Anhalt Wahlprogramm 2021", "titel": "Wahlprogramm zur Landtagswahl 2021", "pdf": "linke-lsa-2021.pdf", "seiten": 88},
|
||
"spd-lsa-2021": {"id": "spd-lsa-2021", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "LSA", "wp": 8, "gueltig_ab": "2021-06-06", "gueltig_bis": None, "name": "SPD Sachsen-Anhalt Wahlprogramm 2021", "titel": "Zusammenhalt und neue Chancen. Politik fürs ganze Land", "pdf": "spd-lsa-2021.pdf", "seiten": 77},
|
||
|
||
# ─── wahlprogramm · MV ───
|
||
"cdu-mv-2011": {"id": "cdu-mv-2011", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "MV", "wp": 6, "gueltig_ab": "2011-09-04", "gueltig_bis": "2016-10-04", "name": "CDU MV Wahlprogramm 2011", "titel": None, "pdf": "cdu-mv-2011.pdf", "seiten": 34},
|
||
"gruene-mv-2011": {"id": "gruene-mv-2011", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "MV", "wp": 6, "gueltig_ab": "2011-09-04", "gueltig_bis": "2016-10-04", "name": "Grüne MV Wahlprogramm 2011", "titel": None, "pdf": "gruene-mv-2011.pdf", "seiten": 144},
|
||
"linke-mv-2011": {"id": "linke-mv-2011", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "MV", "wp": 6, "gueltig_ab": "2011-09-04", "gueltig_bis": "2016-10-04", "name": "DIE LINKE MV Wahlprogramm 2011", "titel": None, "pdf": "linke-mv-2011.pdf", "seiten": 33},
|
||
"spd-mv-2011": {"id": "spd-mv-2011", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "MV", "wp": 6, "gueltig_ab": "2011-09-04", "gueltig_bis": "2016-10-04", "name": "SPD MV Wahlprogramm 2011", "titel": None, "pdf": "spd-mv-2011.pdf", "seiten": 50},
|
||
"afd-mv-2016": {"id": "afd-mv-2016", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "MV", "wp": 7, "gueltig_ab": "2016-09-04", "gueltig_bis": "2021-09-26", "name": "AfD MV Wahlprogramm 2016", "titel": None, "pdf": "afd-mv-2016.pdf", "seiten": 22},
|
||
"cdu-mv-2016": {"id": "cdu-mv-2016", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "MV", "wp": 7, "gueltig_ab": "2016-09-04", "gueltig_bis": "2021-09-26", "name": "CDU MV Wahlprogramm 2016", "titel": None, "pdf": "cdu-mv-2016.pdf", "seiten": 27},
|
||
"gruene-mv-2016": {"id": "gruene-mv-2016", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "MV", "wp": 7, "gueltig_ab": "2016-09-04", "gueltig_bis": "2021-09-26", "name": "Grüne MV Wahlprogramm 2016", "titel": None, "pdf": "gruene-mv-2016.pdf", "seiten": 100},
|
||
"linke-mv-2016": {"id": "linke-mv-2016", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "MV", "wp": 7, "gueltig_ab": "2016-09-04", "gueltig_bis": "2021-09-26", "name": "DIE LINKE MV Wahlprogramm 2016", "titel": None, "pdf": "linke-mv-2016.pdf", "seiten": 49},
|
||
"spd-mv-2016": {"id": "spd-mv-2016", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "MV", "wp": 7, "gueltig_ab": "2016-09-04", "gueltig_bis": "2021-09-26", "name": "SPD MV Wahlprogramm 2016", "titel": None, "pdf": "spd-mv-2016.pdf", "seiten": 48},
|
||
"afd-mv-2021": {"id": "afd-mv-2021", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "MV", "wp": 8, "gueltig_ab": "2021-09-26", "gueltig_bis": None, "name": "AfD Mecklenburg-Vorpommern Wahlprogramm 2021", "titel": "Landeswahlprogramm der AfD Mecklenburg-Vorpommern 2021", "pdf": "afd-mv-2021.pdf", "seiten": 84},
|
||
"cdu-mv-2021": {"id": "cdu-mv-2021", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "MV", "wp": 8, "gueltig_ab": "2021-09-26", "gueltig_bis": None, "name": "CDU Mecklenburg-Vorpommern Wahlprogramm 2021", "titel": "Zusammen. Den Blick nach vorn. Gemeinsam die Zukunft meistern", "pdf": "cdu-mv-2021.pdf", "seiten": 56},
|
||
"fdp-mv-2021": {"id": "fdp-mv-2021", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "MV", "wp": 8, "gueltig_ab": "2021-09-26", "gueltig_bis": None, "name": "FDP Mecklenburg-Vorpommern Wahlprogramm 2021", "titel": "Wahlprogramm der Freien Demokraten Mecklenburg-Vorpommern zur Landtagswahl 2021", "pdf": "fdp-mv-2021.pdf", "seiten": 120},
|
||
"gruene-mv-2021": {"id": "gruene-mv-2021", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "MV", "wp": 8, "gueltig_ab": "2021-09-26", "gueltig_bis": None, "name": "BÜNDNIS 90/DIE GRÜNEN Mecklenburg-Vorpommern Wahlprogramm 2021", "titel": "Für Klima, Land und ein besseres Miteinander", "pdf": "gruene-mv-2021.pdf", "seiten": 88},
|
||
"linke-mv-2021": {"id": "linke-mv-2021", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "MV", "wp": 8, "gueltig_ab": "2021-09-26", "gueltig_bis": None, "name": "DIE LINKE Mecklenburg-Vorpommern Wahlprogramm 2021", "titel": "Das ist links! — Zukunftsprogramm für Mecklenburg-Vorpommern", "pdf": "linke-mv-2021.pdf", "seiten": 82},
|
||
"spd-mv-2021": {"id": "spd-mv-2021", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "MV", "wp": 8, "gueltig_ab": "2021-09-26", "gueltig_bis": None, "name": "SPD Mecklenburg-Vorpommern Wahlprogramm 2021", "titel": "Verantwortung für heute und morgen — Regierungsprogramm 2021–2026", "pdf": "spd-mv-2021.pdf", "seiten": 95},
|
||
|
||
# ─── wahlprogramm · NI ───
|
||
"cdu-ni-2013": {"id": "cdu-ni-2013", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "NI", "wp": 17, "gueltig_ab": "2013-01-20", "gueltig_bis": "2017-11-14", "name": "CDU NI Wahlprogramm 2013", "titel": None, "pdf": "cdu-ni-2013.pdf", "seiten": 86},
|
||
"fdp-ni-2013": {"id": "fdp-ni-2013", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "NI", "wp": 17, "gueltig_ab": "2013-01-20", "gueltig_bis": "2017-11-14", "name": "FDP NI Wahlprogramm 2013", "titel": None, "pdf": "fdp-ni-2013.pdf", "seiten": 65},
|
||
"gruene-ni-2013": {"id": "gruene-ni-2013", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "NI", "wp": 17, "gueltig_ab": "2013-01-20", "gueltig_bis": "2017-11-14", "name": "Grüne NI Wahlprogramm 2013", "titel": None, "pdf": "gruene-ni-2013.pdf", "seiten": 92},
|
||
"spd-ni-2013": {"id": "spd-ni-2013", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "NI", "wp": 17, "gueltig_ab": "2013-01-20", "gueltig_bis": "2017-11-14", "name": "SPD NI Wahlprogramm 2013", "titel": None, "pdf": "spd-ni-2013.pdf", "seiten": 70},
|
||
"afd-ni-2017": {"id": "afd-ni-2017", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "NI", "wp": 18, "gueltig_ab": "2017-10-15", "gueltig_bis": "2022-10-09", "name": "AfD NI Wahlprogramm 2017", "titel": None, "pdf": "afd-ni-2017.pdf", "seiten": 93},
|
||
"cdu-ni-2017": {"id": "cdu-ni-2017", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "NI", "wp": 18, "gueltig_ab": "2017-10-15", "gueltig_bis": "2022-10-09", "name": "CDU NI Wahlprogramm 2017", "titel": None, "pdf": "cdu-ni-2017.pdf", "seiten": 116},
|
||
"fdp-ni-2017": {"id": "fdp-ni-2017", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "NI", "wp": 18, "gueltig_ab": "2017-10-15", "gueltig_bis": "2022-10-09", "name": "FDP NI Wahlprogramm 2017", "titel": None, "pdf": "fdp-ni-2017.pdf", "seiten": 74},
|
||
"gruene-ni-2017": {"id": "gruene-ni-2017", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "NI", "wp": 18, "gueltig_ab": "2017-10-15", "gueltig_bis": "2022-10-09", "name": "Grüne NI Wahlprogramm 2017", "titel": None, "pdf": "gruene-ni-2017.pdf", "seiten": 101},
|
||
"spd-ni-2017": {"id": "spd-ni-2017", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "NI", "wp": 18, "gueltig_ab": "2017-10-15", "gueltig_bis": "2022-10-09", "name": "SPD NI Wahlprogramm 2017", "titel": None, "pdf": "spd-ni-2017.pdf", "seiten": 154},
|
||
"afd-ni-2022": {"id": "afd-ni-2022", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "NI", "wp": 19, "gueltig_ab": "2022-10-09", "gueltig_bis": None, "name": "AfD Niedersachsen Wahlprogramm 2022", "titel": None, "pdf": "afd-ni-2022.pdf", "seiten": 100},
|
||
"cdu-ni-2022": {"id": "cdu-ni-2022", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "NI", "wp": 19, "gueltig_ab": "2022-10-09", "gueltig_bis": None, "name": "CDU Niedersachsen Wahlprogramm 2022", "titel": "CDU Niedersachsen Regierungsprogramm 2022", "pdf": "cdu-ni-2022.pdf", "seiten": 100},
|
||
"gruene-ni-2022": {"id": "gruene-ni-2022", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "NI", "wp": 19, "gueltig_ab": "2022-10-09", "gueltig_bis": None, "name": "BÜNDNIS 90/DIE GRÜNEN Niedersachsen Wahlprogramm 2022", "titel": None, "pdf": "gruene-ni-2022.pdf", "seiten": 100},
|
||
"spd-ni-2022": {"id": "spd-ni-2022", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "NI", "wp": 19, "gueltig_ab": "2022-10-09", "gueltig_bis": None, "name": "SPD Niedersachsen Wahlprogramm 2022", "titel": "SPD Niedersachsen Regierungsprogramm 2022", "pdf": "spd-ni-2022.pdf", "seiten": 100},
|
||
|
||
# ─── wahlprogramm · NRW ───
|
||
"cdu-nrw-2012": {"id": "cdu-nrw-2012", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "NRW", "wp": 16, "gueltig_ab": "2012-05-13", "gueltig_bis": "2017-06-01", "name": "CDU NRW Wahlprogramm 2012", "titel": None, "pdf": "cdu-nrw-2012.pdf", "seiten": 17},
|
||
"fdp-nrw-2012": {"id": "fdp-nrw-2012", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "NRW", "wp": 16, "gueltig_ab": "2012-05-13", "gueltig_bis": "2017-06-01", "name": "FDP NRW Wahlprogramm 2012", "titel": None, "pdf": "fdp-nrw-2012.pdf", "seiten": 6},
|
||
"gruene-nrw-2012": {"id": "gruene-nrw-2012", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "NRW", "wp": 16, "gueltig_ab": "2012-05-13", "gueltig_bis": "2017-06-01", "name": "Grüne NRW Zukunftsplan Update 2012", "titel": None, "pdf": "gruene-nrw-2012.pdf", "seiten": 52},
|
||
"piraten-nrw-2012": {"id": "piraten-nrw-2012", "typ": "wahlprogramm", "partei": "PIRATEN", "bundesland": "NRW", "wp": 16, "gueltig_ab": "2012-05-13", "gueltig_bis": "2017-06-01", "name": "PIRATEN NRW Wahlprogramm 2012", "titel": None, "pdf": "piraten-nrw-2012.pdf", "seiten": 76},
|
||
"spd-nrw-2012": {"id": "spd-nrw-2012", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "NRW", "wp": 16, "gueltig_ab": "2012-05-13", "gueltig_bis": "2017-06-01", "name": "SPD NRW Wahlprogramm 2012", "titel": None, "pdf": "spd-nrw-2012.pdf", "seiten": 22},
|
||
"afd-nrw-2017": {"id": "afd-nrw-2017", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "NRW", "wp": 17, "gueltig_ab": "2017-05-14", "gueltig_bis": "2022-05-15", "name": "AfD NRW Wahlprogramm 2017", "titel": None, "pdf": "afd-nrw-2017.pdf", "seiten": 84},
|
||
"cdu-nrw-2017": {"id": "cdu-nrw-2017", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "NRW", "wp": 17, "gueltig_ab": "2017-05-14", "gueltig_bis": "2022-05-15", "name": "CDU NRW Regierungsprogramm 2017", "titel": None, "pdf": "cdu-nrw-2017.pdf", "seiten": 120},
|
||
"fdp-nrw-2017": {"id": "fdp-nrw-2017", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "NRW", "wp": 17, "gueltig_ab": "2017-05-14", "gueltig_bis": "2022-05-15", "name": "FDP NRW Wahlprogramm 2017", "titel": None, "pdf": "fdp-nrw-2017.pdf", "seiten": 56},
|
||
"gruene-nrw-2017": {"id": "gruene-nrw-2017", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "NRW", "wp": 17, "gueltig_ab": "2017-05-14", "gueltig_bis": "2022-05-15", "name": "Grüne NRW Wahlprogramm 2017", "titel": None, "pdf": "gruene-nrw-2017.pdf", "seiten": 131},
|
||
"spd-nrw-2017": {"id": "spd-nrw-2017", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "NRW", "wp": 17, "gueltig_ab": "2017-05-14", "gueltig_bis": "2022-05-15", "name": "SPD NRW Regierungsprogramm 2017", "titel": None, "pdf": "spd-nrw-2017.pdf", "seiten": 116},
|
||
"afd-nrw-2022": {"id": "afd-nrw-2022", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "NRW", "wp": 18, "gueltig_ab": "2022-05-15", "gueltig_bis": None, "name": "AfD NRW Wahlprogramm 2022", "titel": "Wer sonst.", "pdf": "afd-nrw-2022.pdf", "seiten": 68},
|
||
"cdu-nrw-2022": {"id": "cdu-nrw-2022", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "NRW", "wp": 18, "gueltig_ab": "2022-05-15", "gueltig_bis": None, "name": "CDU NRW Wahlprogramm 2022", "titel": "Machen, worauf es ankommt", "pdf": "cdu-nrw-2022.pdf", "seiten": 109},
|
||
"fdp-nrw-2022": {"id": "fdp-nrw-2022", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "NRW", "wp": 18, "gueltig_ab": "2022-05-15", "gueltig_bis": None, "name": "FDP NRW Wahlprogramm 2022", "titel": "Nie gab es mehr zu tun", "pdf": "fdp-nrw-2022.pdf", "seiten": 96},
|
||
"gruene-nrw-2022": {"id": "gruene-nrw-2022", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "NRW", "wp": 18, "gueltig_ab": "2022-05-15", "gueltig_bis": None, "name": "BÜNDNIS 90/DIE GRÜNEN NRW Wahlprogramm 2022", "titel": "Von hier an Zukunft", "pdf": "gruene-nrw-2022.pdf", "seiten": 100},
|
||
"spd-nrw-2022": {"id": "spd-nrw-2022", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "NRW", "wp": 18, "gueltig_ab": "2022-05-15", "gueltig_bis": None, "name": "SPD NRW Wahlprogramm 2022", "titel": "Unser Land von morgen", "pdf": "spd-nrw-2022.pdf", "seiten": 116},
|
||
|
||
# ─── wahlprogramm · RP ───
|
||
"cdu-rp-2011": {"id": "cdu-rp-2011", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "RP", "wp": 16, "gueltig_ab": "2011-03-27", "gueltig_bis": "2016-05-18", "name": "CDU RP Wahlprogramm 2011", "titel": None, "pdf": "cdu-rp-2011.pdf", "seiten": 84},
|
||
"gruene-rp-2011": {"id": "gruene-rp-2011", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "RP", "wp": 16, "gueltig_ab": "2011-03-27", "gueltig_bis": "2016-05-18", "name": "Grüne RP Wahlprogramm 2011", "titel": None, "pdf": "gruene-rp-2011.pdf", "seiten": 110},
|
||
"spd-rp-2011": {"id": "spd-rp-2011", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "RP", "wp": 16, "gueltig_ab": "2011-03-27", "gueltig_bis": "2016-05-18", "name": "SPD RP Wahlprogramm 2011", "titel": None, "pdf": "spd-rp-2011.pdf", "seiten": 65},
|
||
"afd-rp-2016": {"id": "afd-rp-2016", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "RP", "wp": 17, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-03-14", "name": "AfD RP Wahlprogramm 2016", "titel": None, "pdf": "afd-rp-2016.pdf", "seiten": 17},
|
||
"cdu-rp-2016": {"id": "cdu-rp-2016", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "RP", "wp": 17, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-03-14", "name": "CDU RP Wahlprogramm 2016", "titel": None, "pdf": "cdu-rp-2016.pdf", "seiten": 102},
|
||
"fdp-rp-2016": {"id": "fdp-rp-2016", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "RP", "wp": 17, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-03-14", "name": "FDP RP Wahlprogramm 2016", "titel": None, "pdf": "fdp-rp-2016.pdf", "seiten": 84},
|
||
"gruene-rp-2016": {"id": "gruene-rp-2016", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "RP", "wp": 17, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-03-14", "name": "Grüne RP Wahlprogramm 2016", "titel": None, "pdf": "gruene-rp-2016.pdf", "seiten": 57},
|
||
"spd-rp-2016": {"id": "spd-rp-2016", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "RP", "wp": 17, "gueltig_ab": "2016-03-13", "gueltig_bis": "2021-03-14", "name": "SPD RP Wahlprogramm 2016", "titel": None, "pdf": "spd-rp-2016.pdf", "seiten": 64},
|
||
"afd-rp-2021": {"id": "afd-rp-2021", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "RP", "wp": 18, "gueltig_ab": "2021-03-14", "gueltig_bis": None, "name": "AfD Rheinland-Pfalz Wahlprogramm 2021", "titel": None, "pdf": "afd-rp-2021.pdf", "seiten": 100},
|
||
"cdu-rp-2021": {"id": "cdu-rp-2021", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "RP", "wp": 18, "gueltig_ab": "2021-03-14", "gueltig_bis": None, "name": "CDU Rheinland-Pfalz Wahlprogramm 2021", "titel": "Regierungsprogramm der CDU RLP 2021–26", "pdf": "cdu-rp-2021.pdf", "seiten": 100},
|
||
"fdp-rp-2021": {"id": "fdp-rp-2021", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "RP", "wp": 18, "gueltig_ab": "2021-03-14", "gueltig_bis": None, "name": "FDP Rheinland-Pfalz Wahlprogramm 2021", "titel": "FDP Rheinland-Pfalz Landtagswahlprogramm 2021", "pdf": "fdp-rp-2021.pdf", "seiten": 100},
|
||
"fw-rp-2021": {"id": "fw-rp-2021", "typ": "wahlprogramm", "partei": "FREIE WÄHLER", "bundesland": "RP", "wp": 18, "gueltig_ab": "2021-03-14", "gueltig_bis": None, "name": "FREIE WÄHLER Rheinland-Pfalz Wahlprogramm 2021", "titel": None, "pdf": "fw-rp-2021.pdf", "seiten": 80},
|
||
"gruene-rp-2021": {"id": "gruene-rp-2021", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "RP", "wp": 18, "gueltig_ab": "2021-03-14", "gueltig_bis": None, "name": "BÜNDNIS 90/DIE GRÜNEN Rheinland-Pfalz Wahlprogramm 2021", "titel": "BÜNDNIS 90/DIE GRÜNEN Rheinland-Pfalz Landtagswahlprogramm 2021", "pdf": "gruene-rp-2021.pdf", "seiten": 100},
|
||
"spd-rp-2021": {"id": "spd-rp-2021", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "RP", "wp": 18, "gueltig_ab": "2021-03-14", "gueltig_bis": None, "name": "SPD Rheinland-Pfalz Wahlprogramm 2021", "titel": "Wir mit Ihr — Regierungsprogramm der SPD Rheinland-Pfalz 2021–2026", "pdf": "spd-rp-2021.pdf", "seiten": 100},
|
||
|
||
# ─── wahlprogramm · SH ───
|
||
"cdu-sh-2012": {"id": "cdu-sh-2012", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "SH", "wp": 18, "gueltig_ab": "2012-05-06", "gueltig_bis": "2017-06-06", "name": "CDU SH Wahlprogramm 2012", "titel": None, "pdf": "cdu-sh-2012.pdf", "seiten": 150},
|
||
"fdp-sh-2012": {"id": "fdp-sh-2012", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "SH", "wp": 18, "gueltig_ab": "2012-05-06", "gueltig_bis": "2017-06-06", "name": "FDP SH Wahlprogramm 2012", "titel": None, "pdf": "fdp-sh-2012.pdf", "seiten": 99},
|
||
"gruene-sh-2012": {"id": "gruene-sh-2012", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "SH", "wp": 18, "gueltig_ab": "2012-05-06", "gueltig_bis": "2017-06-06", "name": "Grüne SH Wahlprogramm 2012", "titel": None, "pdf": "gruene-sh-2012.pdf", "seiten": 80},
|
||
"piraten-sh-2012": {"id": "piraten-sh-2012", "typ": "wahlprogramm", "partei": "PIRATEN", "bundesland": "SH", "wp": 18, "gueltig_ab": "2012-05-06", "gueltig_bis": "2017-06-06", "name": "PIRATEN SH Wahlprogramm 2012", "titel": None, "pdf": "piraten-sh-2012.pdf", "seiten": 80},
|
||
"spd-sh-2012": {"id": "spd-sh-2012", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "SH", "wp": 18, "gueltig_ab": "2012-05-06", "gueltig_bis": "2017-06-06", "name": "SPD SH Wahlprogramm 2012", "titel": None, "pdf": "spd-sh-2012.pdf", "seiten": 36},
|
||
"ssw-sh-2012": {"id": "ssw-sh-2012", "typ": "wahlprogramm", "partei": "SSW", "bundesland": "SH", "wp": 18, "gueltig_ab": "2012-05-06", "gueltig_bis": "2017-06-06", "name": "SSW SH Wahlprogramm 2012", "titel": None, "pdf": "ssw-sh-2012.pdf", "seiten": 84},
|
||
"afd-sh-2017": {"id": "afd-sh-2017", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "SH", "wp": 19, "gueltig_ab": "2017-05-07", "gueltig_bis": "2022-05-08", "name": "AfD SH Wahlprogramm 2017", "titel": None, "pdf": "afd-sh-2017.pdf", "seiten": 56},
|
||
"cdu-sh-2017": {"id": "cdu-sh-2017", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "SH", "wp": 19, "gueltig_ab": "2017-05-07", "gueltig_bis": "2022-05-08", "name": "CDU SH Wahlprogramm 2017", "titel": None, "pdf": "cdu-sh-2017.pdf", "seiten": 96},
|
||
"fdp-sh-2017": {"id": "fdp-sh-2017", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "SH", "wp": 19, "gueltig_ab": "2017-05-07", "gueltig_bis": "2022-05-08", "name": "FDP SH Wahlprogramm 2017", "titel": None, "pdf": "fdp-sh-2017.pdf", "seiten": 117},
|
||
"gruene-sh-2017": {"id": "gruene-sh-2017", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "SH", "wp": 19, "gueltig_ab": "2017-05-07", "gueltig_bis": "2022-05-08", "name": "Grüne SH Wahlprogramm 2017", "titel": None, "pdf": "gruene-sh-2017.pdf", "seiten": 95},
|
||
"spd-sh-2017": {"id": "spd-sh-2017", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "SH", "wp": 19, "gueltig_ab": "2017-05-07", "gueltig_bis": "2022-05-08", "name": "SPD SH Wahlprogramm 2017", "titel": None, "pdf": "spd-sh-2017.pdf", "seiten": 66},
|
||
"ssw-sh-2017": {"id": "ssw-sh-2017", "typ": "wahlprogramm", "partei": "SSW", "bundesland": "SH", "wp": 19, "gueltig_ab": "2017-05-07", "gueltig_bis": "2022-05-08", "name": "SSW SH Wahlprogramm 2017", "titel": None, "pdf": "ssw-sh-2017.pdf", "seiten": 60},
|
||
"cdu-sh-2022": {"id": "cdu-sh-2022", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "SH", "wp": 20, "gueltig_ab": "2022-05-08", "gueltig_bis": None, "name": "CDU Schleswig-Holstein Wahlprogramm 2022", "titel": None, "pdf": "cdu-sh-2022.pdf", "seiten": 100},
|
||
"fdp-sh-2022": {"id": "fdp-sh-2022", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "SH", "wp": 20, "gueltig_ab": "2022-05-08", "gueltig_bis": None, "name": "FDP Schleswig-Holstein Wahlprogramm 2022", "titel": None, "pdf": "fdp-sh-2022.pdf", "seiten": 100},
|
||
"gruene-sh-2022": {"id": "gruene-sh-2022", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "SH", "wp": 20, "gueltig_ab": "2022-05-08", "gueltig_bis": None, "name": "BÜNDNIS 90/DIE GRÜNEN Schleswig-Holstein Wahlprogramm 2022", "titel": None, "pdf": "gruene-sh-2022.pdf", "seiten": 100},
|
||
"spd-sh-2022": {"id": "spd-sh-2022", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "SH", "wp": 20, "gueltig_ab": "2022-05-08", "gueltig_bis": None, "name": "SPD Schleswig-Holstein Wahlprogramm 2022", "titel": None, "pdf": "spd-sh-2022.pdf", "seiten": 100},
|
||
"ssw-sh-2022": {"id": "ssw-sh-2022", "typ": "wahlprogramm", "partei": "SSW", "bundesland": "SH", "wp": 20, "gueltig_ab": "2022-05-08", "gueltig_bis": None, "name": "SSW Wahlprogramm 2022", "titel": "SSW Schleswig-Holstein Wahlprogramm 2022", "pdf": "ssw-sh-2022.pdf", "seiten": 80},
|
||
|
||
# ─── wahlprogramm · SL ───
|
||
"cdu-sl-2012": {"id": "cdu-sl-2012", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "SL", "wp": 15, "gueltig_ab": "2012-03-25", "gueltig_bis": "2017-05-09", "name": "CDU SL Wahlprogramm 2012", "titel": None, "pdf": "cdu-sl-2012.pdf", "seiten": 36},
|
||
"linke-sl-2012": {"id": "linke-sl-2012", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "SL", "wp": 15, "gueltig_ab": "2012-03-25", "gueltig_bis": "2017-05-09", "name": "DIE LINKE SL Wahlprogramm 2012", "titel": None, "pdf": "linke-sl-2012.pdf", "seiten": 2},
|
||
"piraten-sl-2012": {"id": "piraten-sl-2012", "typ": "wahlprogramm", "partei": "PIRATEN", "bundesland": "SL", "wp": 15, "gueltig_ab": "2012-03-25", "gueltig_bis": "2017-05-09", "name": "PIRATEN SL Wahlprogramm 2012", "titel": None, "pdf": "piraten-sl-2012.pdf", "seiten": 21},
|
||
"spd-sl-2012": {"id": "spd-sl-2012", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "SL", "wp": 15, "gueltig_ab": "2012-03-25", "gueltig_bis": "2017-05-09", "name": "SPD SL Wahlprogramm 2012", "titel": None, "pdf": "spd-sl-2012.pdf", "seiten": 40},
|
||
"afd-sl-2017": {"id": "afd-sl-2017", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "SL", "wp": 16, "gueltig_ab": "2017-03-26", "gueltig_bis": "2022-03-27", "name": "AfD SL Wahlprogramm 2017", "titel": None, "pdf": "afd-sl-2017.pdf", "seiten": 43},
|
||
"cdu-sl-2017": {"id": "cdu-sl-2017", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "SL", "wp": 16, "gueltig_ab": "2017-03-26", "gueltig_bis": "2022-03-27", "name": "CDU SL Wahlprogramm 2017", "titel": None, "pdf": "cdu-sl-2017.pdf", "seiten": 72},
|
||
"gruene-sl-2017": {"id": "gruene-sl-2017", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "SL", "wp": 16, "gueltig_ab": "2017-03-26", "gueltig_bis": "2022-03-27", "name": "Grüne SL Wahlprogramm 2017", "titel": None, "pdf": "gruene-sl-2017.pdf", "seiten": 75},
|
||
"linke-sl-2017": {"id": "linke-sl-2017", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "SL", "wp": 16, "gueltig_ab": "2017-03-26", "gueltig_bis": "2022-03-27", "name": "DIE LINKE SL Wahlprogramm 2017", "titel": None, "pdf": "linke-sl-2017.pdf", "seiten": 34},
|
||
"spd-sl-2017": {"id": "spd-sl-2017", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "SL", "wp": 16, "gueltig_ab": "2017-03-26", "gueltig_bis": "2022-03-27", "name": "SPD SL Wahlprogramm 2017", "titel": None, "pdf": "spd-sl-2017.pdf", "seiten": 41},
|
||
"afd-sl-2022": {"id": "afd-sl-2022", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "SL", "wp": 17, "gueltig_ab": "2022-03-27", "gueltig_bis": None, "name": "AfD Saarland Wahlprogramm 2022", "titel": None, "pdf": "afd-sl-2022.pdf", "seiten": 100},
|
||
"cdu-sl-2022": {"id": "cdu-sl-2022", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "SL", "wp": 17, "gueltig_ab": "2022-03-27", "gueltig_bis": None, "name": "CDU Saarland Wahlprogramm 2022", "titel": None, "pdf": "cdu-sl-2022.pdf", "seiten": 100},
|
||
"spd-sl-2022": {"id": "spd-sl-2022", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "SL", "wp": 17, "gueltig_ab": "2022-03-27", "gueltig_bis": None, "name": "SPD Saarland Wahlprogramm 2022", "titel": "SPD Saarland Regierungsprogramm 2022", "pdf": "spd-sl-2022.pdf", "seiten": 100},
|
||
|
||
# ─── wahlprogramm · SN ───
|
||
"afd-sn-2014": {"id": "afd-sn-2014", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "SN", "wp": 6, "gueltig_ab": "2014-08-31", "gueltig_bis": "2019-09-01", "name": "AfD SN Wahlprogramm 2014", "titel": None, "pdf": "afd-sn-2014.pdf", "seiten": 26},
|
||
"cdu-sn-2014": {"id": "cdu-sn-2014", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "SN", "wp": 6, "gueltig_ab": "2014-08-31", "gueltig_bis": "2019-09-01", "name": "CDU SN Wahlprogramm 2014", "titel": None, "pdf": "cdu-sn-2014.pdf", "seiten": 86},
|
||
"gruene-sn-2014": {"id": "gruene-sn-2014", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "SN", "wp": 6, "gueltig_ab": "2014-08-31", "gueltig_bis": "2019-09-01", "name": "Grüne SN Wahlprogramm 2014", "titel": None, "pdf": "gruene-sn-2014.pdf", "seiten": 149},
|
||
"linke-sn-2014": {"id": "linke-sn-2014", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "SN", "wp": 6, "gueltig_ab": "2014-08-31", "gueltig_bis": "2019-09-01", "name": "DIE LINKE SN Wahlprogramm 2014", "titel": None, "pdf": "linke-sn-2014.pdf", "seiten": 56},
|
||
"spd-sn-2014": {"id": "spd-sn-2014", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "SN", "wp": 6, "gueltig_ab": "2014-08-31", "gueltig_bis": "2019-09-01", "name": "SPD SN Wahlprogramm 2014", "titel": None, "pdf": "spd-sn-2014.pdf", "seiten": 56},
|
||
"afd-sn-2019": {"id": "afd-sn-2019", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "SN", "wp": 7, "gueltig_ab": "2019-09-01", "gueltig_bis": "2024-09-01", "name": "AfD SN Wahlprogramm 2019", "titel": None, "pdf": "afd-sn-2019.pdf", "seiten": 76},
|
||
"cdu-sn-2019": {"id": "cdu-sn-2019", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "SN", "wp": 7, "gueltig_ab": "2019-09-01", "gueltig_bis": "2024-09-01", "name": "CDU SN Wahlprogramm 2019", "titel": None, "pdf": "cdu-sn-2019.pdf", "seiten": 71},
|
||
"gruene-sn-2019": {"id": "gruene-sn-2019", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "SN", "wp": 7, "gueltig_ab": "2019-09-01", "gueltig_bis": "2024-09-01", "name": "Grüne SN Wahlprogramm 2019", "titel": None, "pdf": "gruene-sn-2019.pdf", "seiten": 86},
|
||
"linke-sn-2019": {"id": "linke-sn-2019", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "SN", "wp": 7, "gueltig_ab": "2019-09-01", "gueltig_bis": "2024-09-01", "name": "DIE LINKE SN Wahlprogramm 2019", "titel": None, "pdf": "linke-sn-2019.pdf", "seiten": 72},
|
||
"spd-sn-2019": {"id": "spd-sn-2019", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "SN", "wp": 7, "gueltig_ab": "2019-09-01", "gueltig_bis": "2024-09-01", "name": "SPD SN Wahlprogramm 2019", "titel": None, "pdf": "spd-sn-2019.pdf", "seiten": 105},
|
||
"afd-sn-2024": {"id": "afd-sn-2024", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "SN", "wp": 8, "gueltig_ab": "2024-09-01", "gueltig_bis": None, "name": "AfD Sachsen Wahlprogramm 2024", "titel": None, "pdf": "afd-sn-2024.pdf", "seiten": 100},
|
||
"bsw-sn-2024": {"id": "bsw-sn-2024", "typ": "wahlprogramm", "partei": "BSW", "bundesland": "SN", "wp": 8, "gueltig_ab": "2024-09-01", "gueltig_bis": None, "name": "BSW Sachsen Wahlprogramm 2024", "titel": None, "pdf": "bsw-sn-2024.pdf", "seiten": 50},
|
||
"cdu-sn-2024": {"id": "cdu-sn-2024", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "SN", "wp": 8, "gueltig_ab": "2024-09-01", "gueltig_bis": None, "name": "CDU Sachsen Wahlprogramm 2024", "titel": None, "pdf": "cdu-sn-2024.pdf", "seiten": 100},
|
||
"gruene-sn-2024": {"id": "gruene-sn-2024", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "SN", "wp": 8, "gueltig_ab": "2024-09-01", "gueltig_bis": None, "name": "BÜNDNIS 90/DIE GRÜNEN Sachsen Wahlprogramm 2024", "titel": None, "pdf": "gruene-sn-2024.pdf", "seiten": 100},
|
||
"linke-sn-2024": {"id": "linke-sn-2024", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "SN", "wp": 8, "gueltig_ab": "2024-09-01", "gueltig_bis": None, "name": "DIE LINKE Sachsen Wahlprogramm 2024", "titel": None, "pdf": "linke-sn-2024.pdf", "seiten": 100},
|
||
"spd-sn-2024": {"id": "spd-sn-2024", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "SN", "wp": 8, "gueltig_ab": "2024-09-01", "gueltig_bis": None, "name": "SPD Sachsen Wahlprogramm 2024", "titel": None, "pdf": "spd-sn-2024.pdf", "seiten": 100},
|
||
|
||
# ─── wahlprogramm · TH ───
|
||
"afd-th-2014": {"id": "afd-th-2014", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "TH", "wp": 6, "gueltig_ab": "2014-09-14", "gueltig_bis": "2019-10-27", "name": "AfD TH Wahlprogramm 2014", "titel": None, "pdf": "afd-th-2014.pdf", "seiten": 32},
|
||
"cdu-th-2014": {"id": "cdu-th-2014", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "TH", "wp": 6, "gueltig_ab": "2014-09-14", "gueltig_bis": "2019-10-27", "name": "CDU TH Wahlprogramm 2014", "titel": None, "pdf": "cdu-th-2014.pdf", "seiten": 82},
|
||
"fdp-th-2014": {"id": "fdp-th-2014", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "TH", "wp": 6, "gueltig_ab": "2014-09-14", "gueltig_bis": "2019-10-27", "name": "FDP TH Wahlprogramm 2014", "titel": None, "pdf": "fdp-th-2014.pdf", "seiten": 77},
|
||
"gruene-th-2014": {"id": "gruene-th-2014", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "TH", "wp": 6, "gueltig_ab": "2014-09-14", "gueltig_bis": "2019-10-27", "name": "Grüne TH Wahlprogramm 2014", "titel": None, "pdf": "gruene-th-2014.pdf", "seiten": 84},
|
||
"linke-th-2014": {"id": "linke-th-2014", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "TH", "wp": 6, "gueltig_ab": "2014-09-14", "gueltig_bis": "2019-10-27", "name": "DIE LINKE TH Wahlprogramm 2014", "titel": None, "pdf": "linke-th-2014.pdf", "seiten": 60},
|
||
"spd-th-2014": {"id": "spd-th-2014", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "TH", "wp": 6, "gueltig_ab": "2014-09-14", "gueltig_bis": "2019-10-27", "name": "SPD TH Wahlprogramm 2014", "titel": None, "pdf": "spd-th-2014.pdf", "seiten": 52},
|
||
"afd-th-2019": {"id": "afd-th-2019", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "TH", "wp": 7, "gueltig_ab": "2019-10-27", "gueltig_bis": "2024-09-01", "name": "AfD TH Wahlprogramm 2019", "titel": None, "pdf": "afd-th-2019.pdf", "seiten": 96},
|
||
"cdu-th-2019": {"id": "cdu-th-2019", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "TH", "wp": 7, "gueltig_ab": "2019-10-27", "gueltig_bis": "2024-09-01", "name": "CDU TH Wahlprogramm 2019", "titel": None, "pdf": "cdu-th-2019.pdf", "seiten": 48},
|
||
"fdp-th-2019": {"id": "fdp-th-2019", "typ": "wahlprogramm", "partei": "FDP", "bundesland": "TH", "wp": 7, "gueltig_ab": "2019-10-27", "gueltig_bis": "2024-09-01", "name": "FDP TH Wahlprogramm 2019", "titel": None, "pdf": "fdp-th-2019.pdf", "seiten": 86},
|
||
"gruene-th-2019": {"id": "gruene-th-2019", "typ": "wahlprogramm", "partei": "GRÜNE", "bundesland": "TH", "wp": 7, "gueltig_ab": "2019-10-27", "gueltig_bis": "2024-09-01", "name": "Grüne TH Wahlprogramm 2019", "titel": None, "pdf": "gruene-th-2019.pdf", "seiten": 83},
|
||
"linke-th-2019": {"id": "linke-th-2019", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "TH", "wp": 7, "gueltig_ab": "2019-10-27", "gueltig_bis": "2024-09-01", "name": "DIE LINKE TH Wahlprogramm 2019", "titel": None, "pdf": "linke-th-2019.pdf", "seiten": 105},
|
||
"spd-th-2019": {"id": "spd-th-2019", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "TH", "wp": 7, "gueltig_ab": "2019-10-27", "gueltig_bis": "2024-09-01", "name": "SPD TH Wahlprogramm 2019", "titel": None, "pdf": "spd-th-2019.pdf", "seiten": 32},
|
||
"afd-th-2024": {"id": "afd-th-2024", "typ": "wahlprogramm", "partei": "AfD", "bundesland": "TH", "wp": 8, "gueltig_ab": "2024-09-01", "gueltig_bis": None, "name": "AfD Thüringen Wahlprogramm 2024", "titel": "AfD Thüringen Landtagswahlprogramm 2024", "pdf": "afd-th-2024.pdf", "seiten": 100},
|
||
"bsw-th-2024": {"id": "bsw-th-2024", "typ": "wahlprogramm", "partei": "BSW", "bundesland": "TH", "wp": 8, "gueltig_ab": "2024-09-01", "gueltig_bis": None, "name": "BSW Thüringen Wahlprogramm 2024", "titel": None, "pdf": "bsw-th-2024.pdf", "seiten": 50},
|
||
"cdu-th-2024": {"id": "cdu-th-2024", "typ": "wahlprogramm", "partei": "CDU", "bundesland": "TH", "wp": 8, "gueltig_ab": "2024-09-01", "gueltig_bis": None, "name": "CDU Thüringen Wahlprogramm 2024", "titel": "Wahlprogramm der CDU Thüringen 2024", "pdf": "cdu-th-2024.pdf", "seiten": 83},
|
||
"linke-th-2024": {"id": "linke-th-2024", "typ": "wahlprogramm", "partei": "LINKE", "bundesland": "TH", "wp": 8, "gueltig_ab": "2024-09-01", "gueltig_bis": None, "name": "DIE LINKE Thüringen Wahlprogramm 2024", "titel": None, "pdf": "linke-th-2024.pdf", "seiten": 100},
|
||
"spd-th-2024": {"id": "spd-th-2024", "typ": "wahlprogramm", "partei": "SPD", "bundesland": "TH", "wp": 8, "gueltig_ab": "2024-09-01", "gueltig_bis": None, "name": "SPD Thüringen Wahlprogramm 2024", "titel": None, "pdf": "spd-th-2024.pdf", "seiten": 100},
|
||
}
|
||
|
||
|
||
# ─────────────────────────────────────────────────────────────────────────────
|
||
# Helper-API
|
||
# ─────────────────────────────────────────────────────────────────────────────
|
||
|
||
|
||
def _date_in_range(datum: str, ab: str, bis: Optional[str]) -> bool:
|
||
"""Liefert True, wenn ``datum`` (ISO) in [ab, bis) liegt."""
|
||
if datum < ab:
|
||
return False
|
||
if bis is None:
|
||
return True
|
||
return datum < bis
|
||
|
||
|
||
def get_programm(programm_id: str) -> Optional[Programm]:
|
||
"""Lookup nach ID."""
|
||
return PROGRAMME.get(programm_id)
|
||
|
||
|
||
def get_programm_by_pdf(pdf: str) -> Optional[Programm]:
|
||
"""Reverse-Lookup über pdf-Dateinamen."""
|
||
for prog in PROGRAMME.values():
|
||
if prog.get("pdf") == pdf:
|
||
return prog
|
||
return None
|
||
|
||
|
||
def aktuelles_wahlprogramm(bundesland: str, partei: str) -> Optional[Programm]:
|
||
"""Aktuell gültiges Wahlprogramm einer Partei in einem Bundesland.
|
||
|
||
Es kann nur eines aktuell sein (gueltig_bis=None und typ=wahlprogramm).
|
||
"""
|
||
for prog in PROGRAMME.values():
|
||
if (
|
||
prog.get("typ") == "wahlprogramm"
|
||
and prog.get("bundesland") == bundesland
|
||
and prog.get("partei") == partei
|
||
and prog.get("gueltig_bis") is None
|
||
):
|
||
return prog
|
||
return None
|
||
|
||
|
||
def wahlprogramm_zum_zeitpunkt(
|
||
bundesland: str, partei: str, datum: str,
|
||
) -> Optional[Programm]:
|
||
"""Welches Wahlprogramm dieser Partei galt im Bundesland am gegebenen Datum?
|
||
|
||
``datum`` ist ISO-Datum. Es wird das Programm zurückgegeben, dessen
|
||
Geltungszeitraum [gueltig_ab, gueltig_bis) das Datum enthält.
|
||
"""
|
||
for prog in PROGRAMME.values():
|
||
if (
|
||
prog.get("typ") == "wahlprogramm"
|
||
and prog.get("bundesland") == bundesland
|
||
and prog.get("partei") == partei
|
||
and _date_in_range(datum, prog["gueltig_ab"], prog.get("gueltig_bis"))
|
||
):
|
||
return prog
|
||
return None
|
||
|
||
|
||
def grundsatzprogramm_zum_zeitpunkt(
|
||
partei: str,
|
||
datum: str,
|
||
bundesland: Optional[str] = None,
|
||
) -> Optional[Programm]:
|
||
"""Welches Grundsatzprogramm der Partei galt am gegebenen Datum?
|
||
|
||
Wenn ``bundesland`` gesetzt ist, wird zuerst nach einem
|
||
Landes-Grundsatzprogramm gesucht; falls keines existiert, fällt die
|
||
Suche auf das Bundes-Grundsatzprogramm zurück.
|
||
"""
|
||
if bundesland is not None:
|
||
for prog in PROGRAMME.values():
|
||
if (
|
||
prog.get("typ") == "grundsatzprogramm-land"
|
||
and prog.get("partei") == partei
|
||
and prog.get("bundesland") == bundesland
|
||
and _date_in_range(datum, prog["gueltig_ab"], prog.get("gueltig_bis"))
|
||
):
|
||
return prog
|
||
for prog in PROGRAMME.values():
|
||
if (
|
||
prog.get("typ") == "grundsatzprogramm-bund"
|
||
and prog.get("partei") == partei
|
||
and _date_in_range(datum, prog["gueltig_ab"], prog.get("gueltig_bis"))
|
||
):
|
||
return prog
|
||
return None
|
||
|
||
|
||
def parteien_mit_wahlprogramm(bundesland: str) -> list[str]:
|
||
"""Parteien mit einem aktuell gültigen Wahlprogramm in dem Bundesland.
|
||
|
||
Reihenfolge: nach Eintrags-Reihenfolge in PROGRAMME (deterministic).
|
||
"""
|
||
seen: list[str] = []
|
||
for prog in PROGRAMME.values():
|
||
if (
|
||
prog.get("typ") == "wahlprogramm"
|
||
and prog.get("bundesland") == bundesland
|
||
and prog.get("gueltig_bis") is None
|
||
):
|
||
partei = prog["partei"]
|
||
if partei not in seen:
|
||
seen.append(partei)
|
||
return seen
|
||
|
||
|
||
def alle_versionen(bundesland: str, partei: str) -> list[Programm]:
|
||
"""Alle Wahlprogramm-Versionen dieser Partei im Bundesland, sortiert
|
||
nach ``gueltig_ab`` aufsteigend."""
|
||
versions = [
|
||
prog for prog in PROGRAMME.values()
|
||
if prog.get("typ") == "wahlprogramm"
|
||
and prog.get("bundesland") == bundesland
|
||
and prog.get("partei") == partei
|
||
]
|
||
versions.sort(key=lambda p: p["gueltig_ab"])
|
||
return versions
|
||
|
||
|
||
def all_programme() -> list[Programm]:
|
||
"""Alle eingetragenen Programme."""
|
||
return list(PROGRAMME.values())
|
||
|