FFDN voting tool

opi 73f1472584 Ajout d'un lien vers les sources dans le footer. 10 months ago
static 14b919c0e6 Ajout d'un bout de js pour rechercher dans les utilisateurs 1 year ago
templates 73f1472584 Ajout d'un lien vers les sources dans le footer. 10 months ago
translations 81e6731284 fix a typo in french translation 6 years ago
README.md 4bbf1f5cad README improvements 3 years ago
babel.cfg 71482ea95d add support for translation via babel 6 years ago
main.py 20710004d1 [fix] make private votes visible as expected 3 years ago
messages.pot f4d357e37e update messages.pot 6 years ago
reminder.py ad4f706dd9 don't send reminders for deleted/hidden votes 11 months ago
requirements.txt 25254e8fbf update requirements 5 years ago
schema.sql 4036f1d5d9 Add OpenID authentication in parallel with casual one 6 years ago
schema_0.1.X_to_0.2.X.sql e82173a1eb Add vote deletion (only hides it in the DB : can be recovered manually from SQL by updating the row) 6 years ago
schema_0.2.X_to_0.3.X.sql 1cff7e924d Send a main when opening a vote 6 years ago
settings.py.example 55ac14c222 add 2 lines of conf for babel 6 years ago

README.md

Système de vote pour associations

Développé pour et par des membres de la Fédération FDN (http://ffdn.org)

Installation (développement)

Dépendances :

  • python (testé avec python 2.7
  • python-openid
  • sqlite3
  • Flask
  • Flask-OpenID

Installation des dépendances :

$ pip install -r requirements.txt

Installation de la base de données :

$ sqlite3 cavote.db
> .read schema.sql
> .read schema_0.1.X_to_0.2.X.sql
> .read schema_0.2.X_to_0.3.X.sql

Modifiez les paramètres de settings.py pour qu'ils correspondent à votre installation.

$ cp settings.py.example settings.py
$ vim settings.py

Lancez le serveur en mode développement :

$ python main.py

Dans un navigateur, vous pourrez à cavote à l'adresse http://localhost:5000/.

L'utilisateur par défaut peut être activé à l'adresse http://localhost:5000/login/1/victory. Modifiez en les identifiants de connection lors du premier accès.

Traduction

Génération du template de chaînes à traduire :

pybabel extract -F babel.cfg -o messages.pot .

Génération du catalogue d'une langue en particulier :

pybabel init -i messages.pot -d translations -l fr

Une fois la traduction effectuée :

pybabel compile -d translations

Si les chaînes changent :

pybabel extract -F babel.cfg -o messages.pot .
pybabel update -i messages.pot -d translations

Installation (production)

Les étapes pour l'installation en mode production sont les mêmes qu'en mode développement, jusqu'à l'étape de lancement du serveur.

NDN a choisi d'utiliser gunicorn pour mettre en production son instance de cavote.

Pour celà, installez gunicorn (dépendant de votre distribution).

Dans le répertoire de cavote, tappez : gunicorn -w 4 -b 192.168.122.104:8000 main:app -D

  • -w 4 signifie que gunicorn lancera 4 "workers", ce qui devrait amplement suffir
  • remplacez l'adresse IP et le port par votre configuration. L'adresse IP doit correspondre à qu'appellera votre serveur web en frontend (nous utiliserons nginx dans l'exemple). Si ce frontend est situé sur la même machine que cavote, l'adresse IP sera 127.0.0.1.
  • De même, changez de port si vous souhaitez en utiliser un autre
  • -D signifie que gunicorn sera lancé en daemon.
    • Enlever vous permettrait de tester et pouvoir fermer le serveur en tappant Ctrl+C
    • En mode daemon, un pkill gunicorn killera vos workers gunicorn

Pour activer les notifications par mail, mettez en place une tache cron appelant le script reminder.py.

Configurez nginx (/etc/nginx/sites-enabled ou /etc/nginx/nginx.conf ou autre selon votre système)

    server {
      listen       <votre-ip>:80;
      server_name  <votre-url-cavote>;
      rewrite      ^(.*) https://<votre-url-cavote>$1 permanent;
    }

    #
    # FIXME: specify correct value(s) for `server_name` directive and
    #        `ssl_certificate` + `ssl_certificate_key` directives below
    #
    server {
      listen       <votre-ip>:443;
      server_name  <votre-url-cavote>;
      ## make sure you change location if you did clone into /usr/local/app

      ssl on;
      ssl_certificate      /path/to/<votre_certificat_ssl>.crt;
      ssl_certificate_key  /path/to/<votre_certificat_ssl>.key;
      # enable better ssl security if you like to mitigate BEAST and other exploits
      #ssl_session_cache       shared:SSL:10m;
      #ssl_session_timeout     5m;
      ssl_protocols           SSLv3 TLSv1;
      ssl_ciphers             ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM;
      ssl_prefer_server_ciphers on;
      #add_header              Strict-Transport-Security max-age=500;
      #ssl_ecdh_curve          secp521r1;


    #
    # FIXME: modify the `rewrite` directive below to point to proper S3 bucket
    #        and path or comment out if you will store images on local file system
    #
    location / {
      proxy_pass        http://192.168.122.104:8000;
      proxy_set_header  X-Real-IP  $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Proto https;
      proxy_redirect off;
      client_max_body_size 4M;
      client_body_buffer_size 128K;
    }

      error_page 500 502 503 504 /50x.html;
      location = /50x.html {
      root html;
      }
    }

Modifiez les valeurs correspondant a la configuration de votre installation. Dans l'exemple ci dessus, cavote sera disponible automatiquement et uniquement en HTTPS.

Licence

La licence appliquée est la GNU/AGPLv3

Contributeurs

  • Julien Rabier
  • Guillaume Subiron
  • Arnaud Delcasse
  • Pierre 'Rogdham' Pavlidès