Aller au contenu

Installer Listsém

Installer le paquet Python

Listsém est écrit en Python. Il faut s'assurer d'avoir un système où une version récente est disponible.

Il est conseillé de travailler dans un environnement virtuel. Toutes les commandes suivantes sont exécutées une fois cet environnement activé.

$ pip install listsem

Configurer l'application

Les variables d'environnement suivantes doivent être définie :

  • LISTSEM_SECRET_KEY : pour utiliser les sessions de Flask ;
  • LISTSEM_EVENT_STORE_DSN : pour se connecter à la BD qui contient les évènements ;
  • LISTSEM_PROJECTIONS_DSN : pour se connecter à la BD qui contient les projections ;
  • LISTSEM_DATA_DSN : pour se connecter à la BD qui contient les autres données ;
  • LISTSEM_NEOBAB_URL : pour se connecter l'API de Néobab ;
  • LISTSEM_SMTP_HOST, LISTSEM_SMTP_PORT, LISTSEM_SMTP_FROM et LISTSEM_SMTP_NOREPLY : pour envoyer de courriels ;
  • LISTSEM_SYMPA_API, LISTSEM_SYMPA_PASSWORD et LISTSEM_SYMPA_EMAIL : pour gérer les listes de diffusion.

Remarques : l'application utilise 3 DSN pour stocker des informations de natures différentes. Ceci est très pratique, mais peut être inutilement compliqué pour certaines installations. Il est tout à fait possible d'utilise la même DSN pour les 3 variables, car les tables ont des noms différents et peuvent donc co-exister.

Certaines fonctionnalités sont optionnelles et peuvent être activées et configurées au cas par cas :

  • LISTSEM_MAINTENANCE : pour activer le mode maintenance ;
  • LISTSEM_LOCALE : pour avoir les dates affichées dans le format voulu ;
  • LISTSEM_DEBUG_SQL : pour avoir les logs de SQLAlchemy ;
  • LISTSEM_CAS_SERVER : pour activer l'authentification via CAS, en définissant aussi
  • LISTSEM_CAS_LOGIN_ROUTE : le chemin de login sur le serveur CAS ;
  • LISTSEM_CAS_LOGOUT_ROUTE : le chemin de logout sur le serveur CAS ;
  • LISTSEM_CAS_VALIDATE_ROUTE : le chemin de validation sur le serveur CAS ;
  • LISTSEM_CAS_AFTER_LOGOUT : l'URL de redirection après déconnexion sur le serveur CAS ;
  • LISTSEM_SENTRY_URL : pour envoyer les rapports d'erreur à une instance Sentry.

Par exemple :

$ export LISTSEM_SECRET_KEY="azerty12345"
$ export LISTSEM_EVENT_STORE_DSN="sqlite:///evenements.sqlite"
$ export LISTSEM_PROJECTIONS_DSN="sqlite:///projections.sqlite"
$ export LISTSEM_DATA_DSN="sqlite:///data.sqlite"
$ export LISTSEM_NEOBAB_URL="http://127.0.0.1:8000"
$ export LISTSEM_LOCALE="fr_FR.UTF-8"
$ export LISTSEM_DEBUG_SQL="true"
$ export LISTSEM_SMTP_HOST="localhost"
$ export LISTSEM_SMTP_PORT="1025"
$ export LISTSEM_SMTP_FROM="listsem@ehess.fr"
$ export LISTSEM_SMTP_NOREPLY="ne-pas-repondre@ehess.fr"
$ export LISTSEM_CAS_SERVER="https://cas.ehess.fr"
$ export LISTSEM_CAS_LOGIN_ROUTE="/casv3"
$ export LISTSEM_CAS_LOGOUT_ROUTE="/casv3/logout"
$ export LISTSEM_CAS_VALIDATE_ROUTE="/casv3/serviceValidate"
$ export LISTSEM_CAS_AFTER_LOGOUT="http://participations.ehess.fr/auth/deconnexion"
$ export LISTSEM_SENTRY_URL="http://abcd1234@localhost:9000/2"
$ export LISTSEM_SENTRY_SAMPLE_RATE="0.5"

Utiliser la commande listsem

Il est possible de changer la verbosité de la commande listsem en utilisant les drapeaux de verbosité --quiet, --verbose et --debug.

Celles-ci doivent précédent la commande à exécuter :

$ listsem [--quiet|--verbose|--debug] <COMMAND>

Pour obtenir la liste des commandes disponibles :

$ listsem --help

Initialiser l'application

Afin de créer les différent schémas de données, il faut exécuter les commandes suivantes :

$ listsem bd initialiser
$ listsem importer formations 2021-2022
$ listsem importer seminaires 2021-2022 [--jauge 50]
$ listsem projecteurs amorcer
$ listsem projecteurs statut

Lancer l'application

L'application se compose de plusieurs processus à lancer séparément  :

$ listsem projecteurs demarrer
# et
$ gunicorn --access-logfile="-" -w 4 -b 127.0.0.1:3000 "listsem.entry_points.wsgi:app()"

Il est recommandé d'utiliser un gestionnaire de processus comme Supervisor et de regrouper le lancement des différents projecteurs en fonction de l'interval de rafraichissement.

Retour en haut de la page