Aller au contenu

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

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

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

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

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.