API: modif structure

This commit is contained in:
Emmanuel Viennet 2022-07-25 10:13:57 +03:00
parent 337e35e48a
commit e32f7479fa
2 changed files with 1124 additions and 1077 deletions

View File

@ -95,7 +95,11 @@ Ajoute ou retire une permission.
flask user-role username [-d departement] [-a RoleAAjouter] [-r RoleARetirer] flask user-role username [-d departement] [-a RoleAAjouter] [-r RoleARetirer]
Exemple: Exemples:
flask user-role dupont
affiche les rôles de l'utilisateur `dupont`.
flask user-role dupont -d MMI -a Observateur flask user-role dupont -d MMI -a Observateur
@ -146,6 +150,7 @@ Commands:
delete-dept Delete existing departement delete-dept Delete existing departement
delete-role Delete a role delete-role Delete a role
dumphelp dumphelp
list-roles List roles
edit-role Add [-a] and/or remove [-r] a permission... edit-role Add [-a] and/or remove [-r] a permission...
import-scodoc7-dept Import département ScoDoc 7: dept:... import-scodoc7-dept Import département ScoDoc 7: dept:...
import-scodoc7-users Import users defined in ScoDoc7... import-scodoc7-users Import users defined in ScoDoc7...
@ -161,7 +166,7 @@ Commands:
user-db-clear Erase all users and roles from the... user-db-clear Erase all users and roles from the...
user-delete Try to delete this user. user-delete Try to delete this user.
user-password Set (or change) users password user-password Set (or change) users password
user-role Add or remove a role to the given user... user-role Display roles, or add or remove a role to the given user...
Usage: app sco-db-init [OPTIONS] Usage: app sco-db-init [OPTIONS]

View File

@ -163,7 +163,8 @@ par le serveur ScoDoc.
## Départements ## Départements
* **`departements_ids`** #### **`departements_ids`**
* **Méthode:** GET * **Méthode:** GET
* **Routes:** `/departements_ids` * **Routes:** `/departements_ids`
* **Résultat:** Liste des id départements (visibles ou non). * **Résultat:** Liste des id départements (visibles ou non).
@ -171,7 +172,8 @@ par le serveur ScoDoc.
``` ```
[ 1888, 999, 165 ] [ 1888, 999, 165 ]
``` ```
* **`departement`** #### **`departement`**
* **Méthode:** GET * **Méthode:** GET
* **Routes:** `/departement/<dept_id>` * **Routes:** `/departement/<dept_id>`
* **Résultat:** Un département * **Résultat:** Un département
@ -186,7 +188,8 @@ par le serveur ScoDoc.
}, },
``` ```
* **`departements`** #### **`departements`**
* **Méthode:** GET * **Méthode:** GET
* **Routes:** `/departements` * **Routes:** `/departements`
* **Exemple d'utilisation:** `/api/departements` * **Exemple d'utilisation:** `/api/departements`
@ -199,8 +202,8 @@ par le serveur ScoDoc.
] ]
``` ```
#### **Étudiants d'un département**
* **Étudiants d'un département**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `dept`, `formsemestre_id` * **Paramètres:** `dept`, `formsemestre_id`
* **Routes:** `/departement/<string:dept>/etudiants` * **Routes:** `/departement/<string:dept>/etudiants`
@ -227,8 +230,10 @@ par le serveur ScoDoc.
] ]
``` ```
#### Semestres ### Semestres
* **Formsemestres**
#### **Formsemestres**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `dept` * **Paramètres:** `dept`
* **Routes:** `/departement/<string:dept>/formsemestres_ids` * **Routes:** `/departement/<string:dept>/formsemestres_ids`
@ -237,7 +242,8 @@ par le serveur ScoDoc.
* **Exemple de résultat:** * **Exemple de résultat:**
```[ 28, 99, 3 ]``` ```[ 28, 99, 3 ]```
* **Formsemestres en cours** #### **Formsemestres en cours**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `dept` * **Paramètres:** `dept`
* **Routes:** `/departement/<string:dept>/formsemestres_courants` * **Routes:** `/departement/<string:dept>/formsemestres_courants`
@ -286,7 +292,8 @@ Le `titre`est celui donné par l'utilisateur dans le formsemestre, tandis que le
## Étudiants ## Étudiants
* **`etudiants_courant`** #### **`etudiants_courant`**
* **Méthode:** GET * **Méthode:** GET
* **Routes:** `/etudiants/courant` ou `/etudiants/courant/long` * **Routes:** `/etudiants/courant` ou `/etudiants/courant/long`
* **Exemple d'utilisation:** `/api/etudiants/courant` * **Exemple d'utilisation:** `/api/etudiants/courant`
@ -313,7 +320,8 @@ Le `titre`est celui donné par l'utilisateur dans le formsemestre, tandis que le
] ]
``` ```
* **`etudiant`** #### **`etudiant`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `etudid`, `nip`, `ine` * **Paramètres:** `etudid`, `nip`, `ine`
* **Routes:** `/etudiant/etudid/<int:etudid>` ou `/etudiant/nip/<string:nip>` ou `/etudiant/ine/<string:ine>` * **Routes:** `/etudiant/etudid/<int:etudid>` ou `/etudiant/nip/<string:nip>` ou `/etudiant/ine/<string:ine>`
@ -353,7 +361,9 @@ Le `titre`est celui donné par l'utilisateur dans le formsemestre, tandis que le
"description": "" "description": ""
} }
``` ```
* **`etudiants`**
#### **`etudiants`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `etudid`, `nip`, `ine` * **Paramètres:** `etudid`, `nip`, `ine`
* **Routes:** `/etudiants/etudid/<int:etudid>` ou `/etudiants/nip/<string:nip>` ou `/etudiants/ine/<string:ine>` * **Routes:** `/etudiants/etudid/<int:etudid>` ou `/etudiants/nip/<string:nip>` ou `/etudiants/ine/<string:ine>`
@ -364,7 +374,6 @@ Le `titre`est celui donné par l'utilisateur dans le formsemestre, tandis que le
Dans 99% des cas, la liste contient un seul étudiant, mais si l'étudiant a Dans 99% des cas, la liste contient un seul étudiant, mais si l'étudiant a
été inscrit dans plusieurs départements, on a plusieurs objets (1 par été inscrit dans plusieurs départements, on a plusieurs objets (1 par
dept.). dept.).
* **Exemple de résultat:** * **Exemple de résultat:**
``` ```
[ [
@ -399,8 +408,9 @@ Le `titre`est celui donné par l'utilisateur dans le formsemestre, tandis que le
] ]
``` ```
#### Cursus ### Cursus
* **`etudiant_formsemestres`**
#### **`etudiant_formsemestres`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `etudid`, `nip`, `ine` * **Paramètres:** `etudid`, `nip`, `ine`
* **Routes:** : `/etudiant/etudid/<int:etudid>/formsemestres` ou `/etudiant/nip/<string:nip>/formsemestres` ou `/etudiant/ine/<string:ine>/formsemestres` * **Routes:** : `/etudiant/etudid/<int:etudid>/formsemestres` ou `/etudiant/nip/<string:nip>/formsemestres` ou `/etudiant/ine/<string:ine>/formsemestres`
@ -444,8 +454,10 @@ Le `titre`est celui donné par l'utilisateur dans le formsemestre, tandis que le
] ]
``` ```
#### Bulletin ### Bulletin
* **`etudiant_bulletin_semestre`**
#### **`etudiant_bulletin_semestre`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formsemestre_id`, `etudid`, `nip`, `ine` * **Paramètres:** `formsemestre_id`, `etudid`, `nip`, `ine`
* **Routes:** * **Routes:**
@ -633,7 +645,8 @@ Le `titre`est celui donné par l'utilisateur dans le formsemestre, tandis que le
``` ```
* **`etudiant_groups`** #### **`etudiant_groups`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formsemestre_id`, `etudid`, `nip`, `ine` * **Paramètres:** `formsemestre_id`, `etudid`, `nip`, `ine`
* **Routes:** `/etudiant/etudid/<int:etudid>/semestre/<int:formsemestre_id>/groups` ou `/etudiant/nip/<string:nip>/semestre/<int:formsemestre_id>/groups` ou `/etudiant/ine/<string:ine>/semestre/<int:formsemestre_id>/groups` * **Routes:** `/etudiant/etudid/<int:etudid>/semestre/<int:formsemestre_id>/groups` ou `/etudiant/nip/<string:nip>/semestre/<int:formsemestre_id>/groups` ou `/etudiant/ine/<string:ine>/semestre/<int:formsemestre_id>/groups`
@ -672,7 +685,8 @@ Le `titre`est celui donné par l'utilisateur dans le formsemestre, tandis que le
## Programmes de formations ## Programmes de formations
* **`formation`** #### **`formation`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formation_id` * **Paramètres:** `formation_id`
* **Routes:** `/formation/<int:formation_id>` * **Routes:** `/formation/<int:formation_id>`
@ -695,22 +709,26 @@ Le `titre`est celui donné par l'utilisateur dans le formsemestre, tandis que le
} }
``` ```
* **`formations_ids`** #### **`formations_ids`**
* **Méthode:** GET * **Méthode:** GET
* **Routes:** `/formations_ids` * **Routes:** `/formations_ids`
* **Exemple d'utilisation:** `/ScoDoc/api/formations_ids` * **Exemple d'utilisation:** `/ScoDoc/api/formations_ids`
* **Résultat:** Retourne la liste des ids de toutes les formations (tous départements) * **Résultat:** Retourne la liste des ids de toutes les formations (tous départements)
* **Exemple de résultat:** `[17, 99, 32]` * **Exemple de résultat:** `[17, 99, 32]`
* **`formations`** #### **`formations`**
* **Méthode:** GET * **Méthode:** GET
* **Routes:** `/formations` * **Routes:** `/formations`
* **Exemple d'utilisation:** `/ScoDoc/api/formations` * **Exemple d'utilisation:** `/ScoDoc/api/formations`
* **Résultat:** Retourne la liste de toutes les formations (tous * **Résultat:** Retourne la liste de toutes les formations (tous
départements) départements)
#### Export programme ### Export programme
* **`formation_export`**
#### **`formation_export`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formation_id`, `export_ids` (False par défaut. Ajouter `/with_ids` pour le passer à True) * **Paramètres:** `formation_id`, `export_ids` (False par défaut. Ajouter `/with_ids` pour le passer à True)
* **Routes:** `/formation/formation_export/<int:formation_id>` * **Routes:** `/formation/formation_export/<int:formation_id>`
@ -807,20 +825,23 @@ Le `titre`est celui donné par l'utilisateur dans le formsemestre, tandis que le
#### Référentiel de compétences #### Référentiel de compétences
* **`referentiel_competences`** #### **`referentiel_competences`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formation_id` * **Paramètres:** `formation_id`
* **Routes:** `/formation/<int:formation_id>/referentiel_competences` * **Routes:** `/formation/<int:formation_id>/referentiel_competences`
* **Exemple d'utilisation:** `api/formation/1/referentiel_competences` * **Exemple d'utilisation:** `api/formation/1/referentiel_competences`
* **Résultat:** Le référentiel de compétences d'une formation donnée (json). (_pas toujours présent_) * **Résultat:** Le référentiel de compétences d'une formation donnée (json). (_pas toujours présent_)
* XXX obtenir la liste des référentiels
XXX obtenir la liste des référentiels ?
## Formsemestres ## Formsemestres
Les sessions de formation (qu'elles durent une année ou un mois) sont représentées par les `formsemestre`. Les sessions de formation (qu'elles durent une année ou un mois) sont représentées par les `formsemestre`.
* **`formsemestre`** #### **`formsemestre`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formsemestre_id` * **Paramètres:** `formsemestre_id`
* **Routes:** `/formsemestre/<int:formsemestre_id>` * **Routes:** `/formsemestre/<int:formsemestre_id>`
@ -862,7 +883,9 @@ Les sessions de formation (qu'elles durent une année ou un mois) sont représen
"session_id": "MMI-BUT-FI-S1-2021", "session_id": "MMI-BUT-FI-S1-2021",
} }
``` ```
* **`formsemestre_apo`**
#### **`formsemestre_apo`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `etape_apo` * **Paramètres:** `etape_apo`
* **Routes:** `/formsemestre/apo/<string:etape_apo>` * **Routes:** `/formsemestre/apo/<string:etape_apo>`
@ -874,7 +897,7 @@ Les sessions de formation (qu'elles durent une année ou un mois) sont représen
``` ```
#### Note sur les identifiants de formsemestre ### Note sur les identifiants de formsemestre
Le `session_id` peut être utilisé pour identifier de façon prévisible et Le `session_id` peut être utilisé pour identifier de façon prévisible et
(presque) unique un formsemestre) dans un établissement, ce qui est utile (presque) unique un formsemestre) dans un établissement, ce qui est utile
notamment pour interfacer ScoDoc à d'autres logiciels (par exemple gestion notamment pour interfacer ScoDoc à d'autres logiciels (par exemple gestion
@ -894,8 +917,8 @@ des informations suivantes:
**Exemple:** `INFO-DUT-FI-S1-2014` équivaut à un semestre S1 d'un DUT informatique de 2014 en formation initiale (FI) **Exemple:** `INFO-DUT-FI-S1-2014` équivaut à un semestre S1 d'un DUT informatique de 2014 en formation initiale (FI)
#### Étudiants inscrits ### Étudiants inscrits et bulletins
* **etudiants** #### **etudiants**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formsemestre_id`, `etat` (par défaut égal à "I" pour les étudiants inscrits) * **Paramètres:** `formsemestre_id`, `etat` (par défaut égal à "I" pour les étudiants inscrits)
* **Routes:** `/formsemestre/<int:formsemestre_id>/etudiants` XXX voir si * **Routes:** `/formsemestre/<int:formsemestre_id>/etudiants` XXX voir si
@ -903,8 +926,8 @@ des informations suivantes:
* **Résultat:** les étudiants inscrits à ce semestres XXX préciser état * **Résultat:** les étudiants inscrits à ce semestres XXX préciser état
(DEM, DEF)) (DEM, DEF))
#### Bulletins #### * **`bulletins`**
* **`bulletins`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formsemestre_id` * **Paramètres:** `formsemestre_id`
* **Routes:** `/formsemestre/<int:formsemestre_id>/bulletins` * **Routes:** `/formsemestre/<int:formsemestre_id>/bulletins`
@ -1083,7 +1106,9 @@ des informations suivantes:
} }
] ]
``` ```
* **etat_evals**
#### **etat_evals**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formsemestre_id` * **Paramètres:** `formsemestre_id`
* **Routes:** `/formsemestre/<int:formsemestre_id>/etat_evals` * **Routes:** `/formsemestre/<int:formsemestre_id>/etat_evals`
@ -1139,7 +1164,8 @@ des informations suivantes:
* **`jury`** (**non implémentée**) #### **`jury`** (**non implémentée**)
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formsemestre_id` * **Paramètres:** `formsemestre_id`
* **Routes:** `/formsemestre/<int:formsemestre_id>/jury` * **Routes:** `/formsemestre/<int:formsemestre_id>/jury`
@ -1150,8 +1176,10 @@ des informations suivantes:
XXX A COMPLETER XXX A COMPLETER
``` ```
#### Programme d'un formsemestre ### Programme d'un formsemestre
* **UE et modules**
#### **UE et modules**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `dept`, `formsemestre_id` * **Paramètres:** `dept`, `formsemestre_id`
* **Routes:** `/formsemestre/<int:formsemestre_id>/programme` * **Routes:** `/formsemestre/<int:formsemestre_id>/programme`
@ -1224,7 +1252,8 @@ des informations suivantes:
Le moduleimpl est la mise en place d'un module dans un formsemestre (avec son Le moduleimpl est la mise en place d'un module dans un formsemestre (avec son
responsable et ses enseignants). responsable et ses enseignants).
* **`moduleimpl`** #### **`moduleimpl`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `moduleimpl_id` * **Paramètres:** `moduleimpl_id`
* **Routes:** `/formation/moduleimpl/<int:moduleimpl_id>` * **Routes:** `/formation/moduleimpl/<int:moduleimpl_id>`
@ -1268,7 +1297,8 @@ L'ensemble des étudiants d'un semestre peut être réparti selon une ou
plusieurs partitions (types de groupes). Chaque partition est constituée plusieurs partitions (types de groupes). Chaque partition est constituée
d'un nombre quelconque de groupes d'étudiants. 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:** `/partitions/<int:formsemestre_id>` * **Routes:** `/partitions/<int:formsemestre_id>`
@ -1298,7 +1328,8 @@ d'un nombre quelconque de groupes d'étudiants.
] ]
``` ```
* **`groups`** #### **`groups`**
* **Méthode: GET** * **Méthode: GET**
* **Paramètres:** `group_id`, `etat` * **Paramètres:** `group_id`, `etat`
* **Routes:** `/partitions/groups/<int:group_id>` ou `/partitions/groups/<int:group_id>/etat/<string:etat>` * **Routes:** `/partitions/groups/<int:group_id>` ou `/partitions/groups/<int:group_id>/etat/<string:etat>`
@ -1349,7 +1380,9 @@ d'un nombre quelconque de groupes d'étudiants.
### Évaluations ### Évaluations
* **`evaluations`**
#### **`evaluations`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `moduleimpl_id` * **Paramètres:** `moduleimpl_id`
* **Routes:** `/evaluations/<int:moduleimpl_id>` * **Routes:** `/evaluations/<int:moduleimpl_id>`
@ -1381,7 +1414,8 @@ d'un nombre quelconque de groupes d'étudiants.
``` ```
* **`evaluations/notes`** #### **`evaluations/notes`**
* **Méthode**: GET * **Méthode**: GET
* **Paramètres**: `evaluation_id` * **Paramètres**: `evaluation_id`
* **Routes:** `/evaluations/eval_notes/<int:evaluation_id>` * **Routes:** `/evaluations/eval_notes/<int:evaluation_id>`
@ -1395,7 +1429,8 @@ d'un nombre quelconque de groupes d'étudiants.
**Remarques**, les dates sont au format iso `yyyy-mm-dd`. Les dates de fin ne sont pas incluses. Et `demi_journee`= 2 si journée complète, =1 si uniquement le matin, =0 si uniquement l'après-midi. **Remarques**, les dates sont au format iso `yyyy-mm-dd`. Les dates de fin ne sont pas incluses. Et `demi_journee`= 2 si journée complète, =1 si uniquement le matin, =0 si uniquement l'après-midi.
* **`absences`** #### **`absences`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `etudid`, `nip`, `ine` * **Paramètres:** `etudid`, `nip`, `ine`
* **Routes:** `/absences/etudid/<int:etudid>` * **Routes:** `/absences/etudid/<int:etudid>`
@ -1419,7 +1454,8 @@ d'un nombre quelconque de groupes d'étudiants.
] ]
``` ```
* **`absences/just`** #### **`absences/just`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `etudid` * **Paramètres:** `etudid`
* **Routes:** `/absences/etudid/<int:etudid>/just` * **Routes:** `/absences/etudid/<int:etudid>/just`
@ -1444,7 +1480,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`, * **Paramètres:** `group_ids`, `date_debut`, `date_fin`,
* **Routes:** `/absences/abs_group_etat/<int:group_id>` ou `/absences/abs_group_etat/group_id/<in:group_id>/date_debut/<date:date_debut>/date_fin/<date:date_fin>` * **Routes:** `/absences/abs_group_etat/<int:group_id>` ou `/absences/abs_group_etat/group_id/<in:group_id>/date_debut/<date:date_debut>/date_fin/<date:date_fin>`
@ -1460,7 +1497,8 @@ d'un nombre quelconque de groupes d'étudiants.
### Jury ### Jury
* **`jury_preparation`** #### **`jury_preparation`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formsemestre_id` * **Paramètres:** `formsemestre_id`
* **Routes:** `/jury/formsemestre/<int:formsemestre_id>/preparation_jury` * **Routes:** `/jury/formsemestre/<int:formsemestre_id>/preparation_jury`
@ -1471,7 +1509,8 @@ d'un nombre quelconque de groupes d'étudiants.
XXX A COMPLETER XXX A COMPLETER
``` ```
* **`jury_decisions`** #### **`jury_decisions`**
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formsemestre_id` * **Paramètres:** `formsemestre_id`
* **Routes:** `/jury/formsemestre/<int:formsemestre_id>/decisions_jury` * **Routes:** `/jury/formsemestre/<int:formsemestre_id>/decisions_jury`
@ -1484,7 +1523,8 @@ d'un nombre quelconque de groupes d'étudiants.
### Logos ### Logos
* **`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 :** `/ScoDoc/api/logos` * **Route :** `/ScoDoc/api/logos`
@ -1494,7 +1534,7 @@ d'un nombre quelconque de groupes d'étudiants.
XXX vérifier si on supporte XML et pour qui ? XXX vérifier si on supporte XML et pour qui ?
* **`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:** `/logos/<string:nom>` * **Route:** `/logos/<string:nom>`
@ -1502,7 +1542,8 @@ d'un nombre quelconque de groupes d'étudiants.
* **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 :** `/departements/<string:dept>/logos` * **Route :** `/departements/<string:dept>/logos`
@ -1511,7 +1552,8 @@ d'un nombre quelconque de groupes d'étudiants.
* **Exemple de résultat:** `['footer', 'signature', 'universite']` * **Exemple de résultat:** `['footer', 'signature', 'universite']`
* **`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:** `/departements/<string:dept>/logos/<string:nom>` * **Route:** `/departements/<string:dept>/logos/<string:nom>`