# ScoDoc - Gestion de la scolarité - Version ScoDoc 8 (c) Emmanuel Viennet 1999 - 2021 (voir LICENCE.txt) Installation: voir instructions à jour sur Documentation utilisateur: ## Branche ScoDoc 8 expérimentale N'utiliser que pour les développements et tests. La version ScoDoc8 est basée sur Flask (au lieu de Zope) et sur **python 3.7+**. Elle ne sera pas mise en production, c'est une version de développement pour le passage à Python 3. De très nombreux changements sont susceptibles d'affecter l'API, mais on s'efforce à ce que rien ne soit visible des utilisateurs Web. **Work in Progress (WIP)**: développement en cours, certaines pages fonctionnent, d'autres pas: merci de signaler les erreurs. ### État actuel (23 juillet 21) - serveur de développement fonctionnel (pas testé en mode "production" sous gunicorn+nginx). - logs à revoir - pas d'import/export excel. - pas de pages gestion utilisateurs. **En cours:** - tests, formulaires utilisateurs, logging. ## Installation (sur Debian 10 / python3.7) On peut installer à partir de zéro, ou sur une machine ayant déjà un ScoDoc 7 et migrer les données. ### Installation Sur un système Linux Debian 10, en tant que `root`: - Charger la dernière release depuis https://scodoc.org/git/viennet/ScoDoc/releases - Déplacer ou copier le fichier `scodoc-v8.x.y.tgz` dans `/opt` et le décomprimer: sudo su cd /opt; tar xf - scodoc-v8.x.y.tgz # remplacer x et y par votre version - Lancer le script d'installation: cd /opt/scodoc8/tools ./install_debian10.sh ce script crée un compte utilisateur "scodoc". Note: si vous installez sur une machine déjà configurée pour ScoDoc 7, il est inutile de reconfigurer la messagerie et le firewall. ### Bases de données ScoDoc8 utilise les bases de département de ScoDoc7, mais une nouvelle base utilisateurs nommée `SCO8USERS` (au lieu de `SCOUSERS`), qui est manipulée via `sqlalchemy`. ### Configuration de la base utilisateurs Lancer le script: su postgres cd /opt/scodoc8/tools ./create_database.sh Ce script crée une base nommée `SCO8USERS`, appartenant à l'utilisateur (role) postgres `scodoc`. Cet utilisateur est automatiquement créé si nécessaire. ### Initialisation de la base utilisateur par Flask En tant qu'utilisateur `scodoc`: su scodoc # si besoin flask db init flask db migrate -m "users and roles tables" flask db upgrade Puis initialisation de l'appli: flask user-db-init Et saisie du mot de passe `admin`: flask user-password admin On peut ensuite créer des utilisateurs tests avec: flask user-create toto Ens RT flask user-create tata Ens Info ou mieux, importer les utilisateurs de ScoDoc7 avec: flask user-db-import-scodoc7 (la base `SCOUSERS` de ScoDoc7 n'est pas affectée, ScoDoc8 utilise une base séparée, nommée `SCO8USERS`). Pour créer un utilisateur "super admin", c'est à dire admin dans tous les départements: flask user-create admin1 SuperAdmin @all ## Migration d'une installation ScoDoc 7 Le script `migrate_from_scodoc7.sh` va déplacer les donneés et reconfigurer les bases de données de votre installation ScoDoc 7 pour passer à ScoDoc 8 (*ne pas utiliser en production !*). **Les modifications effectuées sont sans retour: ScoDoc 7 ne fonctionnera plus !** 1. S'assurer que l'installation ScoDoc 7 est à jour sudo su cd /opt/scodoc/Products/ScoDoc/config ./upgrade.sh 2. Arrêter le service ScoDoc 7 systemctl stop scodoc7 S'assurer qu'il est bien stoppé (`ps auxw`, ...), sans qui la migration va échouer. 3. Lancer le script de migration ScoDoc 8 doit avoir été installé comme expliqué plus haut. sudo su cd /opt/scodoc8/tools ./migrate_from_scodoc7.sh ## Lancement serveur (développement, sur VM Linux) En tant qu'utilisateur `scodoc` (pour avoir accès aux bases départements de ScoDoc7): 1. Lancer memcached: memcached 2. Dans un autre terminal, lancer le serveur: export FLASK_APP=scodoc.py export FLASK_ENV=development flask run --host=0.0.0.0 ## Tests unitaires pytest tests/unit # TODO - page d'erreur ScoValueError - redirection pour authentification - import/export Excel