/CDJ

Plateforme numérique pour le CDJ11

Primary LanguageRubyGNU Affero General Public License v3.0AGPL-3.0

CD Aude logo

Conseil Departemental des Jeunes de l'Aude

http://cdj.aude.fr/

Citizen Participation and Open Government Application

This is a fork of CONSUL the eParticipation website originally developed for the Madrid City government eParticipation website.

Build Status Maintainability Test Coverage

Crowdin License: AGPL v3

Accessibility conformance

À propos du Conseil Départemental des Jeunes (CDJ)

Voir la page dédiée sur le site du département

État du projet

  • Le site a été lancé en Janvier 2018 sur la base d'un autre fork réalisé par les équipes du Département de l'Aude.
  • La personalisation de la plateforme a (re)démarrée en Février 2018.

Participer à l'amélioration du logiciel

  • TODO - Aide à la traduction
  • TODO - Beta test des nouvelles fonctionalités

Informations pour les développeurs sur ce fork

Workflow

  • la branche master est la référence qui doit rester déployable en production à chaque instant
  • les Pull Requests sont automatiquement fusionnées en faisant un Squash and Merge afin de garder un historique plus lisibles des évolutions qui ont eut lieux sur ce fork
  • le fork est mis à jour en suivant le processus décrit dans la doc officielle. Une documentation complémentaire spécifique aux particularités du présent projet est disponible dans le dossier doc.

Traductions

  • Les traductions sont personalisées pour le CDJ uniquement dans le dossier `config/locales/custom/'
    • ces fichiers sont prioritaires sur tous les autres
    • seules les clés à personaliser sont conservées dans ces fichiers
  • Les traductions officielles fr de Consul peuvent être importées depuis upstream ou depuis Crowdin pour venir écraser les traductions existantes dans config/locales/fr/

Documentation de Foundation

Le framework CSS utilisé est Foundation en version 6.2.4.

Voir la documentation sur Github car la documentation disponible sur le site web du projet correspond à une version plus récente.

Omniauth

Facebook

Pour se connecter via facebook en local :

Utiliser ngrok : ./ngrok http 3000

Dans l'interface développeur de facebook :

  • créer une application de test, si elle n'existe pas encore (credentials à renseigner dans config/secrtes.yml)
  • renseigner l'url de callback à partir de l'url https fournie par ngrok dans Produits > Facebook login > Paramètres > champs "URI de redirection OAuth valides" -> ex https://a171c66a.ngrok.io/users/auth/facebook/callback
  • renseigner le "Domaines de l’app" dans Paramètres > Général -> ex a171c66a.ngrok.io
  • renseigner "URL du site" dans Paramètres > Général -> block Site web -> https://a171c66a.ngrok.io/

Déploiements

Le projet utilise capistrano

# sur votre machine
# Au 1er déploiement pour créer le fichier de config
cap production puma:config 

# Par la suite
cap production deploy       # Déploiement simple sur l'environnement de production (avec les migrations)
cap production puma:restart # Relance l'instance puma
cap production deploy:seed  # Génération des seeds sur l'environnement de production

Import de la base de donnée originelle du CDJ en production

Une première version du CDJ pré-existait, avec des données qu'il a fallu importer. Les migrations n'étant pas à jour sur le projet originel, il est nécessaire de faire l'import en plusieurs temps :

  • migrer jusqu'à une certaine version des migrations,
  • faire l'import
  • faire la suite des migrations jusqu'aux migrations actuelles
  • lancer des scripts pour compléter les données

Pour des questions de droit casse-bonbons, la procédure d'installation est un peu bancale, et clairement améliorable. Vu que la procédure suivante est supposée n'être faite qu'une fois, à l'installation du projet, je n'ai pas poussé plus loin mes recherches.

Pré-requis : avoir en local la BDD à importer et le fichier csv de complétion des utilisateurs (actuellement disponibles dans le dossier drive du projet, et gitignoré pour des questions de confidentialité des données).

  1. Copier l'export de la BDD, et le fichier csv de complétion des utilisateurs, de votre serveur local sur le serveur de prod :
scp  -P 124 chemin-vers-le-fichier.sql USER@ADRESSE-SERVEUR:/home/deploy/www/cdj_aude/current/doc/custom/ 
scp  -P 124 CDJ_completion_utilisateurs.csv USER@ADRESSE-SERVEUR:/home/deploy/www/cdj_aude/current/doc/custom/ 
  1. Etapes de l'import :
# Sur serveur, avec le user mako, couper temporairement les connections à la db : 
sudo service postgresql restart
# En local
cap production deploy:prepare_import_db
# Sur serveur, avec un user root : 
cd /home/deploy/www/cdj_aude/current
psql cdj_aude_production < doc/custom/extract_db_insert_180326.sql
# En local
cap production deploy:finish_import_db
cap production delayed_job:restart

Certaines releases nécessitent des actions particulières suite à une montée de version. Ces actions sont documentées dans les releases.

en développement

Un script résume l'ensemble des étapes et peut être lancé pour effectuer toutes les étapes dans la foulée :

./lib/custom/import_db.sh

Changements principaux par rapport à Consul

  • Développement d'un module Actualité, page d'accueil par défaut des personnes connectées
  • Les utilisateurs sont vérifiés par principe, dès leur inscription, sans avoir à vérifier de document officiel
  • Les utilisateurs doivent renseigner + de données à l'inscriptions : nom, prénom, âge, adresse...
  • Pas d'inscription en tant qu'organisation.
  • Age maximum d'inscription à 26 ans - 1 jour.
  • L'inscription via facebook ne fait que pré-remplir un profil utilisateur, au lieu de créer directement un compte
  • Un compte utilisateur peut être lié/délié de facebook après coup.
  • Les Proposal ont par défaut le nom de leur author comme responsible_name (et non document_number)
  • Nouveau rôle : Animator, qui partage certaines des abilities des admin et des modérateurs. Représente un membre du CA du conseil des jeunes. Détails des droits dans ce tableur. Les rôles Manager, Moderator, Valuator, poll officer sont inutilisés.
  • Nouvelle organisation du back office : création d'un menu "Communication" reprenant des éléments du menu "Administration". Simplification des autres menus. Détails de l'armature dans ce tableur
  • Limitation des votes aux votes en ligne.

Configuration for development and test environments

NOTE: For more detailed instructions check the docs

Prerequisites: install git, Ruby 2.3.2, bundler gem, Node.js and PostgreSQL (>=9.4).

git clone https://github.com/CDJ11/CDJ.git
cd consul
bundle install
cp config/database.yml.example config/database.yml
cp config/secrets.yml.example config/secrets.yml
bin/rake db:create
bin/rake db:migrate
bin/rake db:dev_seed
bin/rake db:custom_seed
RAILS_ENV=test rake db:setup

Run the app locally:

bin/rails s

Prerequisites for testing: install ChromeDriver >= 2.33

Run the tests with:

bin/rspec

You can use the default admin user from the seeds file:

user: admin@consul.dev pass: 12345678

But for some actions like voting, you will need a verified user, the seeds file also includes one:

user: verified@consul.dev pass: 12345678

Configuration for production environments

See installer

Documentation

Check the ongoing documentation at https://consul_docs.gitbooks.io/docs/content/ to learn more about how to start your own CONSUL fork, install it, customize it and learn to use it from an administrator/maintainer perspective. You can contribute to it at https://github.com/consul/docs

License

Code published under AFFERO GPL v3 (see LICENSE-AGPLv3.txt)

Contributions

See CONTRIBUTING.md