#  Prise en main et paramétrage de ScoDoc 9

<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> Cette 
page  concerne la version ScoDoc 9, distribuée à partir de septembre 2021. Pour l'ancienne 
version, voir [cette page](GuideConfig7.md).

Ce document suppose que le logiciel a été installé suivant la procédure décrite dans 
[GuideInstallDebian11](GuideInstallDebian11.md).


#  Administration en ligne de commande

Les opérations d'administration se résument à la création de départements, et l'installation
des logos, 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 est 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.

    flask delete-dept DEPT
    
## 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.

## Création d'un nouveau rôle

    flask create-role role_name [permissions...]

Exemple: création d'une rôle "Observateur" ayant juste la persmision de "voir":

    flask create-role Observateur ScoView

## Édition d'un rôle (ajout/retrait permissions)

    flask edit-role [-a permission] [-r permission] role_name

Ajoute ou retire une permission.


## 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](MigrationScoDoc7a9.md)

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
```
Commands:
  clear-cache           Clear ScoDoc cache (currently Redis)
  create-dept           Create new departement
  delete-dept           Delete existing departement
  edit-role             Add [-a] and/or remove [-r] a permission to/from a role
  import-scodoc7-dept   Import département ScoDoc 7
  import-scodoc7-users  Import users defined in ScoDoc7 postgresql
  sco-db-init           Initialize the database.
  user-create           Create a new user
  user-db-clear         Erase all users and roles from the database !
  user-password         Set (or change) user's password

Usage: app sco-db-init [OPTIONS]

  Initialize the database. Starts from an existing database and create all the
  necessary SQL tables and functions.

Usage: app user-db-clear [OPTIONS]

  Erase all users and roles from the database !

Usage: app user-create [OPTIONS] USERNAME ROLE DEPT

  Create a new user

Options:
  -n, --nom TEXT
  -p, --prenom TEXT


Usage: app user-password [OPTIONS] USERNAME

  Set (or change) user's password

Options:
  --password TEXT


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 ScoEditApo Ens`

Options:
  -a, --add TEXT
  -r, --remove TEXT


Usage: app delete-dept DEPT

  Delete existing departement


Usage: app create-dept DEPT

  Create new departement


Usage: app import-scodoc7-users 

  Import used 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.


Usage: app import-scodoc7-dept  DEPT DEPT_DB_NAME

  Import département ScoDoc 7: dept: InfoComm, dept_db_name: SCOINFOCOMM


Usage: app clear-cache

  Clear ScoDoc cache This cache (currently Redis) is persistent between
  invocation and it may be necessary to clear it during development or tests.

Options:
  --help  Show this message and exit.
```



##  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, placer vos logos (fichiers images JPEG ou PNG) 
dans le répertoire 

    /opt/scodoc-data/config/logos

avec les noms `logo_header.jpg` (habituellement le logo de votre composante) 
et `logo_footer.jpg` (habituellement le logo de votre université ou école).

On peut fournir des logos par département en créant des sous-répertoires

    /opt/scodoc-data/config/logos/logo_<dept>/

pour y placer les fichiers images `logo_header.jpg` et `logo_footer.jpg`. 

<!-- Ensuite, éditez le fichier 

    /opt/scodoc-data/config/logos

et changer les valeurs des variables `CONFIG.LOGO_FOOTER_ASPECT` et suivantes 
(ce n'est pas pratique, il faudrait modifier le code ScoDoc pour calculer ces valeurs 
à partir des fichiers images). -->

Enfin, redémarrez ScoDoc après avoir vidé les caches:

    flask clear-cache
    sudo systemctl restart scodoc9


# 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.

<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" alt="/!\" /> 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 pour déléguer des droits.