API évaluations

This commit is contained in:
Emmanuel Viennet 2023-08-26 17:08:28 +02:00
parent 0fb62b79bf
commit bf68f0b1a7
4 changed files with 95 additions and 32 deletions

View File

@ -8,7 +8,7 @@ Lannion financé par l'Association ScoDoc.
**Ce module est disponible à partir de ScoDoc version 9.6**. **Ce module est disponible à partir de ScoDoc version 9.6**.
[Vidéo de présentation du module d'assiduités ](#) TODO EV à publier sur la chaîne YT [Vidéo de présentation du module d'assiduités ](https://youtu.be/p7xips26W54)
## Fonctionnalités ## Fonctionnalités

View File

@ -19,13 +19,13 @@ L'API fournit des données JSON, sauf exception (bulletins PDF par exemple).
Les objets ScoDoc manipulables sont identifiés par des id numériques. Les objets ScoDoc manipulables sont identifiés par des id numériques.
- `etudid` : étudiant * `etudid` : étudiant
- `formation_id` : un programme de formation (page "programmes"); * `formation_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;
- `moduleimpl_id` : un module réalisé dans un semestre; * `moduleimpl_id` : un module réalisé dans un semestre;
- `formsemestre_id` : un "semestre" de formation. * `formsemestre_id` : un "semestre" de formation.
(pour plus de précisions, voir le [guide développeurs](GuideDeveloppeurs.md)) (pour plus de précisions, voir le [guide développeurs](GuideDeveloppeurs.md))
@ -77,17 +77,17 @@ flask user-password lecteur_api
Si vous êtes intéressé par le développement, voir Si vous êtes intéressé par le développement, voir
- [la section sur les tests unitaires de l'API](TestsScoDoc.md#tests-de-lapi-scodoc9); * [la section sur les tests unitaires de l'API](TestsScoDoc.md#tests-de-lapi-scodoc9);
- [la documentation développeurs](GuideDeveloppeurs.md) et sur les [vues de l'API](DevInternals.md#vues-de-lapi-et-permissions). * [la documentation développeurs](GuideDeveloppeurs.md) et sur les [vues de l'API](DevInternals.md#vues-de-lapi-et-permissions).
!!! note !!! note
- Si vous utilisez le CAS, pensez à laisser les comptes utilisateurs API se * Si vous utilisez le CAS, pensez à laisser les comptes utilisateurs API se
connecter via ScoDoc sans CAS. Pour cela, cocher l'option connecter via ScoDoc sans CAS. Pour cela, cocher l'option
*Autorise connexion via CAS si CAS est activé* *Autorise connexion via CAS si CAS est activé*
dans leur formulaire de configuration. dans leur formulaire de configuration.
- Si l'utilisateur est associé à un département (cas des comptes créés via l'interface Web), * Si l'utilisateur est associé à un département (cas des comptes créés via l'interface Web),
il ne pourra accéder à l'API que via une *route départementale*, c'est à dire une route comprenant il ne pourra accéder à l'API que via une *route départementale*, c'est à dire une route comprenant
l'acronyme de son département, de la forme `https://...//ScoDoc/DEPARTEMENT/api/...`. l'acronyme de son département, de la forme `https://...//ScoDoc/DEPARTEMENT/api/...`.
@ -252,7 +252,7 @@ Ce tableau est trié selon le type des informations renvoyées:
| assiduite | une assiduité | GET | [assiduité](#assiduite) | ScoView | | assiduite | une assiduité | GET | [assiduité](#assiduite) | ScoView |
| assiduite**`*`** | liste d'assiduités d'un étudiant | GET | [assiduités](#assiduites) | ScoView | | assiduite**`*`** | liste d'assiduités d'un étudiant | GET | [assiduités](#assiduites) | ScoView |
| assiduite**`*`** | liste d'assiduités d'un formsemestre | GET | [assiduités-formsemestre](#assiduites-formsemestre) | ScoView | | assiduite**`*`** | liste d'assiduités d'un formsemestre | GET | [assiduités-formsemestre](#assiduites-formsemestre) | ScoView |
| assiduite**`#`** | liste d'id d'assiduités justifiées par un justificatif | GET | [justificatif-justifies](#justificatif-justifies) | ScoView | | assiduite**`#`** | liste d'id d'assiduités justifiées | GET | [justificatif-justifies](#justificatif-justifies) | ScoView |
| assiduite:CREATE | création d'assiduité | POST | [assiduite-create](#assiduite-create) | ScoAssiduiteChange | | assiduite:CREATE | création d'assiduité | POST | [assiduite-create](#assiduite-create) | ScoAssiduiteChange |
| assiduite:EDIT | édition d'assiduité | POST | [assiduite-edit](#assiduite-edit) | ScoAssiduiteChange | | assiduite:EDIT | édition d'assiduité | POST | [assiduite-edit](#assiduite-edit) | ScoAssiduiteChange |
| assiduite:DELETE | suppression d'assiduité | POST | [assiduite-delete](#assiduite-delete) | ScoAssiduiteChange | | assiduite:DELETE | suppression d'assiduité | POST | [assiduite-delete](#assiduite-delete) | ScoAssiduiteChange |
@ -271,6 +271,9 @@ Ce tableau est trié selon le type des informations renvoyées:
| departement:CREATE | création d'un département | POST | [departement-create](#departement-create) | ScoSuperAdmin | | departement:CREATE | création d'un département | POST | [departement-create](#departement-create) | ScoSuperAdmin |
| departement:EDIT | modification d'un département | POST | [departement-edit](#departement-edit) | ScoSuperAdmin | | departement:EDIT | modification d'un département | POST | [departement-edit](#departement-edit) | ScoSuperAdmin |
| departement:DELETE | suppression d'un département | POST | [departement-delete](#departement-delete) | ScoSuperAdmin | | departement:DELETE | suppression d'un département | POST | [departement-delete](#departement-delete) | ScoSuperAdmin |
| evaluation | une évaluation | GET | [evaluation](#evaluation) | ScoView |
| evaluation:CREATE | création d'une évaluation | POST | [evaluation-create](#evaluation-create) | - |
| evaluation:DELETE | suppression d'une évaluation | POST | [evaluation-delete](#evaluation-delete) | - |
| formation**`*`** | toutes les formations accessibles | GET | [formations](#formations) | ScoView | | formation**`*`** | toutes les formations accessibles | GET | [formations](#formations) | ScoView |
| formation**`#`** | ids des formations accessibles | GET | [formations-ids](#formations-ids) | ScoView | | formation**`#`** | ids des formations accessibles | GET | [formations-ids](#formations-ids) | ScoView |
| formation | une formation | GET | [formation](#formation) | ScoView | | formation | une formation | GET | [formation](#formation) | ScoView |
@ -592,6 +595,66 @@ Pour uniformiser les résultats des exemples, ceux sont soumis à quelques post-
* Pour obtenir tous les étudiants répondant au critère, utiliser [etudiant-clefs](#etudiants-clef) * Pour obtenir tous les étudiants répondant au critère, utiliser [etudiant-clefs](#etudiants-clef)
* **Exemple de résultat:** [etudiant.json](samples/sample_etudiant.json.md) * **Exemple de résultat:** [etudiant.json](samples/sample_etudiant.json.md)
### **API Evaluation**
#### Structure évaluation
| attribut | type | commentaire |
|:----------------------------|:-----------------------------------------------|:--------------------------------------------------|
| coefficient | float | coefficient pour moyenne (1.) |
| date_debut | datetime (iso) | date et heure de début (tous groupes) |
| date_fin | datetime (iso) | date et heure de fin (tous groupes) |
| description | string | texte libre |
| evaluation_type | int | 0 normale, 1 rattrapage, 2 "2eme session" |
| moduleimpl_id | int | moduleimpl |
| note_max | float | barème (20 points) |
| numero | int | ordre présentation |
| poids | { int : float } | poids APC (BUT): { ue_id : poids } |
| publish_incomplete | int | si vrai, prend en compte même si notes incomplètes|
| visibulletin | int | affiche sur bulletins intermédiaires (non BUT) |
Note: les poids ne sont utilisés que dans les formations APC (BUT).
#### **`evaluation`**
* **Méthode:** GET
* **Permission: `ScoView`**
* **Routes:** `/evaluation`
* **Exemple d'utilisation:** `/ScoDoc/api/evaluation/123`
* **Résultat:** Liste une évaluation
* **Exemple de résultat:** [evaluation.json](samples/sample_evaluation.json.md)
#### **`evaluation-create`**
* **Méthode: POST**
* **Permission:** dépend du contexte
* **Data:**
```json
{
"description" : str,
"evaluation_type" : int, // {0,1,2} default 0 (normale)
"date_debut" : date_iso, // optionnel
"date_fin" : date_iso, // optionnel
"note_max" : float, // si non spécifié, 20.0
"numero" : int, // ordre de présentation, default tri sur date
"visibulletin" : boolean , //default true
"publish_incomplete" : boolean , //default false
"coefficient" : float, // si non spécifié, 1.0
"poids" : { ue_id : poids } // optionnel
}
```
* **Routes:** `/moduleimpl/<int:evaluation_id>/evaluation/create`
* **Résultat:** Crée une évaluation dans le moduleimpl indiqué. Tous les paramètres passés dans sont optionnels. Renvoie l'évaluation.
#### **`evaluation-delete`**
* **Méthode: POST**
* **Permission:** dépend du contexte
* **Paramètres:** `evaluation_id`
* **Routes:** `/evaluation/<int:evaluation_id>/delete`
* **Exemple d'utilisation:** `/ScoDoc/api/evaluation/123/delete`
* **Résultat:** Supprime une évaluation (et toutes ses notes s'il y en a)
### **API Formation** ### **API Formation**
#### Structure Formation #### Structure Formation

View File

@ -34,7 +34,7 @@
"datetime_fin": null, "datetime_fin": null,
"datetime_mediane": null "datetime_mediane": null
}, },
"visi_bulletin": true "visibulletin": true
} }
], ],
"formsemestre_id": 1, "formsemestre_id": 1,
@ -172,7 +172,7 @@
"datetime_fin": "2022-08-20T12:00:00.000000+02:00", "datetime_fin": "2022-08-20T12:00:00.000000+02:00",
"datetime_mediane": "2022-08-20T12:00:00.000000+02:00" "datetime_mediane": "2022-08-20T12:00:00.000000+02:00"
}, },
"visi_bulletin": true "visibulletin": true
} }
], ],
"formsemestre_id": 1, "formsemestre_id": 1,

View File

@ -15,7 +15,7 @@
"numero": 0, "numero": 0,
"poids": {}, "poids": {},
"publish_incomplete": true, "publish_incomplete": true,
"visi_bulletin": true "visibulletin": true
}, },
"..." "..."
] ]