Merge pull request 'enrichissement API scodoc9' (#4) from leonard.montalbano/DocScoDoc:master into master

Reviewed-on: https://scodoc.org/git/viennet/DocScoDoc/pulls/4

(penser à virer le gitignore)
This commit is contained in:
Emmanuel Viennet 2021-11-12 10:15:50 +01:00
commit 6baa2dc981
2 changed files with 276 additions and 301 deletions

194
.gitignore vendored
View File

@ -1,193 +1 @@
# ---> Emacs .idea
# -*- mode: gitignore; -*-
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*
# Org-mode
.org-id-locations
*_archive
# flymake-mode
*_flymake.*
# eshell files
/eshell/history
/eshell/lastdir
# elpa packages
/elpa/
# reftex files
*.rel
# AUCTeX auto folder
/auto/
# cask packages
.cask/
dist/
# Flycheck
flycheck_*.el
# ---> Python
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# Mac OSX OS generated files
.DS_Store?
Thumbs.db
*.DS_Store
# Other source repository archive directories (protects when importing)
.hg
.svn
CVS
# MkDocs ScoDoc
site/

View File

@ -11,8 +11,8 @@ L'API fournit des données JSON, sauf exception (bulletins).
Les objets ScoDoc manipulables sont identifiés par des id: Les objets ScoDoc manipulables sont identifiés par des id:
* etudid: étudiant * etud_id: étudiant
* formation_id: un programme de formation (page "programmes"); * form_id: un programme de formation (page "programmes");
* ue_id: une UE dans un programme; * ue_id: une UE dans un programme;
* matiere_id: une matière dans un programme; * matiere_id: une matière dans un programme;
* module_id: un module dans un programme. * module_id: un module dans un programme.
@ -32,14 +32,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/<etud_id>`)
- `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/<etud_id>`, en json)
- `Notes/evaluation_listenotes` (non existante en ScoDoc9, trop complexe) - `Notes/evaluation_listenotes` (non existante en ScoDoc9, trop complexe)
- `Notes/formsemestre_list` (deviendra `api/formsemestre`) - `Notes/form_sem` (deviendra `api/formsemestre`)
- `Notes/formsemestre_bulletinetud` (deviendra `api/formsemestre_bulletinetud`) - `Notes/formsemestre_bulletinetud` (deviendra `api/formsemestre_bulletinetud`)
- `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/<etud_id>`)
- `groups_view` - `groups_view`
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
@ -61,44 +61,169 @@ Elle sera accessible à l'adresse: https://scodoc.monsite.tld/ScoDoc/api/fonctio
| Fonction | Méthode | Paramètres | Exemple | Exemple resultat | Commentaires | | Fonction | Méthode | Paramètres | Exemple | Exemple resultat | Commentaires |
|:--------:|:-------:|:----------:|:-------:|:----------------|:------------:| |:--------:|:-------:|:----------:|:-------:|:----------------|:------------:|
|etud_dept |GET|code_nip|/api/etud_dept/123|[ {exist: true, dept: "GEII", id: 987, dept_id: 3} ]|liste des étudiants avec le code NIP donné triée par ordre d'inscription décroissant| |etud_dept |GET|code_nip|/api/etud_dept/123|[ {exist: true, dept: "GEII", id: 987, dept_id: 3} ]|liste des étudiants avec le code NIP donné triée par ordre d'inscription décroissant|
|etud_info |GET|etud_id|/api/etud_info/987|{"nom": "Mutis","sexe": "M.","email": "alvaro.mutis@example.com","prenom": "ALVARO","nomprenom": "M. Alvaro MUTIS","insemestre": [{"etat": "I","formsemestre_id": "SEM12781","date_fin": "2010-07-30","date_debut": "2010-01-25"},{"etat": "I","formsemestre_id": "SEM8396","date_fin": "2009-01-16","date_debut": "2008-09-01"}],"etudid": "EID8768","domicile": "2 Rue Madame","villedomicile": "Paris","telephonemobile": ""}| | |etud_info |GET|etud_id|/api/etud_info/987|{"nom": "Mutis","sexe": "M.","email": "alvaro.mutis@example.com","prenom": "ALVARO","nomprenom": "M. Alvaro MUTIS","insemestre": [{"etat": "I",form_sem_id": "SEM12781","date_fin": "2010-07-30","date_debut": "2010-01-25"},{"etat": "I",form_sem_id": "SEM8396","date_fin": "2009-01-16","date_debut": "2008-09-01"}],"etud_id": "EID8768","domicile": "2 Rue Madame","villedomicile": "Paris","telephonemobile": ""}| |
|etud_bul|GET|etud_id ou sem_id|/api/etud_bul **OU** /987/12| |cf formsemestre_bulletinetud de [l'ancienne API](https://scodoc.org/ScoDocAPI/)| |etud_bul|GET|etud_id, sem_id|/api/etud_bul/987/12| |cf formsemestre_bulletinetud de [l'ancienne API](https://scodoc.org/ScoDocAPI/)|
|sem_info|GET|sem_id|/api/sem_info/12|[ {"titre": "DUT Génie Electrique et Informatique Industrielle","date_debut": "01/09/2021","date_fin": "02/02/2022","modalite": "FI","sem_id_txt": "S3","titre_num": "DUT Génie Electrique et Informatique Industrielle semestre 3","anneescolaire": "2021 - 2022","periode": 1,"titreannee": "DUT Génie Electrique et Informatique Industrielle semestre 3 FI 2021-2022"} ]| | |sem_info|GET|sem_id|/api/sem_info/12|[ {"titre": "DUT Génie Electrique et Informatique Industrielle","date_debut": "01/09/2021","date_fin": "02/02/2022","modalite": "FI","sem_id_txt": "S3","titre_num": "DUT Génie Electrique et Informatique Industrielle semestre 3","anneescolaire": "2021 - 2022","periode": 1,"titreannee": "DUT Génie Electrique et Informatique Industrielle semestre 3 FI 2021-2022"} ]| |
|photo|GET|etud_id|/api/photo/123 **OU** /api/photo **OU** /123/smal| | | |photo|GET|etud_id|/api/photo/123 **OU** /api/photo/123/smal| | |
|formation_list|GET|dept (*facultatif*)|/api/formation_list **OU** /api/formation_list?dept=GEI| { "id": 1,"dept_id": 1,"acronyme": "BUT GEII", "titre": "BUT G\u00e9nie Electrique et Informatique Industrielle", "titre_officiel": "BUT G\u00e9nie Electrique et Informatique Industrielle","version": 1,"formation_code": "FCOD1","type_parcours": 600,"code_specialite": "","formation_id": 1 }| | |formations|GET|dept (*facultatif*)|/api/formations **OU** /api/formations?dept=GEI| { "id": 1,"dept_id": 1,"acronyme": "BUT GEII", "titre": "BUT G\u00e9nie Electrique et Informatique Industrielle", "titre_officiel": "BUT G\u00e9nie Electrique et Informatique Industrielle","version": 1,"formation_code": "FCOD1","type_parcours": 600,"code_specialite": "","form_id": 1 }| |
|formsemestre_list|GET|formation_id|/api/formation_list/formation_id| | | |form_sem|GET|form_id|/api/formations/form_id| | |
|formsemestre_partition_list|GET|semestre_id|/api/formsemestre_partition_list/semestre_id| | | |form_sem_partition|GET|semestre_id|/api/form_sem_partition/semestre_id| | |
|module_list|GET|semestre_id|/api/module_list/semestre_id| | | |module_list|GET|semestre_id|/api/module_list/semestre_id| | |
|eval_list|GET|module_id|/api/eval_list/module_id| | | |eval_list|GET|module_id|/api/eval_list/module_id| | |
|evaluation_listenotes|GET|evaluation_id|/api/evalutation_listenotes/evaluation_id| | | |evaluation_listenotes|GET|eval_id|/api/evalutation_listenotes/eval_id| | |
|setGroups|POST|partition_id, groupsLists, groupsToDelete, groupsToCreate|/api/setGroups/???| | | |setGroups|POST|partition_id, groupsLists, groupsToDelete, groupsToCreate|/api/setGroups/???| | |
|setNote|POST|evaluation_id, etudid, note|/api/setNote/???| | |setNote|POST|eval_id, etud_id, note|/api/setNote/???| |
# XXX à revoir XXX Fonctions d'accès aux données # XXX à revoir XXX Fonctions d'accès aux données
## Etudiants
* **`etud_dept`**
* Méthode: GET
* Paramètres: `code_nip`
* Format URL: `/api/etud_dept/<int:code_nip>`
* Exemple d'utilisation: `/api/etud_dept/123`
* Résultat: Liste des étudiants avec le code NIP donné tirée par ordre d'inscription décroissant.
* Exemple de résultat:
```
[
{
exist: true,
dept: "GEII",
id: 987,
dept_id: 3
}
]
```
* Codes HTTP:
* **`etud_info`**
* Méthode: GET
* Paramètres: `etud_id`
* Format URL: `/api/etud_dept/<int:etud_id>`
* Exemple d'utilisation: `/api/etud_info/987`
* Résultat: Un dictionnaire avec les informations de l'étudiant correspondant à l'id passé en paramètres.
* Exemple de résultat:
```
{
"nom": "Mutis",
"sexe": "M.",
"email": "alvaro.mutis@example.com",
"prenom": "ALVARO",
"nomprenom": "M. Alvaro MUTIS",
"insemestre": [
{
"etat": "I",
form_sem_id": "SEM12781",
"date_fin": "2010-07-30",
"date_debut": "2010-01-25"
},
{
"etat": "I",
form_sem_id": "SEM8396",
"date_fin": "2009-01-16",
"date_debut": "2008-09-01"
}
],
"etud_id": "EID8768",
"domicile": "2 Rue Madame",
"villedomicile": "Paris",
"telephonemobile": ""
}
```
* Codes HTTP:
* **`etud_bul`**
* Méthode: GET
* Paramètres: `etud_id`, `sem_id`
* Format URL: `/api/etud_bul/<int:etud_id>/<int:sem_id>`
* Exemple d'utilisation: `/api/etud_bul/987/12`
* Résultat:
* Exemple de résultat:
* Codes HTTP:
* **`etud_photo`**
* Méthode: GET
* Paramètres: `etud_id`, `small`
* Format URL: `/api/etud_photo/<int:etud_id>` **OU** `/api/etud_photo/<int:etud_id>/small` (_ajout du paramètre **small** pour la version small_)
* Exemple d'utilisation: `/api/etud_photo/123` **OU** `/api/etud_photo/123/small` (_pour la version small_)
* Résultat:
* Exemple de résultat:
* Codes HTTP:
## Semestres
* **`sem_info`**
* Méthode: GET
* Paramètres: `sem_id`
* Format URL: `/api/sem_id/<int:sem_id>`
* Exemple d'utilisation: `/api/sem_info/12`
* Résultat: Une liste avec les informations du semestre correspondant à l'id passé en paramètres.
* Exemple de résultat:
```
[
{
"titre": "DUT Génie Electrique et Informatique Industrielle",
"date_debut": "01/09/2021",
"date_fin": "02/02/2022",
"modalite": "FI",
"sem_id_txt": "S3",
"titre_num": "DUT Génie Electrique et Informatique Industrielle semestre 3",
"anneescolaire": "2021 - 2022",
"periode": 1,
"titreannee": "DUT Génie Electrique et Informatique Industrielle semestre 3 FI 2021-2022"
}
]
```
* Codes HTTP:
## Départements ## Départements
* **`list_depts`** * **`departements`**
* Méthode:
* Paramètres: `viewable` (optionnel, si faux liste aussi les départements non accessible à l'utilisateur courant), `format` (json, xml) * Paramètres: `viewable` (optionnel, si faux liste aussi les départements non accessible à l'utilisateur courant), `format` (json, xml)
* Résultat: liste des id de départements. * Format URL:
* Exemple d'utilisation:
* Résultat: Liste des id de départements.
* Exemple de résultat:
* Codes HTTP:
## Programmes de formations ## Programmes de formations
* **`formation_list`** * **`formations`**
* Paramètres: `formation_id` (optionnel, si absent liste toutes les formations) * Méthode: GET
* Résultat: liste de formations. * Paramètres: `form_id` (_optionnel, si absent liste toutes les formations_)
* Format URL: `/api/formations` **ou** `/api/formations/<int:form_id>`
* Exemple d'utilisation: `/api/formations` **ou** `̀/api/formations/1`
* Résultat: Liste des formations.
* Exemple de résultat:
* Codes HTTP:
* **`formation_export`**
* Paramètres: `formation_id`, `export_ids` (défaut "faux") * **`form_export`**
* Méthode:
* Paramètres: `form_id`, `export_ids` (défaut "faux")
* Format URL:
* Exemple d'utilisation:
* 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:
* Codes HTTP:
## Semestres de formation ## Semestres de formation
Les sessions de formation (dénommées "semestres" même si elles durent une année ou un mois) sont représentées par les `formsemestre`. Les sessions de formation (dénommées "semestres" même si elles durent une année ou un mois) sont représentées par les `formsemestre`.
* **`formsemestre_list`** * **`form_sem`**
* Paramètres (tous optionnels): `formsemestre_id`, `formation_id`, `etape_apo`, `etape_apo2` * Méthode: GET
* Résultat: liste des semestres correspondant. * Paramètres (_tous optionnels_): `form_sem_id`, `form_id`, `etape_apo`, `etape_apo2`
* Exemple: `formsemestre_list?format=xml&etape_apo=V1RT` * Format URL: `/api/form_sem?form_id=1&etape_apo=V1RT`
* Exemple d'utilisation: `/api/form_sem?format=xml&etape_apo=V1RT`
* Résultat: Liste des semestres correspondant.
* Exemple de résultat:
* Codes HTTP:
Note sur les identifiants de sessions: le `session_id` peut être utilisé pour identifier de façon prévisible et (presque) unique une session dans un établissement, ce qui est utile notamment pour interfacer ScoDoc à d'autres logiciels (eg gestion d'emplois du temps ou de services d'enseignement). Cet identifiant est constitué des informations suivantes: Note sur les identifiants de sessions: le `session_id` peut être utilisé pour identifier de façon prévisible et (presque) unique une session dans un établissement, ce qui est utile notamment pour interfacer ScoDoc à d'autres logiciels (eg gestion d'emplois du temps ou de services d'enseignement). Cet identifiant est constitué des informations suivantes:
@ -116,26 +241,29 @@ Exemple: `INFO-DUT-FI-S1-2014` : semestre S1 d'un DUT informatique de 2014 en fo
## Groupes et partitions ## Groupes et partitions
L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieurs partitions (types de groupes). Chaque partition est constituée d'un nombre quelconque de groupes d'étudiants. L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieurs partitions (types de groupes). Chaque partition est constituée d'un nombre quelconque de groupes d'étudiants.
* **`formsemestre_partition_list`** * **`form_sem_partition`**
* Paramètres: `formsemestre_id` * Méthode: GET
* Paramètres: `form_sem_id`
* Format URL: `/api/form_sem_partition/form_sem_id`
* Exemple d'utilisation:
* Résultat: * Résultat:
* Exemple: ici au format JSON * Exemple de résultat: ici au format JSON
``` ```
[ [
{ {
"formsemestre_id": "SEM12781", form_sem_id": "SEM12781",
"partition_id": "P23840", "partition_id": "P23840",
"partition_name": "TD" "partition_name": "TD"
"group": [ "group": [
{ {
"formsemestre_id": "SEM12781", form_sem_id": "SEM12781",
"partition_id": "P23840", "partition_id": "P23840",
"group_name": "A", "group_name": "A",
"group_id": "G23841", "group_id": "G23841",
"partition_name": "TD" "partition_name": "TD"
}, },
{ {
"formsemestre_id": "SEM12781", form_sem_id": "SEM12781",
"partition_id": "P23840", "partition_id": "P23840",
"group_name": "B", "group_name": "B",
"group_id": "G23843", "group_id": "G23843",
@ -144,19 +272,19 @@ L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieu
], ],
}, },
{ {
"formsemestre_id": "SEM12781", form_sem_id": "SEM12781",
"partition_id": "P23941", "partition_id": "P23941",
"partition_name": "TP" "partition_name": "TP"
"group": [ "group": [
{ {
"formsemestre_id": "SEM12781", form_sem_id": "SEM12781",
"partition_id": "P23941", "partition_id": "P23941",
"group_name": "A1", "group_name": "A1",
"group_id": "G23942", "group_id": "G23942",
"partition_name": "TP" "partition_name": "TP"
}, },
{ {
"formsemestre_id": "SEM12781", form_sem_id": "SEM12781",
"partition_id": "P23941", "partition_id": "P23941",
"group_name": "A2", "group_name": "A2",
"group_id": "G23943", "group_id": "G23943",
@ -165,12 +293,12 @@ L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieu
], ],
}, },
{ {
"formsemestre_id": "SEM12781", form_sem_id": "SEM12781",
"partition_id": "P22833", "partition_id": "P22833",
"partition_name": null "partition_name": null
"group": [ "group": [
{ {
"formsemestre_id": "SEM12781", form_sem_id": "SEM12781",
"partition_id": "P22833", "partition_id": "P22833",
"group_name": null, "group_name": null,
"group_id": "G22834", "group_id": "G22834",
@ -178,10 +306,10 @@ L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieu
} }
], ],
} }
] ]
``` ```
* **`groups_view`** * **`groups_view`**
* 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: form_sem_id `ou `group_ids` (peut être répété), `with_codes=0|1`, `all_groups=0|1`, `etat=None|I`
* Résultat: liste des étudiants dans un groupe. * Résultat: liste des étudiants dans un groupe.
* Exemple: ici au format XML avec `with_codes=1`: * Exemple: ici au format XML avec `with_codes=1`:
``` ```
@ -192,7 +320,7 @@ L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieu
<prenom value="Marc"/> <prenom value="Marc"/>
<etat value="I"/> <etat value="I"/>
<email value="toto@example.com"/> <email value="toto@example.com"/>
<etudid value="EID9876"/> <etud_id value="EID9876"/>
<code_nip value="987654"/> <code_nip value="987654"/>
<code_ine value=""/> <code_ine value=""/>
</etud> </etud>
@ -202,7 +330,7 @@ L'ensemble des étudiants d'un semestre peut être réparti selon une ou plusieu
<prenom value="NATHALIE"/> <prenom value="NATHALIE"/>
<etat value="I"/> <etat value="I"/>
<email value="xxx@example.com"/> <email value="xxx@example.com"/>
<etudid value="EID12345"/> <etud_id value="EID12345"/>
<code_nip value="12345678"/> <code_nip value="12345678"/>
<code_ine value=""/> <code_ine value=""/>
</etud> </etud>
@ -237,12 +365,21 @@ Et un autre exemple en format JSON:
] ]
``` ```
* **`set_groups`**
* Méthode: POST
* Paramètres: `partition_id`, `groups`, `groups_to_delete`, `groups_to_create`
* Format URL: `/api/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:
* Résultat: Set les groups.
* Exemple de résultat:
* Codes HTTP:
## Etudiants ## Etudiants
* **`etud_info`** * **`etud_info`**
* Paramètres: `etudid` ou `code_nip` ou `code_ine` * Paramètres: `etud_id` ou `code_nip` ou `code_ine`
* Résultat: informations sur cette étudiant et les semestres dans lesquels il est (ou a été) inscrit. * Résultat: informations sur cette étudiant et les semestres dans lesquels il est (ou a été) inscrit.
* Exemple: `etud_info?format=json&etudid=12345` * Exemple: `etud_info?format=json&etud_id=12345`
``` ```
{ {
"nom": "Mutis", "nom": "Mutis",
@ -253,19 +390,19 @@ Et un autre exemple en format JSON:
"insemestre": [ "insemestre": [
{ {
"etat": "I", "etat": "I",
"formsemestre_id": "SEM12781", form_sem_id": "SEM12781",
"date_fin": "2010-07-30", "date_fin": "2010-07-30",
"date_debut": "2010-01-25" "date_debut": "2010-01-25"
}, },
{ {
"etat": "I", "etat": "I",
"formsemestre_id": "SEM8396", form_sem_id": "SEM8396",
"date_fin": "2009-01-16", "date_fin": "2009-01-16",
"date_debut": "2008-09-01" "date_debut": "2008-09-01"
} }
], ],
"code_ine": "", "code_ine": "",
"etudid": "EID8768", "etud_id": "EID8768",
"code_nip": "10991002", "code_nip": "10991002",
"photo_url": "/ScoDoc/static/photos/F13/RT_EID8768.h90.jpg", "photo_url": "/ScoDoc/static/photos/F13/RT_EID8768.h90.jpg",
@ -289,8 +426,38 @@ Et un autre exemple en format JSON:
## Bulletins de notes ## Bulletins de notes
* **`evaluations`**
* Méthode: GET
* Paramètres: `module_id`
* Format URL: `/api/evaluations/<int:module_id>`
* Exemple d'utilisation: `/api/evaluations/54`
* Résultat: Liste des evaluations à partir de l'id d'un module.
* Exemple de résultat:
* Codes HTTP:
* **`eval_notes`**
* Méthode: GET
* Paramètres: `eval_id`
* Format URL: `/api/eval_notes/<int:eval_id>`
* Exemple d'utilisation: `/api/eval_notes/24`
* Résultat: Liste des notes à partir de l'id d'une évaluation donnée.
* Exemple de résultat:
* Codes HTTP:
* **`eval_set_notes`**
* Méthode: POST
* Paramètres: `eval_id`, `etud_id`, `note`
* Format URL: `/api/eval_set_notes?eval_id=<int:eval_id>&etud_id=<int:etud_id>&note=<int:note>`
* Exemple d'utilisation: `/api/eval_set_notes?eval_id=6&etud_id=456&note=15`
* Résultat: Set les notes d'une évaluation pour un étudiant donné.
* Exemple de résultat:
* Codes HTTP:
* **`Notes/formsemestre_bulletinetud`** * **`Notes/formsemestre_bulletinetud`**
* Paramètres: `formsemestre_id`, `etudid`, `format` (`xml`ou `json`), `version` (`short`, `selectedevals`ou `long`) * Paramètres: `form_sem_id`, `etud_id`, `format` (`xml`ou `json`), `version` (`short`, `selectedevals`ou `long`)
* Résultat: bulletin de notes * Résultat: bulletin de notes
* Exemple: ici au format JSON, pour une version courte (`version=short`) * Exemple: ici au format JSON, pour une version courte (`version=short`)
``` ```
@ -307,7 +474,7 @@ Et un autre exemple en format JSON:
"prenom": "Roberto", "prenom": "Roberto",
"sexe": "M.", "sexe": "M.",
"code_ine": "", "code_ine": "",
"etudid": "EID9860", "etud_id": "EID9860",
"code_nip": "123456789", "code_nip": "123456789",
"email": "roberto@santateresa.mx", "email": "roberto@santateresa.mx",
"photo_url": "\/ScoDoc\/static\/photos\/F68\/RT_EID29960.h90.jpg" "photo_url": "\/ScoDoc\/static\/photos\/F68\/RT_EID29960.h90.jpg"
@ -322,7 +489,7 @@ Et un autre exemple en format JSON:
"decision": { "decision": {
"etat": "I", "etat": "I",
"code": "ADM", "code": "ADM",
"compense_formsemestre_id" : "SEM12345" /* si ce semestre en compense un autre */ "compenseform_sem_id" : "SEM12345" /* si ce semestre en compense un autre */
}, },
"note": { "note": {
"max": "15.51", "max": "15.51",
@ -330,7 +497,7 @@ Et un autre exemple en format JSON:
"value": "15.51", "value": "15.51",
"min": "07.29" "min": "07.29"
}, },
"etudid": "EID9860", "etud_id": "EID9860",
"decision_ue": [ "decision_ue": [
{ {
"acronyme": "UE11", "acronyme": "UE11",
@ -403,7 +570,7 @@ Et un autre exemple en format JSON:
"group_name": "" "group_name": ""
} }
], ],
"formsemestre_id": "SEM12345", form_sem_id": "SEM12345",
"etape_apo": "V1RT", "etape_apo": "V1RT",
"ue": [ "ue": [
{ {
@ -924,18 +1091,18 @@ Et un autre exemple en format JSON:
## Absences ## Absences
* **`Absences/ListeAbsEtud`** * **`Absences/ListeAbsEtud`**
* Paramètres: `etudid, absjust_only, format`. `absjust_only` spécifie si on veut les absences justifiées ou non. * Paramètres: `etud_id, absjust_only, format`. `absjust_only` spécifie si on veut les absences justifiées ou non.
* Résultat: liste d'absences. Exemple: * Résultat: liste d'absences. Exemple:
```{jour: "2021-02-10", ampm: "0", description: "M2202", }``` ```{jour: "2021-02-10", ampm: "0", description: "M2202", }```
(`ampm` vaut 1 le matin et 0 l'après-midi). (`ampm` vaut 1 le matin et 0 l'après-midi).
* **`Absences/doSignaleAbsence`** * **`Absences/doSignaleAbsence`**
* Paramètres: ```datedebut, datefin, moduleimpl_id=None, demijournee=2, estjust=False,description, etudid``` * Paramètres: ```datedebut, datefin, moduleimpl_id=None, demijournee=2, estjust=False,description, etud_id```
* Résultat: *html* * Résultat: *html*
* Remarques: dates au format `dd/mm/yyyy`. Date de fin non incluse. `demijournee`: 2 si journée complète, 1 matin, 0 après-midi. * Remarques: dates au format `dd/mm/yyyy`. Date de fin non incluse. `demijournee`: 2 si journée complète, 1 matin, 0 après-midi.
* **`Absences/doAnnuleAbsence`** * **`Absences/doAnnuleAbsence`**
* Paramètres: ```datedebut, datefin, demijournee, etudid``` * Paramètres: ```datedebut, datefin, demijournee, etud_id```
* Résultat: *html* * Résultat: *html*
* **`Absences/doAnnuleJustif`** * **`Absences/doAnnuleJustif`**
@ -953,7 +1120,7 @@ Et un autre exemple en format JSON:
nbabsnonjust: "7", nbabsnonjust: "7",
nbjustifs_noabs: "0", nbjustifs_noabs: "0",
nomprenom: "Mme Poisson Dodouce", nomprenom: "Mme Poisson Dodouce",
etudid: "EID12345" etud_id: "EID12345"
}, },
... ...
]``` ]```
@ -961,11 +1128,11 @@ Et un autre exemple en format JSON:
## Modules ## Modules
* **`Notes/do_moduleimpl_list`** * **`Notes/do_moduleimpl_list`**
* Paramètres: `[formsemestre_id, moduleimpl_id, module_id]` * Paramètres: `form_sem_id, moduleimpl_id, module_id]`
* Résultat: liste de moduleimpl * Résultat: liste de moduleimpl
* **`Notes/do_moduleimpl_withmodule_list`** * **`Notes/do_moduleimpl_withmodule_list`**
* Paramètres: `[formsemestre_id, moduleimpl_id, module_id]` * Paramètres: `form_sem_id, moduleimpl_id, module_id]`
* Résultat: liste triée de moduleimpl, avec l'attribut `module` * Résultat: liste triée de moduleimpl, avec l'attribut `module`