Code Monkey home page Code Monkey logo

offenewahlen_api's People

Contributors

chreman avatar frocentus avatar skasberger avatar tobias47n9e avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

offenewahlen_api's Issues

gemeindekennzahlen daten besorgen

es braucht für die kontrolle der eingangsdaten vom bmi vermutlich eine datei mit der gemeindekennzahl, dem namen der gemeinde und vielleicht anderen daten, um einen Join machen zu können.

community einladen

community (twitter, facebook, slack, Newsletter, ML) einladen, mitzumachen.

"Bitte warten!" Page für Production erstellen

Auf der Production Instanz soll vor dem Launch eine nett gestaltete "Bitte warten" Seite auffindbar sein. Überlegen einer lustigen oder netten oder sonst was guten Seite, um auf den Launch hinzuweisen. Vielleicht fällt einem ja was gutes mit Wahlbezug ein.

Daten bei Import prüfen

Ob Fehler sind. Ergebnisse der einzelnen Checks in Datenbank abspeichern -> eigene Class dafür erstellen und mit Rawdata verknüpfen.

python virtualenv nutzen

damit es keine probleme mit package versionen gibt, wird bei allen python virtual environments verwendet.

Tests: Daten-Import

  • outgoing queries from preprocessor
  • korrektes schreiben zur db (backend)
  • korrektes lesen aus der db (frontend)

Doku: Installation der App

Installations-Anweisungen für die App in README.md rein geben, so dass Devs die App einfach runterladen, installieren und mitentwickeln können.

Inhalt

  • git Workflow: clone, Fork, Pull Request
  • virtualenv
  • OS: Mac, Win, Linux
  • Ordner-Struktur erklären
  • statische Daten (Folder und wichtige Datensets) erklären
  • Board
  • Wiki
  • Milestones
  • Issues
  • Projekt-Management

Datenbank Modell für Echtzeit-Wahldaten überlegen

Bei API und API Specification nachsehen.

Zentrale Fragen:

  • was verwendet man als Primary Key (unique identifier)? Zeitstempel, spatial ID, eigene ID erstellen, wird eine unique ID mitgeliefert?
  • was will man als räumliche zuordnung?
  • welche daten möchte man speichern: KandidatInnen, Parteien, Ergebnisse, ??
  • welche daten von extern möchte man hinzufügen: sozio-ökonomische, Wahlergebnise, Neuwal Umfragen bzw. Transkripte, Twitter, etc.
  • welche identifier möchte man bei den jeweiligen Daten dabei haben? Wikidata, offizielle ID's, ??

Hack-Session vor der Wahl

Sollen wir vor der Wahl eine Hack-Session in Wien organisieren?
metalab, 2-4 Wochen vor der Wahl. Um gemeinsam den Code und die Finalisierung anzugehen.

Was könnte am Wahlabend alles passieren?

Brainstormen, welche Ereignisse am Wahlabend passieren können. Dies ist nützlicher Input, um dies vielleicht in die Visualisierungen einfliessen zu lassen.

Ideen

  • Twitter Storm
  • Ergebnisse werden nicht akzeptiert: Verschwörungs-Theorien
  • Einflussnahme von Aussen: z. B. Russland

Design Person finden

Das Projekt braucht unbedingt eine Person, die sich mit Design-Aspekten sehr gut auskennt (Micro-Funding möglich). Ideen sammeln und dann anschreiben, ob Interesse zum mitwirken. Dann wegen Micro-Funding überlegen.

Setup der Datenbank mit den Basis-Daten

Setup der Datenbank mit den Basis-Daten mittels für Admin zugängigen Funktions-Aufruf `setupdatabase, um einfach den Ausgangs-Zustand herstellen zu können.

Basis-Daten

  • Parteien
  • Gemeinden
  • Wahlen
  • Gemeinden zu Regional-Wahlkreise Relation
  • Bezirke zu Bundesland Relation

statische files werden auf heroku nicht gefunden

Die statischen Files werden bei heroku staging nicht gefunden. Hier die Log Einträge dazu.

2017-07-21T00:29:20.076013+00:00 app[web.1]: Not Found: /static/css/app.css
2017-07-21T00:29:20.080597+00:00 app[web.1]: Not Found: /static/js/app.js
2017-07-21T00:29:20.196575+00:00 app[web.1]: Not Found: /static/img/offene-wahlen.svg
2017-07-21T00:29:20.235074+00:00 app[web.1]: Not Found: /static/css/app.css
2017-07-21T00:29:20.255570+00:00 app[web.1]: Not Found: /static/js/app.js

Resourcen

geometrien klären

um die ergebnisse visuell darstellen zu können, wird eine räumliche geometrie benötigt (geojson, shape). Diese muss die Gemeindekennzahl als Attribut beinhalten und bereits in der benötigten Projektion vorliegen.

Tests: Datenimport

Durchführen von Checks zu den Rohdaten mit den postgresql Eintragungen. Ergebnisse der einzelnen Checks in Datenbank abspeichern -> eigene Class dafür erstellen und mit Rawdata verknüpfen.

Entwerfen von TestDatasets (JSON). Mehrere Eintragungen, die immer mehr werden.

Checks

  • import base data
  • delete base data
  • delete result data
  • check integrity of results data itself
    • Summe der Stimmen von aller Parteien == Anzahl valider Stimmen
    • valide Stimmen + invalide Stimmen == abgegebene Stimmen
    • Zahl Wahlberechtigter >= abgegebene Stimmen
    • kommt ein Wert im erwarteten Daten.Typ daher
    • fehlen eines wertes einer partei
    • none wert bei partei
    • timestamp falsch formatiert
    • eine partei fehlt
    • mapping key nicht vorhanden
    • encoding aller files testen ob uft-8
  • check import of results data
    • from URL
    • from local file
    • with mapping
    • without mapping
    • check hash
    • Zeitstempel der Datei-Erstellung zwischen Schliessung des ersten Wahllokals und aktuellem Zeitpunkt
    • null wert bei partei
    • alter eintrag zu einer GKZ wird nicht gelöscht oder überschrieben, sondern es kommt ein neuer dazu.
    • Werden Reihen in den jeweiligen Tabellen angelegt, wenn diese nicht vorhanden?
    • Werden Reihen in den jeweiligen Tabellen aktualisiert, wenn sich die Werte ändern?
    • Anzahl Einträge in den Tabellen gleich dem Count der Input-Daten?
    • wenn keine Änderung von file zu file vorgenommen werden: wird der import ausgeführt?
    • Gemeindekennzahl nicht existent
    • Wahlkarte als GKZ
    • Wahlkarte nicht existent
    • Gesamtergebnis als GKZ
    • Regionalwahlkreis als GKZ
    • Regionalwahlkreis nicht existent
    • zeitstempel sind nicht chronologisch sortiert, sondern es springt ein wert retour
    • ein key ist enthalten, der nicht im mapping angegeben wird
    • bundeslandergebnis als GKZ
    • bundesland nicht existent
    • mapping datei nicht vorhanden
    • import von spatial_id gegen liste mit allen GKZs testen
    • Testen ob in richtige Datenbank geschrieben wurde.
  • Fehler in Datei
  • finales Ergebnis
    • Gemeinde-Ergebnis fehlt
    • Gemeinde-Ergebnis doppelt
    • Wahlkarten-Ergebnis fehlt
    • Wahlkarten-Ergebnis doppelt
    • RWK-Ergebnis fehlt
    • RWK-Ergebnis doppelt

Datenauslieferung: Datengröße minimieren

die daten die der client zum darstellen der visualisierung benötigt so weit wie möglich reduzieren bzw. zeitlich verteilen. Smartphones mit 3G Anschluss beachten.

option 1: erste visualisierung bei responsive benötigt nur kleine datenmenge. während diese betrachtet wird, kann restlicher datensatz nachgeladen werden.

option 2: lade screen solange bis daten komplett sind

option 3: auflösung (zeitliche oder räumliche) bei kleinen screens reduzieren. zB bezirks oder landesergebnisse anstatt gemeinde-ebene.

Sitemap erstellen

es braucht für den launch eine sitemap.xml, damit google etc sauber indezieren können.

  • soll via function-call erstellt werden können
  • soll beim launch automatisch erstellt werden
  • wie einbinden in website navigation?

preprocessing & vis prozesse trennen

damit das backend und frontend innerhalb der app unterschiedlich skalierbar sind (die situation dass 5x der preprocessor versucht die API abzurufen und in die db zu schreiben sollten wir vermeiden), müssen die zwei sachen als unterschiedliche prozesse startbar sein. bitte das hier durchlesen und sowas machen wie

web gunicorn django-vis-app --commands
worker gunicorn django-preprocessor-app --commands

Visualisierungen (grob)

Darstellen der wichtigsten Visualisierungen:

  • Ergebnis-Karte
  • Ergebnis Balkendiagramm
  • Scatterplot
  • ??

Kein Content, Styling oder Designfokus. Fokus auf Narrativ, Datennutzung, Layout und Gesamtbild.

Domains mappen

staging und production mappen auf offenewahlen.at.
staging darf nicht nach aussen dringen, damit vorab veröffentlichung verhindert wird.

crowd-source basisdaten

die basisdaten werden über die zeit immer mehr anwachsen und es wird immer mehr aufwand werden, qualitätsicherung dazu zu betreiben bzw. sie zu erweitern. hier bietet sich ein crowd-sourcing approach an. wie genau, muss noch überlegt werden.

README.md updaten

Readme updaten. Installations-Anweisungen für die App in README.md rein geben, so dass Devs die App einfach runterladen, installieren und mitentwickeln können.

Inhalt

  • Beschreibung
  • Mitmachen
  • offenewahlen-at Repo
  • Urheberrecht
  • Installieren
    • OS: Mac, Linux, Win
    • Python + virtualenv
    • Django: Help, runserver, manage.py
  • Entwickeln
    • Git Workflow: clone, fork, pull request
    • Ordner Struktur
    • statische Daten (Folder und wichtige Datensets) erklären
    • GitHub Repo: Wie nutzen, wie editieren?
    • GitHub Wiki: Wie nutzen, wie editieren?
    • GitHub Issues + Milestones + Board (ZenHub Mode): Wie nutzen, wie editieren?
    • Projekt-Management: Slack, GitHub Board, Kontakt

Danach auch überlegen, welche Teile auch sonst wo in der Doku gut angebracht wären.

maintenance mode aktivieren

  • maintenance page anlegen doku
  • auf staging pushen
  • testen in dem staging auf maintenance geschaltet wird
  • wenns läuft wie gewünscht auf production promoten
  • production auf maintenance schalten

Falsches JSON Format

parties.json und elections.json sind kein korrektes JSON. die äußersten {...} sind zuviel.

Agreggierte Metriken speichern in DB

Erstellen und speichern von agreggierten Metriken zum einfachen ausliefern an den Client.

Inhalt

  • Gesamtergebnisse der Parteien
  • Ergebnisse der Parteien auf Bundesländer-Ebene
  • Ergebnisse der Parteien auf Bezirks-Ebene
  • Wahlbeteiligung auf Bundes-, Bundesländer- und Bezirks-Ebene

Wahlen Listen

Erstellen und verwalten einer Liste mit den benötigten Wahlen für die NRW17.

Wahlen

  • NRW13
  • NRW17

Inhalt

  • Wikidata ID der Wahl
  • Voller Name der Wahl
  • Kürzel der Wahl
  • Wahl-Typ: Bundespräsidentenwahl, Nationalratswahl, Gemeinderatswahl, Landtagswahl, etc.
  • administrativ-räumliche Ebene: Gemeinde, Bezirk, Bundesland, Staat

Testdatensatz anlegen

Ein XML File als Testdatensatz anlegen und auf irgendeinen Server legen, damit man die Download Funktion aufsetzen kann.

Doku: Datenquellen

Quellen für die Erstellung von Datenquellen in der Dokumentation und im Repo angeben.

Quellen

  • elections.json
  • municipalities_20170101_2.json
  • municipalities_topojson_999_20170101.json: kommt von Flooh Perlot
  • parties.json: erstellt von Stefan Kasberger via Parteiregister BMI und Wikipedia-Recherche
  • regional-electoral-district2municipalities_20170101.json
  • states2districts_20170101.json: erstellt von Stefan Kasberger via Wikipedia-Recherche
    dokumentieren

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.