Prise en main et paramétrage de ScoDoc 9¶
Ce document suppose que le logiciel a été installé suivant la procédure décrite dans GuideInstallDebian13.
Administration en ligne de commande¶
Les opérations d'administration se résument à la création de départements, et la création d'utilisateurs "super admin", c'est à dire admin pour tous les départements. Le reste des paramétrages (création de comptes, de formations, import d'étudiants, etc) se fait à partir du logiciel (web).
L'administration se fait dans un terminal connecté au serveur (en général via
ssh), en tant qu'utilisateur scodoc (et non root).
Se connecter et initialiser la session ainsi:
ssh votre.serveur # si nécessaire
su scodoc # idem,
# ou tout autre moyen d'ouvrir un shell comme scodoc
cd /opt/scodoc
source venv/bin/activate
Après quoi, vous pouvez utiliser les commandes décrites ci-dessous. Attention: le lancement de chaque commande peut être assez long (quelques secondes) car toute l'application scodoc est initialisée à chaque fois.
Création d'un département¶
flask create-dept DEPT
où DEPT est l'acronyme du département, par exemple "RT". Ce département
apparait immédiatement sur la page d'accueil.
Suppression d'un département¶
Opération très rarement nécessaire, proposée pour corriger une erreur immédiatement après la création, et pour les tests.
flask delete-dept [-f] [--yes] DEPT
-f, --force: ignore département non existant
--yes : ne demande pas confirmation
Création d'un utilisateur¶
Cette opération s'effectue en général depuis le logiciel, via un formulaire ou un import Excel. Pour créer un utilisateur depuis le terminal, lancer:
flask user-create LOGIN ROLE DEPT
où LOGIN sera le pseudo de l'utilisateur (utilisé pour se connecter),
et ROLE le rôle (Ens, Secr, Admin) dans le département DEPT.
Création d'un super-administrateur¶
Il s'agit d'un utilisateur ayant tous les droits, comme s'il était
Admin dans tous les départements.
flask user-create admin2 SuperAdmin @all
où admin2 est ici le pseudo du nouvel admin.
Changement du mot de passe d'un utilisateur¶
Cette opération peut s'effectuer via la page de gestion web des utilisateurs, mais il est parfois commode de le faire depuis la console:
flask user-password LOGIN
où LOGIN est le pseudo de l'utilisateur. Le mot de passe est demandé
sur la ligne de commande.
Modification d'un compte utilisateur¶
Modification de certains paramètres d'un compte utilisateur:
flask user-edit [--deactivate ] [--activate] [--cas-id cas_id] [--allow-cas-login] [--disable-cas-login] [--allow-scodoc-login] [--disable-scodoc-login] [--dept dept_acronym] [-v|--verbose] LOGIN
Avec simplement -v, affiche les attributs du compte.
Désactivation des comptes expirés¶
flask users-expire [--dry-run] [--dept DEPT]
Création d'un nouveau rôle¶
flask create-role role_name [permissions...]
Exemple: création d'une rôle "Observateur" ayant juste la permission de "voir":
flask create-role Observateur ScoView
Liste des rôles¶
flask list-roles
Édition d'un rôle (ajout/retrait permissions)¶
flask edit-role [-a permission] [-r permission] role_name
Ajoute ou retire une permission.
Ajout/retrait d'un rôle à un utilisateur¶
flask user-role username [-d departement] [-a RoleAAjouter] [-r RoleARetirer]
Exemples:
flask user-role dupont
affiche les rôles de l'utilisateur dupont.
flask user-role dupont -d MMI -a Observateur
donne le rôle Observateur (qui doit déjà exister) à l'utilisateur dupont dans
le département MMI.
Si le département n'est pas spécifié, le rôle est donné dans tous les départements (utile pour certains compte administrateurs ou utilisés en lecture par des clients de l'API).
Migration des données de ScoDoc 7¶
Les données dans ScoDoc 9 ayant un format et une organisation très différents de ScoDoc 7, une étape de conversion (migration) est nécessaire. Elle est automatique mais prend du temps.
Se reporter à MigrationScoDoc7a9
Ces commandes sont utilisées par le script de migration de ScoDoc 7 à ScoDoc 9. Ne pas utiliser sauf si vous savez vraiment ce que vous faites.
Comptes utilisateurs¶
Toujours migrer les comptes utilisateurs avant d'importer les départements.
flask import-scodoc7-users
Départements¶
Pour migrer un seul département:
flask import-scodoc7-dept DEPT DBNAME
Exemple:
flask import-scodoc7-dept InfoComm DBINFOCOMM
Liste des commandes Flask/ScoDoc¶
Dans l'encart ci-dessous, app désigne flask, comme dans les exemples donnés plus haut.
Usage: app [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
anonymize-db Anonymise la base de nom indiqué (et non...
clear-cache Clear ScoDoc cache This cache (currently...
create-dept Create new departement
create-role Create a new role
db Perform database migrations.
delete-dept Delete existing departement
delete-role Delete a role
downgrade-assiduites-module Supprime les assiduites et/ou les...
dumphelp Génère la page d'aide complète pour la doc.
edit-role Add [-a] and/or remove [-r] a permission...
entreprises-reset-db Remet a zéro les tables du module...
gen-api-doc Génère la documentation des routes de...
generate-ens-calendars Génère les calendrier enseignants à...
housekeeping Execute diverses tâches de maintenance...
import-scodoc7-dept Import département ScoDoc 7: dept:...
import-scodoc7-users Import users defined in ScoDoc7...
init-test-database Initialise les objets en base pour les...
list-depts If dept exists, print it, else nothing.
list-roles List all defined roles
localize-logo Make local to a dept a global logo (both...
migrate-abs-to-assiduites Permet de migrer les absences vers le...
migrate-scodoc7-dept-archives Post-migration: renomme les archives en...
migrate-scodoc7-dept-logos Post-migration: renomme les logos en...
photos-import-files Import des photos d'étudiants à partir...
profile Start the application under the code...
sco-db-init Initialize the database.
scodoc-database print the database connexion string
user-change-login Change user's login (user_name)
user-create Create a new user
user-db-clear Erase all users and roles from the...
user-delete Try to delete this user.
user-edit Modify or display user's account...
user-password Set (or change) user's password
user-role Add or remove a role to the given user...
users-expire Désactive les comptes utilisateurs...
Usage: app db [OPTIONS] COMMAND [ARGS]...
Perform database migrations.
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
-x, --x-arg TEXT Additional arguments consumed by custom env.py scripts
--help Show this message and exit.
Commands:
branches Show current branch points
check Check if there are any new operations to migrate
current Display the current revision for each database.
downgrade Revert to a previous version
edit Edit a revision file
heads Show current available heads in the script directory
history List changeset scripts in chronological order.
init Creates a new migration repository.
list-templates List available templates.
merge Merge two revisions together, creating a new revision file
migrate Autogenerate a new revision file (Alias for 'revision...
revision Create a new revision file.
show Show the revision denoted by the given symbol.
stamp 'stamp' the revision table with the given revision;...
upgrade Upgrade to a later version
Usage: app db list-templates [OPTIONS]
List available templates.
Options:
--help Show this message and exit.
Usage: app db init [OPTIONS]
Creates a new migration repository.
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
--multidb Support multiple databases
-t, --template TEXT Repository template to use (default is "flask")
--package Write empty __init__.py files to the environment and
version locations
--help Show this message and exit.
Usage: app db revision [OPTIONS]
Create a new revision file.
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
-m, --message TEXT Revision message
--autogenerate Populate revision script with candidate migration
operations, based on comparison of database to model
--sql Don't emit SQL to database - dump to standard output
instead
--head TEXT Specify head revision or <branchname>@head to base new
revision on
--splice Allow a non-head revision as the "head" to splice onto
--branch-label TEXT Specify a branch label to apply to the new revision
--version-path TEXT Specify specific path from config for version file
--rev-id TEXT Specify a hardcoded revision id instead of generating
one
--help Show this message and exit.
Usage: app db migrate [OPTIONS]
Autogenerate a new revision file (Alias for 'revision --autogenerate')
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
-m, --message TEXT Revision message
--sql Don't emit SQL to database - dump to standard output
instead
--head TEXT Specify head revision or <branchname>@head to base new
revision on
--splice Allow a non-head revision as the "head" to splice onto
--branch-label TEXT Specify a branch label to apply to the new revision
--version-path TEXT Specify specific path from config for version file
--rev-id TEXT Specify a hardcoded revision id instead of generating
one
-x, --x-arg TEXT Additional arguments consumed by custom env.py scripts
--help Show this message and exit.
Usage: app db edit [OPTIONS] [REVISION]
Edit a revision file
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
--help Show this message and exit.
Usage: app db merge [OPTIONS] [REVISIONS]...
Merge two revisions together, creating a new revision file
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
-m, --message TEXT Merge revision message
--branch-label TEXT Specify a branch label to apply to the new revision
--rev-id TEXT Specify a hardcoded revision id instead of generating
one
--help Show this message and exit.
Usage: app db upgrade [OPTIONS] [REVISION]
Upgrade to a later version
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
--sql Don't emit SQL to database - dump to standard output
instead
--tag TEXT Arbitrary "tag" name - can be used by custom env.py
scripts
-x, --x-arg TEXT Additional arguments consumed by custom env.py scripts
--help Show this message and exit.
Usage: app db downgrade [OPTIONS] [REVISION]
Revert to a previous version
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
--sql Don't emit SQL to database - dump to standard output
instead
--tag TEXT Arbitrary "tag" name - can be used by custom env.py
scripts
-x, --x-arg TEXT Additional arguments consumed by custom env.py scripts
--help Show this message and exit.
Usage: app db show [OPTIONS] [REVISION]
Show the revision denoted by the given symbol.
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
--help Show this message and exit.
Usage: app db history [OPTIONS]
List changeset scripts in chronological order.
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
-r, --rev-range TEXT Specify a revision range; format is [start]:[end]
-v, --verbose Use more verbose output
-i, --indicate-current Indicate current version (Alembic 0.9.9 or greater
is required)
--help Show this message and exit.
Usage: app db heads [OPTIONS]
Show current available heads in the script directory
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
-v, --verbose Use more verbose output
--resolve-dependencies Treat dependency versions as down revisions
--help Show this message and exit.
Usage: app db branches [OPTIONS]
Show current branch points
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
-v, --verbose Use more verbose output
--help Show this message and exit.
Usage: app db current [OPTIONS]
Display the current revision for each database.
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
-v, --verbose Use more verbose output
--help Show this message and exit.
Usage: app db stamp [OPTIONS] [REVISION]
'stamp' the revision table with the given revision; don't run any migrations
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
--sql Don't emit SQL to database - dump to standard output
instead
--tag TEXT Arbitrary "tag" name - can be used by custom env.py
scripts
--purge Delete the version in the alembic_version table before
stamping
--help Show this message and exit.
Usage: app db check [OPTIONS]
Check if there are any new operations to migrate
Options:
-d, --directory TEXT Migration script directory (default is "migrations")
--help Show this message and exit.
Usage: app sco-db-init [OPTIONS]
Initialize the database. Starts from an existing database and create all the
necessary SQL tables and functions.
Options:
--erase / --no-erase
--help Show this message and exit.
Usage: app anonymize-db [OPTIONS] DATABASE
Anonymise la base de nom indiqué (et non pas la base courante!)
Options:
--help Show this message and exit.
Usage: app user-db-clear [OPTIONS]
Erase all users and roles from the database !
Options:
--help Show this message and exit.
Usage: app housekeeping [OPTIONS]
Execute diverses tâches de maintenance périodique de ScoDoc. En principe à
exécuter une fois par jour, par exemple via une tâche systemd.
Options:
--help Show this message and exit.
Usage: app user-create [OPTIONS] USERNAME ROLE DEPT
Create a new user
Options:
-n, --nom TEXT
-p, --prenom TEXT
--help Show this message and exit.
Usage: app user-delete [OPTIONS] USERNAME
Try to delete this user. Fails if it's associated to some scodoc objects.
Options:
--help Show this message and exit.
Usage: app user-password [OPTIONS] USERNAME
Set (or change) user's password
Options:
--password TEXT
--help Show this message and exit.
Usage: app create-role [OPTIONS] ROLENAME [PERMISSIONS]...
Create a new role
Options:
--help Show this message and exit.
Usage: app list-roles [OPTIONS]
List all defined roles
Options:
--help Show this message and exit.
Usage: app edit-role [OPTIONS] ROLENAME
Add [-a] and/or remove [-r] a permission to/from a role. In ScoDoc,
permissions are not associated to users but to roles. Each user has a set of
roles in each departement.
Example: `flask edit-role -a ApogeeEdit Ens`
Options:
-a, --add TEXT
-r, --remove TEXT
--help Show this message and exit.
Usage: app delete-role [OPTIONS] ROLENAME
Delete a role
Options:
--help Show this message and exit.
Usage: app user-role [OPTIONS] USERNAME
Add or remove a role to the given user in the given dept
Options:
-d, --dept TEXT
-a, --add TEXT
-r, --remove TEXT
--help Show this message and exit.
Usage: app user-change-login [OPTIONS] USER_NAME NEW_USER_NAME
Change user's login (user_name)
Options:
--help Show this message and exit.
Usage: app user-edit [OPTIONS] USERNAME
Modify or display user's account attributes.
Options:
-d, --deactivate désactive ce compte
-a, --activate (ré)active ce compte
-c, --cas-id TEXT
--allow-cas-login autorise login via CAS
--disable-cas-login interdit login via CAS
--allow-scodoc-login autorise login via ScoDoc
--disable-scodoc-login interdit login via ScoDoc
--dept TEXT acronyme du département de rattachement
-v, --verbose verbose: affiche l'état après modif.
--help Show this message and exit.
Usage: app users-expire [OPTIONS]
Désactive les comptes utilisateurs expirés (date_expiration dépassée) Si
--dept est précisé, ne traite que les comptes du département indiqué, sinon
tous.
Options:
--dept TEXT acronyme du département de rattachement
--dry-run affiche les comptes qui seraient désactivés sans les désactiver
--help Show this message and exit.
Usage: app delete-dept [OPTIONS] DEPT
Delete existing departement
Options:
-y, --yes
-f, --force ignore non-existing departement
--help Show this message and exit.
Usage: app create-dept [OPTIONS] DEPT
Create new departement
Options:
--help Show this message and exit.
Usage: app list-depts [OPTIONS] [DEPTS]...
If dept exists, print it, else nothing. Called without arguments, list all
depts along with their ids.
Options:
--help Show this message and exit.
Usage: app scodoc-database [OPTIONS]
print the database connexion string
Options:
-n, --name show database name instead of connexion string (required for
dropdb/createdb commands)
--help Show this message and exit.
Usage: app import-scodoc7-users [OPTIONS]
Import users defined in ScoDoc7 postgresql database into ScoDoc 9 The old
database SCOUSERS must be alive and readable by the current user. This
script is typically run as unix user "scodoc". The original SCOUSERS
database is left unmodified.
Options:
--help Show this message and exit.
Usage: app import-scodoc7-dept [OPTIONS] DEPT DEPT_DB_NAME
Import département ScoDoc 7: dept: InfoComm, dept_db_name: SCOINFOCOMM
Options:
--help Show this message and exit.
Usage: app migrate-scodoc7-dept-archives [OPTIONS] [DEPT]
Post-migration: renomme les archives en fonction des id de ScoDoc 9
Options:
--help Show this message and exit.
Usage: app migrate-scodoc7-dept-logos [OPTIONS] [DEPT]
Post-migration: renomme les logos en fonction des id / dept de ScoDoc 9
Options:
--help Show this message and exit.
Usage: app localize-logo [OPTIONS] [LOGO] [DEPT]
Make local to a dept a global logo (both logo and dept names are mandatory)
Options:
--help Show this message and exit.
Usage: app photos-import-files [OPTIONS] FORMSEMESTRE_ID XLSFILE ZIPFILE
Import des photos d'étudiants à partir d'une liste excel et d'un zip avec
les images.
Options:
--help Show this message and exit.
Usage: app clear-cache [OPTIONS]
Clear ScoDoc cache This cache (currently Redis) is persistent between
invocation and it may be necessary to clear it during upgrades, development
or tests.
Options:
--sanitize / --no-sanitize
--help Show this message and exit.
Usage: app init-test-database [OPTIONS]
Initialise les objets en base pour les tests API (à appliquer sur
SCODOC_TEST ou SCODOC_DEV) Si --api,
Options:
--api-user TEXT
--api-password TEXT
--help Show this message and exit.
Usage: app entreprises-reset-db [OPTIONS]
Remet a zéro les tables du module relations entreprises
Options:
--help Show this message and exit.
Usage: app dumphelp [OPTIONS]
Génère la page d'aide complète pour la doc.
Options:
--help Show this message and exit.
Usage: app profile [OPTIONS]
Start the application under the code profiler.
Options:
-h, --host TEXT The interface to bind to.
-p, --port INTEGER The port to bind to.
--length INTEGER Number of functions to include in the profiler report.
--profile-dir TEXT Directory where profiler data files are saved.
--help Show this message and exit.
Usage: app migrate-abs-to-assiduites [OPTIONS]
Permet de migrer les absences vers le nouveau module d'assiduités
Options:
-d, --dept TEXT Restreint la migration au dept sélectionné (ACRONYME)
-m, --morning TEXT Spécifie l'heure de début des cours format `hh:mm`
-n, --noon TEXT Spécifie l'heure de fin du matin format `hh:mm`
-a, --afternoon TEXT Spécifie l'heure de début de l'après-midi format
`hh:mm` valeur identique à --noon si non spécifié
-e, --evening TEXT Spécifie l'heure de fin des cours format `hh:mm`
--help Show this message and exit.
Usage: app downgrade-assiduites-module [OPTIONS]
Supprime les assiduites et/ou les justificatifs de tous les départements ou
du département sélectionné
Options:
-d, --dept TEXT Restreint la suppression au dept sélectionné (ACRONYME)
-a, --assiduites Supprime les assiduités de scodoc
-j, --justificatifs Supprime les justificatifs de scodoc
--help Show this message and exit.
Usage: app generate-ens-calendars [OPTIONS]
Génère les calendrier enseignants à partir des ics semestres
Options:
--help Show this message and exit.
Usage: app gen-api-doc [OPTIONS]
Génère la documentation des routes de l'API.
Options:
-e, --endpoint TEXT Endpoint à partir duquel générer la documentation des
routes
--help Show this message and exit.
(la liste ci-dessus est générée à l'aide de la commande flask dumphelp).
Changement des logos apparaissant sur les documents¶
Note: après migration, vos logos de ScoDoc 7 sont installés dans ScoDoc 9.
Les documents PDF (PV de jurys...) incluent les logos de l'établissement. Par défaut, ceux de l'IUT de Villetaneuse et de l'Université Paris 13 sont distribués. Pour les changer, passer par la page d'administration (lien Configuration sur la page d'accueil, en tant que super-admin), voir la FAQ.
Utilisation via le Web¶
- Connectez-vous au site:
https://votre.site.fr/
Vous allez voir la page d'accueil de ScoDoc, vous permettant de choisir le département où travailler.
Ne jamais travailler comme administrateur
Surtout, évitez de travailler comme "admin" (super admin): prenez le temps de créer un utilisateur "chef de département !" dans chaque département, qui à son tour peut déléguer des droits.