Compare commits

...

3 Commits

3 changed files with 185 additions and 81 deletions

View File

@ -99,7 +99,9 @@ Exemple:
donne le rôle `Observateur` (qui doit déjà exister) à l'utilisateur `dupont` dans donne le rôle `Observateur` (qui doit déjà exister) à l'utilisateur `dupont` dans
le département `MMI`. le département `MMI`.
Si le département n'est pas spécifié, le rôle est donné dans *tous* les départements. 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 ## Migration des données de ScoDoc 7
Les données dans ScoDoc 9 ayant un format et une organisation très différents Les données dans ScoDoc 9 ayant un format et une organisation très différents
@ -130,26 +132,43 @@ Exemple:
## Liste des commandes Flask/ScoDoc ## Liste des commandes Flask/ScoDoc
``` ```
Commands: Commands:
clear-cache Clear ScoDoc cache (currently Redis) clear-cache Clear ScoDoc cache This cache (currently...
create-dept Create new departement create-dept Create new departement
delete-dept Delete existing departement create-role Create a new role
edit-role Add [-a] and/or remove [-r] a permission to/from a role delete-dept Delete existing departement
import-scodoc7-dept Import département ScoDoc 7 dumphelp
import-scodoc7-users Import users defined in ScoDoc7 postgresql edit-role Add [-a] and/or remove [-r] a permission...
sco-db-init Initialize the database. import-scodoc7-dept Import département ScoDoc 7: dept:...
user-create Create a new user import-scodoc7-users Import users defined in ScoDoc7...
user-db-clear Erase all users and roles from the database ! list-depts If dept exists, print it, else nothing.
user-password Set (or change) user's password localize-logo Make local to a dept a global logo (both...
migrate-scodoc7-dept-archives Post-migration: renomme les archives en...
migrate-scodoc7-dept-logos Post-migration: renomme les logos en...
photos-import-files
profile Start the application under the code...
sco-db-init Initialize the database.
scodoc-database print the database connexion string
user-create Create a new user
user-db-clear Erase all users and roles from the...
user-password Set (or change) user's password
user-role Add or remove a role to the given user...
Usage: app sco-db-init [OPTIONS] Usage: app sco-db-init [OPTIONS]
Initialize the database. Starts from an existing database and create all the Initialize the database. Starts from an existing database and create all the
necessary SQL tables and functions. necessary SQL tables and functions.
Options:
--erase / --no-erase
--help Show this message and exit.
Usage: app user-db-clear [OPTIONS] Usage: app user-db-clear [OPTIONS]
Erase all users and roles from the database ! Erase all users and roles from the database !
Options:
--help Show this message and exit.
Usage: app user-create [OPTIONS] USERNAME ROLE DEPT Usage: app user-create [OPTIONS] USERNAME ROLE DEPT
Create a new user Create a new user
@ -157,7 +176,7 @@ Usage: app user-create [OPTIONS] USERNAME ROLE DEPT
Options: Options:
-n, --nom TEXT -n, --nom TEXT
-p, --prenom TEXT -p, --prenom TEXT
--help Show this message and exit.
Usage: app user-password [OPTIONS] USERNAME Usage: app user-password [OPTIONS] USERNAME
@ -165,7 +184,14 @@ Usage: app user-password [OPTIONS] USERNAME
Options: Options:
--password TEXT --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 edit-role [OPTIONS] ROLENAME Usage: app edit-role [OPTIONS] ROLENAME
@ -178,42 +204,117 @@ Usage: app edit-role [OPTIONS] ROLENAME
Options: Options:
-a, --add TEXT -a, --add TEXT
-r, --remove TEXT -r, --remove TEXT
--help Show this message and exit.
Usage: app user-role [OPTIONS] USERNAME
Usage: app delete-dept DEPT 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 delete-dept [OPTIONS] DEPT
Delete existing departement Delete existing departement
Options:
--help Show this message and exit.
Usage: app create-dept DEPT Usage: app create-dept [OPTIONS] DEPT
Create new departement Create new departement
Options:
--help Show this message and exit.
Usage: app import-scodoc7-users Usage: app list-depts [OPTIONS] [DEPTS]...
Import used defined in ScoDoc7 postgresql database into ScoDoc 9 The old 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 database SCOUSERS must be alive and readable by the current user. This
script is typically run as unix user "scodoc". The original SCOUSERS script is typically run as unix user "scodoc". The original SCOUSERS
database is left unmodified. database is left unmodified.
Options:
--help Show this message and exit.
Usage: app import-scodoc7-dept DEPT DEPT_DB_NAME Usage: app import-scodoc7-dept [OPTIONS] DEPT DEPT_DB_NAME
Import département ScoDoc 7: dept: InfoComm, dept_db_name: SCOINFOCOMM Import département ScoDoc 7: dept: InfoComm, dept_db_name: SCOINFOCOMM
Options:
--help Show this message and exit.
Usage: app clear-cache 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
Options:
--help Show this message and exit.
Usage: app clear-cache [OPTIONS]
Clear ScoDoc cache This cache (currently Redis) is persistent between Clear ScoDoc cache This cache (currently Redis) is persistent between
invocation and it may be necessary to clear it during development or tests. invocation and it may be necessary to clear it during development or tests.
Options: Options:
--help Show this message and exit. --help Show this message and exit.
Usage: app dumphelp [OPTIONS]
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.
``` ```
## Changement des logos apparaissant sur les documents ## Changement des logos apparaissant sur les documents
*Note: après migration, vos logos de ScoDoc 7 sont installés dans ScoDoc 9*. *Note: après migration, vos logos de ScoDoc 7 sont installés dans ScoDoc 9*.

View File

@ -12,6 +12,7 @@ Quelques informations pour les développeurs.
- l'ORM [SQLAlchemy](https://www.sqlalchemy.org/) - l'ORM [SQLAlchemy](https://www.sqlalchemy.org/)
- les templates [Jinja2](https://jinja.palletsprojects.com/en/3.0.x/) - les templates [Jinja2](https://jinja.palletsprojects.com/en/3.0.x/)
- [Postgresql](https://www.postgresql.org/) - [Postgresql](https://www.postgresql.org/)
- [Redis](https://redis.io/) cache persistant
- [NGINX](https://www.nginx.com/) serveur Web frontal - [NGINX](https://www.nginx.com/) serveur Web frontal
- [gunicorn](https://gunicorn.org/) WSGI HTTP server - [gunicorn](https://gunicorn.org/) WSGI HTTP server
- et bien sûr Linux (Debian) et systemd. - et bien sûr Linux (Debian) et systemd.

View File

@ -35,14 +35,14 @@ disparaitront en juillet 2022.
Certaines ont plusieurs "routes" (URl), car ScoDoc 7 tolérait divers accès. Certaines ont plusieurs "routes" (URl), car ScoDoc 7 tolérait divers accès.
- `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/ etudid>`) - `Absences/XMLgetBilletsEtud` (deviendra `api/absences/billets/etud/<int:etudid>`)
- `Absences/AddBilletAbsence` (deviendra `api/absences/billet/add`) - `Absences/AddBilletAbsence` (deviendra `api/absences/billet/add`)
- `Absences/XMLgetAbsEtud` (deviendra `api/absences/ etudid>`, en json) - `Absences/XMLgetAbsEtud` (deviendra `api/absences/ etudid>`, en json)
- `Notes/evaluation_listenotes` (non existante en ScoDoc9, trop complexe) - `Notes/evaluation_listenotes` (non existante en ScoDoc9, trop complexe)
- `Notes/formsemestre_id` (deviendra `api/formsemestre`) - `Notes/formsemestre_id` (deviendra `api/formsemestre`)
- `Notes/formsemestre_bulletinetud` (deviendra `api/etud/<etudid>/bul/<formsemestre_id>`) - `Notes/formsemestre_bulletinetud` (deviendra `api/etud/<etudid>/bul/<int:formsemestre_id>`)
- `Notes/XMLgetFormsemestres` (non existante en ScoDoc9, redondant avec `api/formsemestre` ?) - `Notes/XMLgetFormsemestres` (non existante en ScoDoc9, redondant avec `api/formsemestre` ?)
- `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/<etudid>`) - `etud_info` ou `XMLgetEtudInfos` ou `Absences/XMLgetEtudInfos` ou `Notes/XMLgetEtudInfos` (deviendra `/api/etud/<int:etudid>`)
- `groups_view` (deviendra `groups`) - `groups_view` (deviendra `groups`)
Les routes ci-dessus s'entendent à partir de l'URL de base de votre ScoDoc, c'est Les routes ci-dessus s'entendent à partir de l'URL de base de votre ScoDoc, c'est
@ -62,6 +62,8 @@ La documentation ci-dessous concerne la **future** version De ScoDoc.
Elle sera accessible à l'adresse: https://scodoc.monsite.tld/ScoDoc/api/fonction Elle sera accessible à l'adresse: https://scodoc.monsite.tld/ScoDoc/api/fonction
L'ensemble des routes sont visible via la commande suivante : ``flask routes | grep /ScoDoc/api``
### Authentification ### Authentification
TODO décrire procédure d'authentification et tokens jwt. TODO décrire procédure d'authentification et tokens jwt.
@ -88,42 +90,42 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ
* **`departements`** * **`departements`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `viewable` (optionnel, si faux liste aussi les départements non accessibles à l'utilisateur courant), `format` (json, xml) * **Paramètres:** `viewable` (optionnel, si faux liste aussi les départements non accessibles à l'utilisateur courant), `format` (json, xml)
* **Routes:** `/api/departements` * **Routes:** `/ScoDoc/api/departements`
* **Exemple d'utilisation:** `/api/departements` * **Exemple d'utilisation:** `/ScoDoc/api/departements`
* **Résultat:** Liste des id de départements. * **Résultat:** Liste des id de départements.
* **Exemple de résultat:** `[id_1, id_2, id_3, ...]` * **Exemple de résultat:** `[id_1, id_2, id_3, ...]`
* **`liste_etudiants`** * **`liste_etudiants`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `dept`, `semestre` * **Paramètres:** `dept`, `formsemestre_id`
* **Routes:** `/api/departements/<str:dept>/etudiants/liste/<str:semestre>` (_`semestre` étant un paramètre optionnel_) * **Routes:** `/ScoDoc/api/departements/<string:dept>/etudiants/liste/<int:formsemestre_id>` (_`semestre` étant un paramètre optionnel_)
* **Exemple d'utilisation:** `/api/departements/MMI/etudiants/liste` * **Exemple d'utilisation:** `/ScoDoc/api/departements/MMI/etudiants/liste`
* **Résultat:** liste des étudiants d'un département - semestre actuel par défaut. * **Résultat:** Liste des étudiants d'un département - semestre actuel par défaut.
* **`liste_semestres_actifs`** * **`liste_semestres_actifs`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `dept` * **Paramètres:** `dept`
* **Routes:** `/api/departements/<str:dept>/semestres_actifs` * **Routes:** `/ScoDoc/api/departements/<string:dept>/semestres_actifs`
* **Exemple d'utilisation:** `/api/departements/MMI/semestres_actifs` * **Exemple d'utilisation:** `/ScoDoc/api/departements/MMI/semestres_actifs`
* **Résultat:** Liste des semestres actifs d'un département donné. (_réponse sous format json_) * **Résultat:** Liste des semestres actifs d'un département donné. (_réponse sous format json_)
* **`referenciel_competences`** * **`referenciel_competences`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `dept`, `formation` (_`formation` étant un id de formation, un programme pédagogique_) * **Paramètres:** `dept`, `formation` (_`formation` étant un id de formation, un programme pédagogique_)
* **Routes:** `/api/departements/<str:dept>/formations/<int:formation>/referentiel_competences` * **Routes:** `/ScoDoc/api/departements/<string:dept>/formations/<int:formation>/referentiel_competences`
* **Exemple d'utilisation:** `/api/departements/MMI/formations/12/referentiel_competences` * **Exemple d'utilisation:** `/ScoDoc/api/departements/MMI/formations/12/referentiel_competences`
* **Résultat:** Le référentiel de compétences d'une formation donnée. (_pas toujours présent_) * **Résultat:** Le référentiel de compétences d'une formation donnée au format json. (_pas toujours présent_)
## Etudiants ## Etudiants
* **`etud_dept`** * **`etud_dept`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `code_nip` * **Paramètres:** `code_nip`
* **Routes:** `/api/etud_dept/<int:code_nip>` * **Routes:** `/ScoDoc/api/etud_dept/<int:code_nip>`
* **Exemple d'utilisation:** `/api/etud_dept/123` * **Exemple d'utilisation:** `/ScoDoc/api/etud_dept/123`
* **Résultat:** Liste des étudiants avec le code NIP donné tirée par ordre d'inscription décroissant. * **Résultat:** Liste des étudiants avec le code NIP donné tirée par ordre d'inscription décroissant.
* **Exemple de résultat:** * **Exemple de résultat:**
``` ```
@ -141,8 +143,8 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ
* **`etudiant`** * **`etudiant`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `etudid` * **Paramètres:** `etudid`
* **Routes:** `/api/etudiant/<int:etudid>` * **Routes:** `/ScoDoc/api/etudiant/<int:etudid>`
* **Exemple d'utilisation:** `/api/etudiant/987` * **Exemple d'utilisation:** `/ScoDoc/api/etudiant/987`
* **Résultat:** Un dictionnaire avec les informations de l'étudiant correspondant à l'id passé en paramètres. * **Résultat:** Un dictionnaire avec les informations de l'étudiant correspondant à l'id passé en paramètres.
* **Exemple de résultat:** * **Exemple de résultat:**
``` ```
@ -178,8 +180,8 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ
* **`etudiant_bulletin_semestre`** * **`etudiant_bulletin_semestre`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `etudid`, `sem_id` * **Paramètres:** `etudid`, `sem_id`
* **Routes:** `/api/etudiant/<int:etudid>/semestre/<int:sem_id>/bulletin` * **Routes:** `/ScoDoc/api/etudiant/<int:etudid>/semestre/<int:sem_id>/bulletin`
* **Exemple d'utilisation:** `/api/etudiant/987/semestre/12/bulletin` * **Exemple d'utilisation:** `/ScoDoc/api/etudiant/987/semestre/12/bulletin`
* **Résultat:** Le bulletin d'un étudiant en fonction de son id et d'un semestre donné. * **Résultat:** Le bulletin d'un étudiant en fonction de son id et d'un semestre donné.
* **Exemple de résultat:** voir plus bas sur cette page. * **Exemple de résultat:** voir plus bas sur cette page.
@ -189,8 +191,8 @@ Tous les codes >= 400 indiquent que la requête n'a pas été traitée avec succ
* **`etudiant_bulletin`** * **`etudiant_bulletin`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formsemestre_id`, `dept`, `etudid`, `format` (`pdf` ou `json` _par défaut json_), `version` (`short`, `selectedevals` ou `long`) * **Paramètres:** `formsemestre_id`, `dept`, `etudid`, `format` (`pdf` ou `json` _par défaut json_), `version` (`short`, `selectedevals` ou `long`)
* **Routes:** : `/api/formsemestre/<int:formsemestre_id>/departements/<str:dept>/etudiant/nip|id|ine/{NIP}|{etudid}|numScodoc}/releve` * **Routes:** : `/ScoDoc/api/formsemestre/<int:formsemestre_id>/departements/<string:dept>/etudiant/nip|id|ine/{NIP}|{etudid}|numScodoc}/bulletin?format=<string:format>&version=<string:version>`
* **Exemple d'utilisation:** `/api/formsemestre/123/departements/MMI/etudiant/id/456/releve?format=pdf&version=short` * **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/123/departements/MMI/etudiant/id/456/bulletin?format=pdf&version=short`
* **Résultat:** Un bulletin de notes. * **Résultat:** Un bulletin de notes.
* **Exemple de résultat:** ici au format JSON, pour une version courte (`version=short`) * **Exemple de résultat:** ici au format JSON, pour une version courte (`version=short`)
``` ```
@ -360,16 +362,16 @@ formsemestre_id": "SEM12345",
* **`etudiant_photo`** * **`etudiant_photo`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `etudid`, `small` * **Paramètres:** `etudid`, `small`
* **Routes:** `/api/etudiant/<int:etudid>/photo` **OU** `/api/etudiant/<int:etudid>/photo/small` (_ajout du paramètre **small** pour la version small_) * **Routes:** `/ScoDoc/api/etudiant/<int:etudid>/photo` **OU** `/ScoDoc/api/etudiant/<int:etudid>/photo/small` (_ajout du paramètre **small** pour la version small_)
* **Exemple d'utilisation:** `/api/etudiant/123/photo` **OU** `/api/etudiant/123/photo/small` (_pour la version small_) * **Exemple d'utilisation:** `/ScoDoc/api/etudiant/123/photo` **OU** `/ScoDoc/api/etudiant/123/photo/small` (_pour la version small_)
* **Résultat:** Image en JPEG ou PNG. * **Résultat:** Image en JPEG ou PNG.
* **`etudiant_groups`** * **`etudiant_groups`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `etudid`, `formsemestre_id` * **Paramètres:** `etudid`, `formsemestre_id`
* **Routes:** `/api/etudiant/<int:etudid>/semestre/<int:formsemestre_id>/groups` * **Routes:** `/ScoDoc/api/etudiant/<int:etudid>/semestre/<int:formsemestre_id>/groups`
* **Exemple d'utilisation:** `/api/etudiants/123/semestre/INFO-DUT-FI-S1-2014/groups` * **Exemple d'utilisation:** `/ScoDoc/api/etudiants/123/semestre/INFO-DUT-FI-S1-2014/groups`
* **Résultat:** Liste des groupes auxquels appartient l'étudiant dans le semestre indiqué. * **Résultat:** Liste des groupes auxquels appartient l'étudiant dans le semestre indiqué.
``` ```
@ -400,8 +402,8 @@ formsemestre_id": "SEM12345",
* **`formations`** * **`formations`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formation_id` (_optionnel, si absent, liste toutes les formations_) * **Paramètres:** `formation_id` (_optionnel, si absent, liste toutes les formations_)
* **Routes:** `/api/formations` **ou** `/api/formations/<int:formation_id>` * **Routes:** `/ScoDoc/api/formations` **ou** `/ScoDoc/api/formations/<int:formation_id>`
* **Exemple d'utilisation:** `/api/formations` **ou** `/api/formations/1` * **Exemple d'utilisation:** `/ScoDoc/api/formations` **ou** `/ScoDoc/api/formations/1`
* **Résultat:** Liste des formations. * **Résultat:** Liste des formations.
* **Exemple de résultat:** `[formation_1, formation_2, formation_3, ...]` * **Exemple de résultat:** `[formation_1, formation_2, formation_3, ...]`
* TODO: détailler le contenu publié * TODO: détailler le contenu publié
@ -411,8 +413,8 @@ formsemestre_id": "SEM12345",
* **`formation_export`** * **`formation_export`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formation_id`, `export_ids` (_par défaut "faux"_) * **Paramètres:** `formation_id`, `export_ids` (_par défaut "faux"_)
* **Routes:** `/api/formations/formation_export/<int:formation_id>` * **Routes:** `/ScoDoc/api/formations/formation_export/<int:formation_id>?format=<string:format>&export_ids=<int:export_ids>`
* **Exemple d'utilisation:** `/api/formations/formation_export/596` **ou** `/api/formations/formation_export/596?format=xml&export_ids=1` * **Exemple d'utilisation:** `/ScoDoc/api/formations/formation_export/596` **ou** `/ScoDoc/api/formations/formation_export/596?format=xml&export_ids=1`
* **Résultat:** La formation, avec UE, matières, modules (_un arbre_). * **Résultat:** La formation, avec UE, matières, modules (_un arbre_).
* **Exemple de résultat:** * **Exemple de résultat:**
``` ```
@ -432,8 +434,8 @@ formsemestre_id": "SEM12345",
* **`UEs`** * **`UEs`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `dept`, `̀semestre` * **Paramètres:** `dept`, `̀semestre`
* **Routes:** `/api/departements/<str:dept>/formations/programme/<str:semestre>` * **Routes:** `/ScoDoc/api/departements/<string:dept>/formations/programme/<string:semestre>`
* **Exemple d'utilisation:** `̀/api/departements/MMI/formations/programme/INFO-DUT-FI-S1-2014` * **Exemple d'utilisation:** `̀/ScoDoc/api/departements/MMI/formations/programme/INFO-DUT-FI-S1-2014`
* **Résultat:** Liste des UEs, ressources et SAE d'un semestre * **Résultat:** Liste des UEs, ressources et SAE d'un semestre
@ -445,8 +447,8 @@ Les sessions de formation (dénommées "semestres" même si elles durent une ann
* **`formsemestre`** * **`formsemestre`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formsemestre_id` ou `etape_apo`, `format`(json ou xml) * **Paramètres:** `formsemestre_id` ou `etape_apo`, `format`(json ou xml)
* **Routes:** `/api/formations/formsemestre/<int:formsemestre_id>`, `/api/formsemestre/apo/<etape_apo>` * **Routes:** `/ScoDoc/api/formations/formsemestre/<int:formsemestre_id>`, `/ScoDoc/api/formsemestre/apo/<etape_apo>`
* **Exemple d'utilisation:** `/api/formations/formsemestre/12` * **Exemple d'utilisation:** `/ScoDoc/api/formations/formsemestre/12`
* **Résultat:** Informations sur le(s) formsemestre(s). * **Résultat:** Informations sur le(s) formsemestre(s).
* **Exemple de résultat:** * **Exemple de résultat:**
``` ```
@ -497,7 +499,7 @@ On peut récupérer soit un module par son id, soit la listes des modules d'un s
* **`moduleimpl`** * **`moduleimpl`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres**: `formsemestre_id` ou `moduleimpl_id` * **Paramètres**: `formsemestre_id` ou `moduleimpl_id`
* **Routes:** `/api/formations/moduleimpl/<int:moduleimpl_id>` **ou** `/api/formations/moduleimpl/<int:moduleimpl_id>/formsemestre/<int:formsemestre_id>` * **Routes:** `/ScoDoc/api/formations/moduleimpl/<int:moduleimpl_id>` **ou** `/ScoDoc/api/formations/moduleimpl/<int:moduleimpl_id>/formsemestre/<int:formsemestre_id>`
* **Résultat:** liste de moduleimpl * **Résultat:** liste de moduleimpl
* **Exemple de résultat:** * **Exemple de résultat:**
TODO TODO
@ -515,8 +517,8 @@ d'un nombre quelconque de groupes d'étudiants.
* **`partition`** * **`partition`**
* **Méthode: GET** * **Méthode: GET**
* **Paramètres:** `formsemestre_id` * **Paramètres:** `formsemestre_id`
* **Routes:** `/api/partitions/<int:formsemestre_id>` * **Routes:** `/ScoDoc/api/partitions/<int:formsemestre_id>`
* **Exemple d'utilisation:** `/api/partition/48` * **Exemple d'utilisation:** `/ScoDoc/api/partition/48`
* **Résultat:** La liste de toutes les partitions d'un formsemestre. * **Résultat:** La liste de toutes les partitions d'un formsemestre.
* **Exemple de résultat:** * **Exemple de résultat:**
``` ```
@ -571,10 +573,10 @@ d'un nombre quelconque de groupes d'étudiants.
* **`groups`** * **`groups`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formsemestre_id` ou `group_ids` (_peut être répété_), `with_codes=0|1`, `all_groups=0|1`, `etat=None|I` * **Paramètres:** `formsemestre_id` ou `group_ids` (_peut être répété_), `with_codes=0|1`, `all_groups=0|1`, `etat=None|I`
* **Routes:** `api/partitions/formsemestre/<int:formsemestre_id>/groups/group_ids?with_codes=0|1&all_groups=0|1&etat=None|I` * **Routes:** `/ScoDoc/api/partitions/formsemestre/<int:formsemestre_id>/groups/group_ids?with_codes=<bool:with_codes>&all_groups=<bool:all_groups>&etat=None|I`
* **Exemple d'utilisation:** `api/partitions/formsemestre/213/groups/123?with_codes=1` * **Exemple d'utilisation:** `/ScoDoc/api/partitions/formsemestre/213/groups/123?with_codes=True`
* **Résultat:** Liste des étudiants dans un groupe. * **Résultat:** Liste des étudiants dans un groupe.
* **Exemple de résultat au format XML:** (_avec `with_codes=1`_) * **Exemple de résultat au format XML:** (_avec `with_codes=True`_)
``` ```
<group_list origin="" caption="soit 21 étudiants inscrits et 2 démissionaires." id="gt_711068"> <group_list origin="" caption="soit 21 étudiants inscrits et 2 démissionaires." id="gt_711068">
@ -607,7 +609,7 @@ d'un nombre quelconque de groupes d'étudiants.
"etat":"I", "etat":"I",
"emailperso":null, "emailperso":null,
"prenom":"Dalil", "prenom":"Dalil",
"nom_disp":"CLINTO", "nom_disp":"CLINTO",?
"email":"xxx@example.com", "email":"xxx@example.com",
"62029":"A", "62029":"A",
"62032":null, "62032":null,
@ -633,8 +635,8 @@ d'un nombre quelconque de groupes d'étudiants.
* **`set_groups`** * **`set_groups`**
* **Méthode:** POST * **Méthode:** POST
* **Paramètres:** `partition_id`, `groups`, `groups_to_delete`, `groups_to_create` * **Paramètres:** `partition_id`, `groups`, `groups_to_delete`, `groups_to_create`
* **Routes:** `/api/partitions/set_groups?partition_id=<int:partition_id>&groups=<int:groups>&groups_to_delete=<int:groups_to_delete>&groups_to_create=<int:groups_to_create>` * **Routes:** `/ScoDoc/api/partitions/set_groups?partition_id=<int:partition_id>&groups=<int:groups>&groups_to_delete=<int:groups_to_delete>&groups_to_create=<int:groups_to_create>`
* **Exemple d'utilisation:** `/api/partitions/set_groups?partition_id=65&groups=77&groups_to_delete=8&groups_to_create=4` * **Exemple d'utilisation:** `/ScoDoc/api/partitions/set_groups?partition_id=65&groups=77&groups_to_delete=8&groups_to_create=4`
* **Résultat:** Set les groups. * **Résultat:** Set les groups.
TODO: à changer, passer les paramètres dans le corps de la requête TODO: à changer, passer les paramètres dans le corps de la requête
@ -644,8 +646,8 @@ d'un nombre quelconque de groupes d'étudiants.
* **`evaluations`** * **`evaluations`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `moduleimpl_id` * **Paramètres:** `moduleimpl_id`
* **Routes:** `/api/evaluations/<int:moduleimpl_id>` * **Routes:** `/ScoDoc/api/evaluations/<int:moduleimpl_id>`
* **Exemple d'utilisation:** `/api/evaluations/54` * **Exemple d'utilisation:** `/ScoDoc/api/evaluations/54`
* **Résultat:** Liste des évaluations à partir de l'id d'un moduleimpl. * **Résultat:** Liste des évaluations à partir de l'id d'un moduleimpl.
* **Exemple de résultat:** `[eval_1, eval_2, eval_3, ...]` * **Exemple de résultat:** `[eval_1, eval_2, eval_3, ...]`
@ -653,8 +655,8 @@ d'un nombre quelconque de groupes d'étudiants.
* **`evaluation_notes`** * **`evaluation_notes`**
* **Méthode**: GET * **Méthode**: GET
* **Paramètres**: `evaluation_id` * **Paramètres**: `evaluation_id`
* **Routes:** `/api/evaluations/eval_notes/<int:evaluation_id>` * **Routes:** `/ScoDoc/api/evaluations/eval_notes/<int:evaluation_id>`
* **Exemple d'utilisation:** `/api/evaluations/eval_notes/24` * **Exemple d'utilisation:** `/ScoDoc/api/evaluations/eval_notes/24`
* **Résultat:** Liste des notes à partir de l'id d'une évaluation donnée. * **Résultat:** Liste des notes à partir de l'id d'une évaluation donnée.
* **Exemple de résultat:** * **Exemple de résultat:**
``` ```
@ -672,8 +674,8 @@ d'un nombre quelconque de groupes d'étudiants.
* **`evaluation_set_notes`** * **`evaluation_set_notes`**
* **Méthode:** POST * **Méthode:** POST
* **Paramètres:** `eval_id`, `etudid`, `note` * **Paramètres:** `eval_id`, `etudid`, `note`
* **Routes:** `/api/evaluations/eval_set_notes?eval_id=<int:eval_id> etudid=<int etudid>&note=<int:note>` * **Routes:** `/ScoDoc/api/evaluations/eval_set_notes?eval_id=<int:eval_id>&etudid=<int:etudid>&note=<int:note>`
* **Exemple d'utilisation:** `/api/evaluations/eval_set_notes?eval_id=6 etudid=456&note=15` * **Exemple d'utilisation:** `/ScoDoc/api/evaluations/eval_set_notes?eval_id=6&etudid=456&note=15`
* **Résultat:** Set les notes d'une évaluation pour un étudiant donné. * **Résultat:** Set les notes d'une évaluation pour un étudiant donné.
TODO vérifier et passer les valeurs dans le corps. TODO vérifier et passer les valeurs dans le corps.
@ -685,8 +687,8 @@ d'un nombre quelconque de groupes d'étudiants.
* **`absences`** * **`absences`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `etudid`, `abs_just_only, format`, `abs_just_only` (_spécifie si on veut les absences justifiées ou non_). * **Paramètres:** `etudid`, `abs_just_only, format`, `abs_just_only` (_spécifie si on veut les absences justifiées ou non_).
* **Routes:** `/api/absences/<int:etudid>` * **Routes:** `/ScoDoc/api/absences/<int:etudid>`
* **Exemple d'utilisation:** `/api/absences/54` * **Exemple d'utilisation:** `/ScoDoc/api/absences/54`
* **Résultat:** Liste des absences d'un étudiant donné. * **Résultat:** Liste des absences d'un étudiant donné.
* **Exemple de résultat:** * **Exemple de résultat:**
```{jour: "2021-02-10", ampm: "0", description: "M2202", }``` (_**ampm** vaut 1 le matin et 0 l'après-midi_). ```{jour: "2021-02-10", ampm: "0", description: "M2202", }``` (_**ampm** vaut 1 le matin et 0 l'après-midi_).
@ -719,8 +721,8 @@ d'un nombre quelconque de groupes d'étudiants.
* **`abs_groupe_etat`** * **`abs_groupe_etat`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `group_ids`, `date_debut`, `date_fin`, `with_boursier=True`, `format=html` * **Paramètres:** `group_ids`, `date_debut`, `date_fin`, `with_boursier=True`, `format=html`
* **Routes:** `/api/absences/abs_group_etat/?group_ids=group_ids&date_debut=date_debut&date_fin=date_fin` * **Routes:** `/ScoDoc/api/absences/abs_group_etat/?group_ids=group_ids&date_debut=date_debut&date_fin=date_fin`
* **Exemple d'utilisation:** `/api/absences/abs_group_etat/?group_ids=45&date_debut=2019-01-30&date_fin=2019-02-30` * **Exemple d'utilisation:** `/ScoDoc/api/absences/abs_group_etat/?group_ids=45&date_debut=2019-01-30&date_fin=2019-02-30`
* **Résultat:** Liste des absences d'un ou plusieurs groupes entre deux dates. * **Résultat:** Liste des absences d'un ou plusieurs groupes entre deux dates.
* **Exemple de résultat:** si `format="json"` cela donne: * **Exemple de résultat:** si `format="json"` cela donne:
``` ```
@ -743,8 +745,8 @@ d'un nombre quelconque de groupes d'étudiants.
* **`liste des logos globaux`** * **`liste des logos globaux`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `format` (json, xml), json par défaut * **Paramètres:** `format` (json, xml), json par défaut
* **Route :** `/api/logos` * **Route :** `/ScoDoc/api/logos`
* **Exemple d'utilisation :** `/api/logos?format=xml` * **Exemple d'utilisation :** `/ScoDoc/api/logos?format=xml`
* **Résultat :** Liste des logos définis pour le site scodoc. * **Résultat :** Liste des logos définis pour le site scodoc.
* **Exemple de résultat:** `['header', 'footer', 'custom']` * **Exemple de résultat:** `['header', 'footer', 'custom']`
@ -752,16 +754,16 @@ d'un nombre quelconque de groupes d'étudiants.
* **`récupération d'un logo global`** * **`récupération d'un logo global`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres :** Aucun * **Paramètres :** Aucun
* **Route:** `/api/logos/<str:nom>` * **Route:** `/ScoDoc/api/logos/<string:nom>`
* **Exemple d'utilisation :** `/api/logos/header` * **Exemple d'utilisation :** `/ScoDoc/api/logos/header`
* **Résultat :** l'image (format png ou jpg) * **Résultat :** l'image (format png ou jpg)
* **`logo d'un département`** * **`logo d'un département`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `format` (json, xml) * **Paramètres:** `format` (json, xml)
* **Route :** `/api/departements/<str:dept>/logos` * **Route :** `/ScoDoc/api/departements/<string:dept>/logos`
* **Exemple d'utilisation :** `/api/MMI/logos` * **Exemple d'utilisation :** `/ScoDoc/api/MMI/logos`
* **Résultat :** Liste des logos définis pour le département visé. * **Résultat :** Liste des logos définis pour le département visé.
* **Exemple de résultat:** `['footer', 'signature', 'universite']` * **Exemple de résultat:** `['footer', 'signature', 'universite']`
@ -769,8 +771,8 @@ d'un nombre quelconque de groupes d'étudiants.
* **`récupération d'un logo global`** * **`récupération d'un logo global`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres :** Aucun * **Paramètres :** Aucun
* **Route:** `/api/departements/<str:dept>/logos/<str:nom>` * **Route:** `/ScoDoc/api/departements/<string:dept>/logos/<string:nom>`
* **Exemple d'utilisation:** `/api/departements/MMI/logos/header` * **Exemple d'utilisation:** `/ScoDoc/api/departements/MMI/logos/header`
* **Résultat :** l'image (format png ou jpg) * **Résultat :** l'image (format png ou jpg)