From 634b250330db236d5d6e8508c04e0e083c8e7898 Mon Sep 17 00:00:00 2001 From: Jean-Marie PLACE Date: Thu, 4 Aug 2022 16:47:25 +0200 Subject: [PATCH] complement formsemestre, partition, moduleimpl --- docs/ScoDoc9API.md | 300 +++++++++--------- docs/img/API_Chart.odg | Bin 26244 -> 26939 bytes docs/img/API_Chart.svg | 292 ++++++++++++----- .../sample_departement-etudiants.json.md | 30 ++ .../sample_formsemestre-resultats.json.md | 2 +- docs/samples/sample_user.json.md | 8 + 6 files changed, 408 insertions(+), 224 deletions(-) create mode 100644 docs/samples/sample_departement-etudiants.json.md create mode 100644 docs/samples/sample_user.json.md diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index 1d14c3c..f0e1ef6 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -175,7 +175,7 @@ par le serveur ScoDoc. ### Carte syntaxique -![carte_syntaxique](img/API_Chart.svg)#### Structure Département +![carte_syntaxique](img/API_Chart.svg) ### Tableau récapitulatif des point de l'API @@ -239,8 +239,9 @@ Ce tableau est trié selon le type des informations retournées | note* | |GET | [evaluation-notes](http://localhost:8000/ScoDoc9API/**`#`**evaluation-notes) | | user | |GET | [user](http://localhost:8000/ScoDoc9API/**`#`**user) | -### **Départements** +### **API Départements** +#### Structure Département | attribut | type | commentaire | |:-----------------|:--------|:---------------------------------------| @@ -274,7 +275,7 @@ Ce tableau est trié selon le type des informations retournées * **Résultat:** Un département * **Exemple de résultat:** [departement.json](samples/sample_departement.json.md) -### **Formation** +### **API Formation** #### Structure Formation | attribut | type | commentaire | |:----------------------------|:------------|:--------------------------------------------------| @@ -317,16 +318,17 @@ Ce tableau est trié selon le type des informations retournées * **Résultat:** Description de la formation. * **Exemple de résultat:** [formation.json](samples/sample_formation.json.md) -### **Formsemestre** +### **API Formsemestre** Les sessions de formation (qu'elles durent une année ou un mois) sont représentées par les `formsemestre`. #### Note sur les identifiants de formsemestre 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 d'emplois du temps ou de services d'enseignement). Cet identifiant est constitué des informations suivantes: + * **Département** (RT, GEII, INFO...) (acronyme en majuscules) * **Nom parcours:** BUT, LP, ... (défini au niveau du parcours dans ScoDoc = NAME) * **Modalité:** FI, FC, FA @@ -341,6 +343,43 @@ des informations suivantes: **Exemple:** `INFO-DUT-FI-S1-2014` équivaut à un semestre S1 d'un DUT informatique de 2014 en formation initiale (FI). +#### Structure Formsemestre + +| attribut | type | commentaire | +|:----------------------------|:------------|:-----------------------------------------------| +| _**id**_ | int | id unique | +| _**formsemestre_id**_ | int | identification unique | +| _**semestre_id**_ | int | rang du semestre 1, ... | +| _**elt_annee_apo**_ | ??? | | +| _**titre**_ | string | | +| _**titre_court**_ | string | | +| _**titre_num**_ | string | | +| _**session_id**_ | string | cf. Note sur les identifiants de formsemestre | +| _**block_moyennes**_ | bool | inhibe le calcul des mmoyennes | +| _**scodoc7_id**_ | int | | +| _**date_debut**_ | date | | +| _**date_fin**_ | date | | +| _**gestion_semestrielles**_ | bool | | +| _**gestion_compensation**_ | bool | | +| _**bul_bgcolor**_ | string | Couleur (CSS) de fond du bulletin | +| _**etat**_ | bool | | +| _**dept_id**_ | int | | +| _**modalite**_ | string | "FI", "FA", ... | +| _**bul_hide_xml**_ | bool | | +| _**resp_can_change_ens**_ | bool | | +| _**resp_can_edit**_ | bool | | +| _**ens_can_edit_eval**_ | bool | | +| _**elt_sem_apo**_ | string | | +| _**parcours**_ | ???? | | +| _**annee_scolaire**_ | int | | +| _**date_debut_iso**_ | string | | +| _**date_fin_iso**_ | string | | +| _**departement**_ | Département | | +| _**etape_apo**_ | string | | +| _**formation_id**_ | int | | +| _**formation**_ | Formation | | +| _**responsables**_ | int* | liste des ids des enseignants responsables | + #### **departement-formsemestres_ids** * **Méthode:** GET * **Paramètres:** `dept` @@ -395,10 +434,23 @@ informatique de 2014 en formation initiale (FI). * **Résultat:** Description du formsemestre. * **[Exemple de résultat:](samples/sample_formsemestre.json.md)** -### **Moduleimpl** +### **API Moduleimpl** + +#### Structure ModuleImpl Le moduleimpl est la mise en place d'un module dans un formsemestre (avec son -responsable et ses enseignants). +responsable et ses enseignants). La liste des moduleimpl d'un formsemestre peut être obtenu par l'entrée [formsemestre-programme](#formsemestre-programme) + +| attribut | type | commentaire | +|:-----------------------|:-------|:-------------------------------------------------| +| _**id**_ | int | identifiant unique | +| _**responsable_id**_ | int | id du responsable de module | +| _**computation_expr**_ | string | unused | +| _**module_id**_ | int | id du module | +| _**formsemestre_id**_ | int | id du formsemestre | +| _**moduleimpl_id**_ | int | _**redondance id_? | +| _**ens**_ | User# | liste des ids des enseignants du moduleimpl | +| _**module**_ | Module | | #### **`moduleimpl`** * **Méthode:** GET @@ -408,12 +460,24 @@ responsable et ses enseignants). * **Résultat:** Description du moduleimpl. * **Exemple de résultat:** [moduleimpl.json](samples/sample_moduleimpl.json.md) -### **Partition** +### **API Partition** +#### Structure Partition 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. +| attribut | type | commentaire | +|:----------------------|:-------|:-----------------------------------| +| _**id**_ | int | identifiant unique | +| _**partition_name**_ | string | nom de la partition | +| _**numero**_ | int | | +| _**bul_show_rank**_ | | affichage sur bulletin | +| _**groups_editable**_ | bool | verrou (liste des groupes) | +| _**formsemestre_id**_ | int | formsemestre hôte | +| _**show_in_lists**_ | bool | | +| _**groups**_ | Group* | liste des groupes de la partition | + #### **`formsemestre-partitions`** * **Méthode: GET** * **Paramètres:** `formsemestre_id` @@ -477,7 +541,7 @@ d'un nombre quelconque de groupes d'étudiants. * **Résultat:** Retire un étudiant des groupes de la partition. * **[Exemple de résultat](samples/sample_partition-remove_etudiant.json.md)** -### **Groupe** +### **API Groupe** #### **`partition-group-create`** * **Méthode: POST** @@ -549,7 +613,34 @@ d'un nombre quelconque de groupes d'étudiants. * **Résultat:** Retire un étudiant d'un groupe. * **[Exemple de résultat](samples/sample_group-remove_etudiant.json.md)** -### **Etudiant** +### **API Etudiant** +#### Structure Etudiant + +| attribut | type | commentaire | +|:-----------------|:----------|:---------------------------------| +| _id_ | int | id unique | +| _code_nip_ | string | non unique! | +| _code_ine_ | string | non unique! | +| _dept_id_ | | | +| _civilite_ | string | "M", "F" ou "X" | +| _nom_ | string | en majuscule | +| _nom_usuel_ | string | null si absent | +| _prenom_ | string | | +| | | **Format long** | +| _date_naissance_ | string | date ISO | +| _email_ | string | | +| _emailperso_ | string | | +| _admission_ | admission | | +| _adresses_ | adresse* | | +| _boursier_ | | | +| _dept_acronym_ | string | | +| _dept_id_ | string | département du lieu de naissance | +| _lieu_naissance_ | string | lieu de naissance (ville) | +| _nationalite_ | string | | +| _photo_filename_ | string | | +| _scodoc7_id_ | string | de la forme 'EID9999' | +| _statut_ | string | 'I', 'D' ou 'X' | + #### **`etudiants`** * **Méthode:** GET * **Routes:** `/etudiants @@ -660,7 +751,7 @@ d'un nombre quelconque de groupes d'étudiants. Si plusieurs objets étudiant ont le même code, on ramène le plus récemment inscrit. * **Exemple de résultat:** [etudiant.json](samples/sample_etudiant.json.md) -### Programme, Référentiel +### API Programme, Référentiel #### **`formation-export`** * **Méthode:** GET @@ -680,7 +771,7 @@ d'un nombre quelconque de groupes d'étudiants. * **Résultat:** Le référentiel de compétences d'une formation donnée (json). (_pas toujours présent_) * **Exemple de résultat:** [formation-referentiel_competences.json](samples/sample_formation-referentiel_competences.json.md) -### **Bulletin, Evaluations, Notes** +### ** API Bulletin, Evaluations, Notes** #### **formsemestre-bulletins** * **Méthode:** GET * **Paramètres:** `formsemestre_id` @@ -690,6 +781,13 @@ d'un nombre quelconque de groupes d'étudiants. * **Exemple de résultat:** [formsemestre-bulletins.json](samples/sample_formsemestre-bulletins.json.md) #### **etudiant-formsemestre-bulletin** +Récapitulatif par étudiant (état, groupe(s), moyennes d'UEs et de modules +pour un formsemestre spécifié par son id. +Par défaut les valeurs numériques sont formattées en chaînes. Si format=raw, valeurs numériques +mais pas JSON compliant à cause des _NaN_. + +* **Exemple de résultat:** + * **Méthode:** GET * **Paramètres:** `formsemestre_id`, `etudid`, `nip`, `ine` * **Routes:** @@ -753,9 +851,54 @@ valeurs numériques mais pas JSON compliant à cause des _NaN_. * **Résultat:** Retourne la liste des notes d'une évaluation * **Exemple de résultat:** TODO XXX -### **User** +#### **formsemestre-etat_evals** +* **Méthode:** GET +* **Paramètres:** `formsemestre_id` +* **Routes:** `/formsemestre//etat_evals` +* **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/etat_evals` +* **Résultat:** Retourne les informations sur l'état des évaluations d'un semestre donné +* **Exemple de résultat:** [formsemestre-etat_evals.json](samples/sample_formsemestre-etat_evals.json.md) -### Logos +#### **formsemestre-programme** +* **Méthode:** GET +* **Paramètres:** `dept`, `formsemestre_id` +* **Routes:** `/formsemestre//programme` +* **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/programme` +* **Résultat:** Retourne la liste des UEs, modules, ressources et SAE d'un semestre. +* **Exemple de résultat:** [formsemestre-programme.json](samples/sample_formsemestre-programme.json.md) + +#### **formsemestre-resultats** +* **Méthode:** GET +* **Paramètres:** `formsemestre_id` +* **Query string: `format` +* **Route:** `/formsemestres/resultats` +* **Exemple d'utilisation:** `/api/formsemestre/1/resultats` +* **Résultat:** Retourne les résultats pour un formsemestre +* **Exemple de résultat:** [formsemestre-resultats.json](samples/sample_formsemestre-resultats.json.md) + +### **API User** +#### **user** +* **Méthode:** GET +* **Paramètres:** `user_id` +* **Route:** `/user/` +* **Exemple d'utilisation:** `/api/user/1` +* **Résultat:** Retourne la description d'un utilisateur. +* **Exemple de résultat:** [user.json](samples/sample_user.json.md) + + +### **API Jury** +#### **`formsemestre-decision_jury`** +* **Méthode:** GET +* **Paramètres:** `formsemestre_id` +* **Routes:** `/formsemestre//decision_jury` +* **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/jury` +* **Résultat:** Retourne le récapitulatif des décisions jury +* **Exemple de résultat:** + ``` + XXX A COMPLETER + ``` + +### **API Logos** #### **`logos`** * **Méthode:** GET * **Paramètres:** `format` (json, xml), json par défaut @@ -789,136 +932,7 @@ XXX vérifier si on supporte XML et pour qui ? * **Résultat :** l'image (format png ou jpg) ------------------------------------------------------------------------------------------------------------------------------------------------------- - -## **Réserve** -### Étudiants inscrits et bulletins -#### * **`formsemestre-bulletins`** - * **Méthode:** GET - * **Paramètres:** `formsemestre_id` - * **Routes:** `/formsemestre//bulletins` - * **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/bulletins` - * **Résultat:** tous les bulletins d'un formsemestre. - * **[Exemple de résultat](samples/sample_formsemestre-bulletins.json.md)** - -#### **formsemestre-etat_evals** - * **Méthode:** GET - * **Paramètres:** `formsemestre_id` - * **Routes:** `/formsemestre//etat_evals` - * **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/etat_evals` - * **Résultat:** Retourne les informations sur l'état des évaluations d'un semestre donné - * **Exemple de résultat:** [formsemestre-etat_evals.json](samples/sample_formsemestre-etat_evals.json.md) - -#### **`formsemestre-decision_jury`** - * **Méthode:** GET - * **Paramètres:** `formsemestre_id` - * **Routes:** `/formsemestre//decision_jury` - * **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/jury` - * **Résultat:** Retourne le récapitulatif des décisions jury - * **Exemple de résultat:** - ``` - XXX A COMPLETER - ``` - -### Évaluations - - -### Absences -**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`** - - * **Méthode:** GET - * **Paramètres:** `etudid`, `nip`, `ine` - * **Routes:** `/absences/etudid/` - * **Exemple d'utilisation:** `/ScoDoc/api/absences/etudid/123456` - * **Résultat:** Retourne la liste des absences d'un étudiant donné - * **Exemple de résultat:** - ``` - [ - { - "jour": "2022-04-15", - "matin": true, - "estabs": true, - "estjust": true, - "description": "Retard bus", - "begin": "2022-04-15 08:00:00", - "end": "2022-04-15 11:59:59" - }, - { - ... - } - ] - ``` - -#### **`absences/just`** - - * **Méthode:** GET - * **Paramètres:** `etudid` - * **Routes:** `/absences/etudid//just` - * **Exemple d'utilisation:** `/ScoDoc/api/absences/etudid/1/just` - * **Résultat:** Retourne la liste des absences justifiées d'un étudiant donné - * **Exemple de résultat:** - ``` - [ - { - "jour": "2022-04-15", - "matin": true, - "estabs": true, - "estjust": true, - "description": "Retard bus", - "begin": "2022-04-15 08:00:00", - "end": "2022-04-15 11:59:59" - }, - { - ... - } - ] - ``` - - -#### **`abs_groupe_etat`** - - * **Méthode:** GET - * **Paramètres:** `group_ids`, `date_debut`, `date_fin`, - * **Routes:** `/absences/abs_group_etat/` ou `/absences/abs_group_etat/group_id//date_debut//date_fin/` - * **Exemple d'utilisation:** `/ScoDoc/api/absences/abs_group_etat/1` - * **Résultat:** Liste des absences d'un groupe entre deux dates. - * **Exemple de résultat:** - ``` - XXX A COMPLETER XXX with_boursier ?? - - * XXX ajouter méthode(s) de set abs - ``` - -### Jury - -#### **`jury_preparation`** - - * **Méthode:** GET - * **Paramètres:** `formsemestre_id` - * **Routes:** `/jury/formsemestre//preparation_jury` - * **Exemple d'utilisation:** `/ScoDoc/api/jury/formsemestre/1/preparation_jury` - * **Résultat:** Retourne la feuille de préparation du jury - * **Exemple de résultat:** - ``` - XXX A COMPLETER - ``` - -#### **`jury_decisions`** - - * **Méthode:** GET - * **Paramètres:** `formsemestre_id` - * **Routes:** `/jury/formsemestre//decisions_jury` - * **Exemple d'utilisation:** `/ScoDoc/api/jury/formsemestre/1/decisions_jury` - * **Résultat:** Retourne les décisions du jury suivant un formsemestre donné - * **Exemple de résultat:** - ``` - XXX A COMPLETER - ``` - - ### En savoir plus Voir exemples d'utilisation de l'API en Python, dans `tests/api/`. diff --git a/docs/img/API_Chart.odg b/docs/img/API_Chart.odg index f2572f5dc0796d4f521906f24c12e83145b9da78..0d418385ad54d48646e668aec449546ab59718e3 100644 GIT binary patch delta 25106 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 ASpWb4 diff --git a/docs/img/API_Chart.svg b/docs/img/API_Chart.svg index e88a257..77cc186 100644 --- a/docs/img/API_Chart.svg +++ b/docs/img/API_Chart.svg @@ -92,7 +92,7 @@ - + @@ -794,8 +794,8 @@ - ? - id344 + ? + id359 @@ -803,8 +803,8 @@ - ? - id345 + ? + id360 @@ -1239,50 +1239,50 @@ - - - - logos + + + + logos - - - - / + + + + / - - - - <string:logo_name> + + + + <string:logo_name> - - - - user + + + + user - - - - / + + + + / - - - - <int:id> + + + + <int:id> @@ -1478,54 +1478,54 @@ - - - - partition + + + + partition - - - - / + + + + / - - - - <int:partition_id> + + + + <int:partition_id> - - - - / + + + + / - - + + - - + + - - + + @@ -1595,8 +1595,8 @@ - - + + @@ -1758,8 +1758,8 @@ - - + + @@ -2534,35 +2534,35 @@ - ? - id346 + ? + id361 - + - ? - id347 + ? + id362 - - - - ? - id348 + + + + ? + id363 - - - - ? - id349 + + + + ? + id364 @@ -2570,8 +2570,8 @@ - ? - id350 + ? + id365 @@ -2579,8 +2579,8 @@ - ? - id351 + ? + id366 @@ -2588,8 +2588,8 @@ - ? - id352 + ? + id367 @@ -2763,8 +2763,8 @@ - ? - id353 + ? + id368 @@ -2772,8 +2772,140 @@ - ? - id354 + ? + id369 + + + + + + + + ? + id370 + + + + + + + + ? + id371 + + + + + + + + ? + id372 + + + + + + + + ? + id373 + + + + + + + + ? + id374 + + + + + + + + moduleimpl + + + + + + + + / + + + + + + + + <int:moduleimpl_id> + + + + + + + + ? + id375 + + + + + + + + ? + id376 + + + + + + + + ? + id377 + + + + + + + + ? + id378 + + + + + + + + ? + id379 + + + + + + + + ? + id380 + + + + + + + + ? + id381 diff --git a/docs/samples/sample_departement-etudiants.json.md b/docs/samples/sample_departement-etudiants.json.md new file mode 100644 index 0000000..7db6114 --- /dev/null +++ b/docs/samples/sample_departement-etudiants.json.md @@ -0,0 +1,30 @@ +### etudiants + +`/api/etudiants/9537` + +```json +[ + { + "id": 1, + "code_nip": "11103639", + "code_ine": null, + "dept_id": 1, + "nom": "GYSELINCK", + "nom_usuel": null, + "prenom": "MARIE", + "civilite": "F" + }, + { + "id": 2, + "code_nip": "11102517", + "code_ine": null, + "dept_id": 1, + "nom": "IDRI", + "nom_usuel": null, + "prenom": "ANAIS", + "civilite": "F" + }, + ... +] +``` + diff --git a/docs/samples/sample_formsemestre-resultats.json.md b/docs/samples/sample_formsemestre-resultats.json.md index ec3b780..9d22956 100644 --- a/docs/samples/sample_formsemestre-resultats.json.md +++ b/docs/samples/sample_formsemestre-resultats.json.md @@ -40,6 +40,6 @@ "1735": 3784 } }, -... + ... ] ``` diff --git a/docs/samples/sample_user.json.md b/docs/samples/sample_user.json.md new file mode 100644 index 0000000..88f2089 --- /dev/null +++ b/docs/samples/sample_user.json.md @@ -0,0 +1,8 @@ +### user + +`/api/user/969` + +```json +"TODO" +``` +