Code Monkey home page Code Monkey logo

lobbywatch / lobbywatch Goto Github PK

View Code? Open in Web Editor NEW
33.0 5.0 7.0 127.64 MB

Code for database forms and Drupal module for the Lobbywatch.ch project

Home Page: https://lobbywatch.ch

License: GNU General Public License v2.0

CSS 13.51% HTML 11.60% JavaScript 3.05% Shell 0.30% PHP 65.12% Smarty 0.42% Python 0.25% R 0.03% Hack 0.01% Less 1.05% Jupyter Notebook 4.65%
php mysql bash drupal python docker php-generator politics drupal-module rest-api

lobbywatch's Introduction

Lobbywatch.ch

Lobbywatch.ch - the platform for transparent politics.

Lobbywatch.ch maintains a database with links of politicians and lobby groups.

This repository contains the

  • edit forms,
  • Drupal lobbywatch module for a textual representation,
  • DB structure, and
  • visualizations.

The data are not stored in this repository.

Requirements

  • PHP 7.2
  • PHP composer
  • MySQL 5.7.26
  • Drupal 7
  • bash 4.4
  • ImageMagick

More info, see https://lobbywatch.ch/de/seite/technik

Edit forms generation

The edit forms are built with the PHP Generator for MySQL Professional. Its a commercial tool (about 100$).

PHP Generator for MySQL Professional 18.3.0.2 (08.05.2018)

Setup

PHP

composer install

DB

mysql -u root

Remove NO_ZERO_IN_DATE,NO_ZERO_DATE, ONLY_FULL_GROUP_BY form sql_mode

show databases;

create database lobbywatch; create database lobbywatchtest;

./deploy.sh -l= -r -s prod_bak/bak/dbdump_struct_lobbywat_lobbywatch_20170714_143332.sql

GRANT SELECT ON . TO 'lw_reader'@'localhost' IDENTIFIED BY 'PASSWORD'; GRANT SELECT ON . TO 'lw_reader'@'127.0.0.1' IDENTIFIED BY 'PASSWORD';

FLUSH PRIVILEGES;

Edit forms

Build

./build.sh

Deploy

./deploy.sh -s -p

See parameters with

./deploy.sh -h

Drupal Theme

The Drupal 7 theme transparent_sky is in a separte git repository: https://github.com/Lobbywatch/transparent_sky

License

Source of Lobbywatch.ch is licensed under GPL, see LICENSE.

lobbywatch's People

Contributors

banelovric avatar dependabot[bot] avatar knutwannheden avatar maroth avatar scito avatar tpreusse avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar

lobbywatch's Issues

Partei- und Fraktionszugehörigkeit historisieren

Für historische Auswertungen ist eine Aufschlüsselung nach Partei oder Fraktion sehr oft interessant. In der Lobbywatch Datenbank ist das aktuell nur bedingt möglich, da die Partei- und Fraktionszugehörigkeit nicht historisiert werden und diese ändern kann. Die Fraktionszugehörigkeit kann öfter ändern bei der Regierungsbildung in einer neuen Legislatur aber auch Parteifusionen, wie die von CVP und BDP, würden eine Historisierung benötigen, um korrekte Auswertungen zu ermöglichen. In Einzelfällen haben Parlamentarier sogar Partei gewechselt.

Der Vorschlag wäre, dass man wie bei der Kommissionsmitgliedschaft eine Assoziationstabelle einführen würde. Damit könnten dann auch Rollen wie Fraktionspräsidium abgebildet und festgehalten werden.

Diese Daten sind via der ws.parlament.ch Schnittstelle verfügbar (nicht geprüft wie es mit ws-old.parlament.ch aussieht) und könnten jedenfalls für einen Initialimport verwendet werden.

Datenmodellierung problematisch für Ermittlung von Start- und End-Date von Interessebindungen

Da Interessebindungen mehrheitlich "manuell" recherchiert werden müssen und im Internet oft Details fehlen, sind die bei Lobbywatch verzeichneten Interessebindungen oft nur teilweise erfasst. Z.B. gibt es oft kein Start- und End-Date (entspricht in der Datenbank interessebindung.von und interessebindung.bis). Für Auswertungen, welche sich auf das aktuelle Datum ("heute") ist das meist unproblematisch, da man davon ausgehen kann, dass die Interessebindung "gültig" ist auch wenn Start- und End-Date nicht vorhanden sind.

Anders sieht dies bei historischen Auswertungen aus. Ein Beispiel einer historischer Auswertung wäre, wenn man die zeitliche Entwicklung der Anzahl Interessebindungen einer gegebenen Branche, Partei, Rechtsform oder anderer Teilmenge grafisch darstellen will. Hierbei muss jedes Datum auf der Zeitachse als Referenzdatum verwendet werden und die "aktiven" Interessebindungen müssen jeweils aus diesem Blickwinkel zusammengesucht werden.

Es gibt hierbei mehrere Sachen zu beachten:

  • Grundsätzlich sind Interessebindungen nur als solche zu betrachten während der Amtszeit des Parlamentariers (siehe parlamentarier.im_rat_seit und parlamentarier.im_rat_bis in der Datenbank).
    D.h. wenn z.B. eine Interessebindung kein End-Date hat, dann ist dieses implizit durch den Rücktritt des Parlamentariers (also parlamentarier.im_rat_bis) gegeben.
  • Beim Start-Date ist die Situation etwas komplizierter. Wenn ein Parlamentarier neu erfasst wird, werden dessen Interessebindungen recherchiert und eingetragen. Bei diesen ist dann oft das Start-Date auch nicht bekannt. Man geht aber davon aus, dass der Parlamentarier alle diese Interessebindungen ins Amt "mit sich mitgebracht" hat, da diese Recherche in der Regel sehr zeitnah geschieht. D.h. diese Interessebindungen haben dann auch implizit den Amtsantritt als Start-Date.
    Diese Interessebindungen der ersten Recherche sind aber in der Datenbank nicht speziell gekennzeichnet. Man kann sie indirekt erkennen, da sie alle das selbe Freigabedatum (in der Datenbank interessebindung.freigabe_datum und dies ist ein Datum mit Zeitstempel) aufweisen, welches logischerweise auch das früheste Freigabedatum für den Parlamentarier ist.
  • Wenn nun nachträglich (also nach der ersten Erfassung) zusätzliche Interessebindungen auftauchen, dann ist bei diesen oft auch kein Start-Date bekannt. Es ist zwar gut möglich, dass der Parlamentarier diese bereits bei Amtsantritt hatte, aber für Lobbywatch macht es trotzdem Sinn diese als "neue" Interessebindungen zu betrachten und deshalb wird dann das Freigabedatum als Start-Date verwendet.
  • Letztlich muss bei diesen historischen Auswertungen auch beachtet werden, dass die parlamentarier.im_rat_seit und parlamentarier.im_rat_bis in der Datenbank dem ersten und letzten Antsantritt bzw. -austritt entsprechen. Wenn der Parlamentarier während dieser Zeitspanne mal "abgewählt" und dann wieder neu gewählt wurde, dann wird dies in der Datenbank als Ratsunterbruch geführt (siehe parlamentarier.ratsunterbruch_von and parlamentarier.ratsunterbruch_bis). Während diesem Ratsunterbruch gilt dann eine Interessebindung auch nicht als "aktiv".

Mit der aktuellen Datenmodellierung sind historische Auswertungen der Interessebindungen komplex zu implementieren, da es schwierig ist zu ermitteln, welches Start- und End-Date für eine Interessebindung gültig sind relativ zu einem gegebenen Referenzdatum. Wie sich aus den Punkten oben ergibt, kann für eine Interessebindung sogar verschiedene Start- und End-Dates gelten, wenn ein Parlamentarier einen Ratsunterbruch hatte: Bei einem Referenzdatum während der ersten Amtszeit sind Amtsantritt und Beginn des Ratsunterbruchs zu beachten (im_rat_seit und ratsunterbruch_von) und während der zweiten Amtszeit gilt es Ende des Ratsunterbruchs und Rücktritt aus dem Parlament zu beachten (ratsunterbruch_bis und im_rat_bis).

Um solche historische Auswertungen einfacher zu machen, sollten wir uns überlegen das Datenmodell anzupassen oder alternativ vielleicht nur mit Views zu unterstützen. Die möglichen Lösungen können im Rahmen dieser Issue diskutiert werden.

Datenbereinigung: Interessebindungen zu parlamentarischen Gruppen

  • Viele dieser Interessebindungen haben ein von-Datum vom 09.06.2020. dies sollte vermutlich auf null gesetzt werden.
  • Deklarationspflicht und -status müsste man sich bei diesen Interessebindungen auch überlegen und dann einheitlich gleich machen (bei manuell erfassten nicht immer gleich).
  • Der Datenimport müsste sich dann auch daran halten, wobei das von-Datum hier gesetzt werden kann, da dieser Import nun periodisch läuft. Obwohl sich hier auch noch die Frage stellt wie neu erfasste Personen von Import-Prozessen gehandhabt werden.

Indicate if no compensation data available

Sent: Thursday, June 1, 2017 8:44 AM
Subject: Re: Einkommen Parlamentarier

Guten Morgen allerseits

Die Reaktion von XX ist nicht überraschend, ich habe selber einige ähnliche Reaktionen gehört. Dort, wo keine Angaben vorhanden sind (und das ist bekanntlich in den meisten Fällen der Fall), wirkt unsere Ansage bezüglich deklarierten Einkommen wie ein falsches Versprechen oder wie ein technischer Fehler.

Ich schlage deshalb vor, dass dort, wo wir über keinen Wert verfügen, defaultmässig „Keine Angabe“ oder „Keine Angabe bekanntgegeben“ (oder so ähnlich) anzeigen (müsste dann natürlich noch übersetzt werden). Dann ist’s für alle klar.

We should write:
Entschädigung
Keine Angabe

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.