6. Hochrechnung zum Testen: FRW14 - Fakeratswahl 2014

Die Wahl FRW14 ist eine wohldefinierte Hochrechnung von Testen und Entwickeln. Die verwendet die Ergebnisse und Konfiguration der NRW13.

What Name Id
Hochrechnung FRW14 5
Alte Wahl NRW 2008 1
Fiktive Basis Fikt FRW14 30
Ergebnis FRW14 31

Für das Ergebnis wird das Ergebnis der NRW13 genommen. Als fiktive Basis wird das Ergebnis der NRW13 genommen, wobei die Listen 1 und 2 vertauscht werden. Das Ergebnis der NRW13 ist in als WahlID 5 gespeichert.

6.1. Eingabelisten

Antretende Parteien: SPÖ, ÖVP, FPÖ, BZÖ, Grüne, KPÖ, Neos, Pirat, Frank, CPÖ, Wandl, EUAUS, M, SLP

Partei SPÖ ÖVP FPÖ BZÖ Grüne KPÖ Neos Pirat Frank CPÖ Wandl EUAUS M SLP
ParteiID 1 2 3 6 4 5 12 8 7 17 24 26 25 27
ListenID 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Bundesweit SPÖ ÖVP FPÖ BZÖ Grüne KPÖ Neos Pirat Frank CPÖ Wandl EUAUS M SLP
Vergleich08 SPÖ ÖVP FPÖ BZÖ Grüne KPÖ       DC       LINKE
BGLD SPÖ ÖVP FPÖ BZÖ Grüne KPÖ Neos Pirat Frank CPÖ        
KTN SPÖ ÖVP FPÖ BZÖ Grüne KPÖ Neos Pirat Frank          
NOE SPÖ ÖVP FPÖ BZÖ Grüne KPÖ Neos Pirat Frank          
OOE SPÖ ÖVP FPÖ BZÖ Grüne KPÖ Neos Pirat Frank CPÖ Wandl      
SBG SPÖ ÖVP FPÖ BZÖ Grüne KPÖ Neos Pirat Frank          
STMK SPÖ ÖVP FPÖ BZÖ Grüne KPÖ Neos Pirat Frank CPÖ        
Tirol SPÖ ÖVP FPÖ BZÖ Grüne KPÖ Neos Pirat Frank          
VBG SPÖ ÖVP FPÖ BZÖ Grüne KPÖ Neos Pirat Frank CPÖ   EUAUS M  
Wien SPÖ ÖVP FPÖ BZÖ Grüne KPÖ Neos Pirat Frank CPÖ   EUAUS M SLP

6.2. Vorbereitung der alten Wahl

Jede Wahl hat eine eigenes Python Modul wsgi.wahlen.name. Für die NRW13 ist das die NRW08. Ist das da Modul wsgi.wahlen.nrw08. Wenn man Glück hat ist alles von der letzten Wahl noch da:

cd /opt/hr/wsgi/wahlen
mkdir nrw08
touch nrw08/__init__.py
touch nrw08/prepare.py

Die Datei __init__.py macht aus dem Verzeichnis ein Python Modul und in wsgi.wahlen.nrw08.prepare wird die Wahl selbst vorbereitet. Die Logik steckt in der Funktion prepare.

Dh in der Datei nrw08/prepare.py muss eine Funktion namens prepare vorhanden sein. Diese wird ausgeführt, sobald der Befehl:

hrcli prepare wahl nrw08

ausgeführt wird.

Das Anlegen einer Wahl läuft grundsätzlich immer nach dem gleichen Schema ab:

  • Anlegen der Wahl
  • Anlegen etwaiger neuer Parteien
  • Definieren der Listenplätze, mit Berücksichtigung der Bundesländer
  • Einspielen der Ergebnisse bei der alten Wahl
  • Vorbereitung der UWS (Urnenwahlsummen). Diese Gemeinden enden auf 98 (analog zu den Wahlkarten) und bilden das Gegenstück zu den Wahlkarten. Das wir die Wahlkarten nun direkt rechnen, werden die Urnenwahlergebnisse in eine eine Gemeinde und die Wahlkarten in einen eigene Gemeinde, zB 10098 und 10099 gespielt und das Gesamtwergebnis ist dann die Hochrechnung über diese beiden Gemeinden. Dass 10098 und 10099 ihrerseits selbst Hochrechnungen sind ist irrelevant
  • Vorbereitung der Wahlkartengemeinden. Analog zu den UWS müssen die WK aus dem BMI-Excel genommen und eingespielt werden. Das muss zT manuell gemacht werden, weil die Listenreihenfolge der Wahlkarten nicht mit der Reihenfolge an der Urne übereinstimmen muss.

Diese Punkte werden der Reihe nach in prepare abgearbeitet.

” Prepare Wahl NR08

wsgi.wahlen.nrw08.prepare.export_existing_ergebnisse(path)[Quellcode]

Die bestehenden Einspielfiles aus 2008 haben die aktuellen Gemeindezusammenlegungen und Trennungen nicht berücksichtigt. Beim Wieder-drübergehen über die NRW08 muss das Ergebnis neu exportiert werden. Bei Gemeindezusammenlegungen werden alle Ergebnisse in der Datenbank korrekt adaptiert.

Parameter:path – Outputfile
wsgi.wahlen.nrw08.prepare.prepare(delete_if_exists=False)[Quellcode]

MAIN - prepare für die NRW08. Ruft ihrerseite die anderen prepares auf

Parameter:delete_if_exists – Lösche die Wahl falls es sie schon gibt
wsgi.wahlen.nrw08.prepare.prepare_eingabelisten(wahl)[Quellcode]

Erstellt die EingabeListen für die Wahl. Das ist die Reihenfolge, wie sie am Stimmzettel stehen und demzufolge via BMI gemeldet werden. Diese kann je nach Bundesland unterschiedlich sein. Die Hauptreihenfolge beinhaltet alle Listen und sieht (meist) so aus wie das BMI meldet. Die EingabeListen können je Bundesland unterschiedlich sein. Wenn BL=0 oder es eh nur ein BL gibt, ist das die Hauptreihenfolge.

Parameter:wahl – Für Welche Wahl werden die Listen angelegt
wsgi.wahlen.nrw08.prepare.prepare_ergebnisse(wahl, importfile)[Quellcode]

Die Gemeindeergebnisse liegen im richtigen Format in /opt/hr/wahlen/nrw08/gemeindeergebnisse.in.

Parameter:wahl – wahl
wsgi.wahlen.nrw08.prepare.prepare_uws(wahl)[Quellcode]

Erstellt Urnenwahlsummen (UWS) Ergebnisse. Die GKZs der UWS enden auf 98, die der Wahlkarten auf 99. Die UWS eines Bezirks, Landes oder des Bundes sind die Urnenwahlergebnisse der entsprechenden Ebenen. Mit der vermehrten Nutzung der Eahlkarten und deren Berücksichtigung in der HR wurden die UWS eingeführt. Die QA liefert ein Ergebnise für die UWS und die WK und diese Ergebnisse werden in die jeweils korrekten GKZs geschrieben. Dann kann eine einfache HR über diese beiden GKZs gemacht werden und man hat das Gesamtergebnis.

wsgi.wahlen.nrw08.prepare.prepare_wahl(delete_if_exists=False)[Quellcode]

Return Das wsgi.models.Wahl for die Wahl. Es wird angelegt falls es noch nicht existiert.

Parameter:delete_if_exists – Falls die Wahl schon existiert, wird sie zuerst gelöscht
Rückgabe:das Wahl-Objekt
wsgi.wahlen.nrw08.prepare.prepare_wahlkarten()[Quellcode]

Die Wahlkarten sind aus dem Ergebnisexcel des BMI genommen, manuell aufbereitet etc. Vorhandene GemeindeErgebnisse der Wahl für die Bundes- und LandesWK werden zuerst gelöscht. Danach werden die aufbereiteten Ergebnisse eingesepielt. Obacht auf die Reihenfolge! Alle Gemeindeergebnisse müssen in der EingabeHauptrreihenfolge eingespielt werden. Das BMI sortiert hier gerne nach Anzahl der Wahllkartenstimmen. Damit haben in diesem Beispiel die Grünen die FPÖ überholt.

6.3. Vorbereitung der neuen Wahl

Genauso wie die alte. Siehe wsgi.wahlen.frw14

6.4. Vorbereitung der Hochrechnung

Die alte und die neue Wahl sind vorbereitet - nun kommt die Hochrechnung selbst:

cd /opt/hr/wsgi/hochrechnungen
mkdir frw14
touch frw14/__init__.py
touch frw14/prepare.py

Tip: Einfach die letzte Hochrechnung kopieren...