Giter VIP home page Giter VIP logo

datan's Introduction

Datan

Datan is a website anlaysing the voting behaviour of French MPs. Datan est un site internet analysant les votes des députés français (Assemblée nationale).

Installation Docker

Suivez les étapes suivantes pour installer Datan avec Docker.

1. Installez docker et docker-compose

https://docs.docker.com/compose/install/

2. Créez .env

Copiez .env.dist en .env

(facultatif) a. URL personnalisée

Modifiez BASE_URL par "dev-datan.fr" Ajoutez la ligne suivante dans votre fichier /etc/hosts

#datan
127.0.0.1 dev-datan.fr

Ca vous permettra d'accéder au site en tapant dev-datan.fr au lieu de localhost

3. Builder le projet

docker-compose build

4. Lancer le projet

docker-compose up

Pour le premier lancement, il faut attendre quelques minutes que la base de données se charge complètement avant de lancer la commande suivante.

5. Mettre à jour la base de données

Commandes à faire la première fois et à chaque fois que vous voulez rafraichir les données

npm run docker-download
npm run docker-daily

Aide Docker

Arrêtez les instances avec Ctrl+C Pour fermer les instances docker-compose down Reinstaller et retélécharger la base de données avec docker-compose build

Assets

Générez les assets avec npm run docker-grunt Ou en continue avec npm run docker-grunt-watch # (ou npm run dgw)

PHPMyAdmin

Vous pouvez y accéder ici : http://localhost:8080/ ou http://dev-datan.fr:8080/

Installation from scratch

Suivez les étapes suivantes pour installer Datan en local.

1. Assets

  • Installez les dépendances en lancant les commandes suivantes :
npm install --dev  
composer install  
  • Pour Windows, il faut également installer Ruby et lancer la commande suivante. Si problème de permission, supprimer le dossier .sass-cache.
gem install sass
  • Lancer Grunt pour compiler les fichiers css et js avec la commande suivante.
grunt  
  • NB : Quand vous travaillez sur le fichier main.scss ou le fichier main.js, lancez la commande suivante pour compiler automatiquement les fichiers css et js.
grunt watch

2. Base de données

3. Variables environnement

  • Dupliquer .htaccess.dist et renomer le nouveau fichier en .htaccess
  • Remplir les variables SetEnv (exemple : DATABASE_USERNAME, DATABASE_PASSWORD, etc). Les variables concernant les API suivantes ne sont pas nécessaires pour que le site Datan fonctionne en local (NOBG, MAILJET, MJML).

4. Remplir la base de données

  • Lancer les scripts suivants via la ligne de commande :
php /scripts/download.php  
php /scripts/daily.php  
php /scripts/daily.php 15  
php /scripts/daily.php 14  

5. Problème supplémentaire avec Windows

datan's People

Contributors

awenig avatar brissa-a avatar remikel avatar remikelpro avatar

Stargazers

 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  avatar  avatar

datan's Issues

Clean database

circos :
supprimer la colonne departement_nom_soundex - mistake (unknown column)

departement
supprimer les colonnes departement_nom_soundex et departement_nom_uppercase - 👍 done

Merger : = this has been done in the pull request : #10
class_groups_cohesion
class_groups_majorite
class_groups_participation

Merger : = see pull request: #11
departement
departements_regions
La 2ème n’est utilisé que sur un join de la première

Groupe_accord refacto : cf #31
uid
voteNumero
organeRef1
organeRef2
GroupePosition1
GroupePosition2
Accord (optionnel)

Supprimer = done with #11
regions_new_old et mettre le nouveau code dans la table insee

Duplicate content

/groupes/individual_votes_datan/larem
/groupes/larem/votes
Ces 2 pages sont les memes non ?

popover cohésion

Sur cette page : /groupes/soc/votes/all

Il y a dans le code on popover sur le mot Cohésion pour expliquer ce que c'est. Sauf qu'il ne fonctionne pas car popper.js n'est pas chargé sur cette page.

De plus la popup contient un lien vers google.fr au lieu de là où on explique les statistiques (je sais pas où)

Code département

Pourrait-on éviter d'avoir ça dans les requêtes simplement en mettant à jour la table circos ?

WHEN departement_code = "2b" THEN "02b"
WHEN departement_code = "2a" THEN "02a"
WHEN departement_code = "974" THEN "0ZD"
WHEN departement_code = "976" THEN "0ZM"

et en mettant directement 976 à la place de 0ZM par exemple ? J'ai pas l'impression que le code de département 0ZM par exemple soit utilisé d'une quelconque manière dans le code.

De même on pourrait aussi mettre la table insee à jour en renseignant le code département complet pour éviter ceci

WHEN d.departement_code = "973" THEN "97"
WHEN d.departement_code = "971" THEN "97"
WHEN d.departement_code = "986" THEN "98" 

Est-ce quelqu'un d'autres peut vérifier qu'il n'y ait pas d'impact ?

Bug ranking

  • Home classement ne sont pas bons
  • En chiffres: loyauté des députés
  • En chiffres: participation des groupes

Matomo ne me reconnait pas

Je suis au Mexique sans vpn la plupart du temps, je vais sur Datan.fr quasiment tous les jours mais Matomo n'arrive pas à me voir.
J'ai désactivé mon bloqueur sur datan.fr.

Quelqu'un saurait ?

Ajout d'un indicateur du nombre réel de votant

Il est intéressant de voir le nombre de votant réel sans exclure les non-votants comme c'est le cas aujourd'hui.
Cela pourrait compléter ce graphique :
image

Avec Moi Citoyen Lambda nous avions fait une extraction Excel pour analyser ça :
image

Ce pourrait créer un indicateur de "légitimité" (à voir cela peut paraitre provoque). Je pense que l'on pourrait également voir cmb de voix sépare les candidats lors du snd tour. (on a quelques fois 50 voix font pencher la balance).

Il me semble que la Base de données est ici :
https://data.assemblee-nationale.fr/acteurs/deputes-en-exercice

URL to elections not working for big cities

Example : Rennes. The issue is the following: the code insee from the insee table does not corresond to the code_insee column from the query. See the function get_commune_individual() in the model Departement_model.

I think issue for all big cities because they have several codes..

Obfuscation links page individual votes

L'idée, pour les votes decryptés (https://datan.fr/votes/legislature-15/vote_3433), serait de crypter les liens dans la section "Pour mieux comprendre", comme les liens cryptés sur les pages députés. Le cryptage idéalement serait en place que pour les liens externes (autrement dit ceux qui ont attribut target="_blank").

Branche: feature/obfuscation-links-vote. Cf le controller Votes.php, fonction créée: text_url_obfuscation, dans file utility_helper.php . Fonctionne que sur les votes decryptés, autrement dit ceux qui se trouvent mis en avant sur la home du site !

Erreur js dans la console

Uncaught TypeError: Bootstrap tooltips require Popper.js

Sur la page d'accueil j'ai pas l'impression qu'on ait besoin de popper.js mais bootstrap en a quand même besoin ?

checker css/critical

Juste un checking que tout fonctionne bien : tous les css critical font environ 10ko, sauf le depute_individual (1ko). Pour moi, c'est pas le cas en ligne, mais en local oui. C'est aussi le cas pour vous ?

Ajouter newsletter

Dans Suivez-nous, rajouter l'inscription à une newsletter.
Pas forcément en envoyer pour le moment, enfin je pensais 1 fois par mois pour résumer les posts twitter du mois par exemple.
Ca permettrait de "fidéliser" des users et préparer une liste de diffusion pour la sortie du questionnaire.

Schema for Votes and Groups

Les députés ont actuellement un Schema.org Persons. Mettre en place pour Votes et pour Gropes:

  • Votes: Events
  • Groupes: Organization

Ajout d'un indicateur - classe sociale

Voir si nous pouvons ajouter la classe social des députés en fonction de leurs professions, il doit y avoir un jeux de donné la dessus.

On pourra connaitre les répartitions sociologiques des différents groupes :-). voir les croiser avec les votes etc cela est intéressant scientifiquement parlant je pense

Préparation prochaine législature

(Je pense pas qu'on est des contributeurs qui ne parlent pas français sur ce projet alors je vais le faire en français)

Ajout d'une table législature : --> FAIT
id (int)
name (varchar255)
number(tinyint)
start_date(date)
end_date(date)

Ajout dans la table deputes : --> Pas sûr que ce soit utile (déjà table deputes_all, un depute par legislature)
active (bool)

Table de pivot legislature_depute : --> Pas sûr que ce soit utile (déjà table deputes_all, un depute par legislature)
id
depute_id
legislature_id
les colonnes pour les stats de chaque député pour chaque législature

Même chose pour les groupes ?

register/login qui fonctionnent plus avec la route $route['(.*)'] = "none";

Ya plein d'endroits dans le code ou au lieu de pointer vers le path ca pointe directement vers le controller/action. Ca fonctionnait bien jusqu'à qu'il y ait cette nouvelle route.

La bonne solution c'est de repasser partout pour qu'au lieu de faire appel au controller/action on fasse bien appel au path.

Connaitre facilement les affaires judiciares de nos députés

Je trouverai intéressant que l'on puisse connaitre les affaires judiciaires de nos députés en les classants par trois types :

  • En cours
  • Cloturé (condamné ou relaxé)

le tout avec des liens vers les articles parlant des affaires.

je pense que ce que vous avez développé pour les repérer quels sont les candidats aux régionales pourrait être repris et légèrement adapté (après je n'en suis pas vraiment sûr je ne connais pas trop :) )

https://m.facebook.com/PoliticsWatchFrance/

Ils faisaient ca mais hélas le site ne fonctionne plus :'(

il faudra bien préciser que la présomption d'innocence c'est important mais que de savoir pour qui on vote l'ai aussi !

Système de votation des lois vulgarisées

Je pense que de donner la possibilité de voter sur les lois décryptés permettrait :
Je pense qu'une votation au jugement majoritaire serait bien :-)

  • Au site d'être plus connu
  • Donnerai envie aux gens aux gens de s'informer sur les lois
  • D'avoir des données sur l'adéquation d'une population
  • Nous pourrons créer du contenu pour les réseaux sociaux avec les résultats des votes.

Les limites sont les suivantes : les votants n'auront pas un avis d'expert sur les sujets, nous ne sommes pas certain de savoir si la personne a lu la vulgarisation avant de voter.

J'ai pu faire ca sur le site de Moi Citoyen Lambda avec le puggin poll démocraty. un site pas top avec une vulgarisation pas terrible terrible avait récolté pas mal de voix.

Exemple :
https://moicitoyenlambda.org/?p=4658

Voici démocratie poll, le code est en libre de ce que j'ai pu comprendre
https://fr.wordpress.org/plugins/democracy-poll/

Ouvrir l'inscription aux utilisateurs

Ca permettrait d'avoir plus de votes décryptés et puis tu pourrais toujours les modérer. Si tu vois un utilisateur qui fait plusieurs décryptages bien objectif et tout, tu peux le passer en modérateur.
Il faudrait juste rajouter des rôles quoi.

Reduce the number of tables & scripts

Not a big issue, but something I've want to do for the sake of clarity : reduce the number of tables, and scripts.

For instance I will merge the class_groups_cohesion and class_groups_cohesion_all in a single table, with only one script populating them.

SEO optis

https://web.dev/measure/

  • Home
  • datan/deputes & datan/deputes/inactifs
  • Page député
  • Député --> votes
  • Page département
  • Page city
  • datan/groupes & datan/groupes/inactifs
  • Page groupe
  • Groupe --> votes
  • Page (a propos, mentions legales, etc)
  • Votes
  • votes/decryptes
  • votes/decryptes/(category)
  • Vote individual
  • statistiques
  • statistiques/page
  • partis-politiques
  • partis-politiques/(party)
  • elections
  • elections/(election)
  • blog section (index / category / article)
  • Responsive critical
  • Schemas : groupes
  • Schemas : partis politiques
  • partial MP individual

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.