misc corrections

This commit is contained in:
Emmanuel Viennet 2024-01-26 11:53:55 +01:00
parent 4c58b40eef
commit 85fdb885cc
6 changed files with 127 additions and 68 deletions

View File

@ -52,7 +52,7 @@ décorateurs:
- `@permission_required`: permet de contrôler l'accès, en se basant sur les - `@permission_required`: permet de contrôler l'accès, en se basant sur les
permissions définies dans la classe `Permission`. permissions définies dans la classe `Permission`.
``` ```py
@bp.route("/un_exemple") @bp.route("/un_exemple")
@scodoc @scodoc
@permission_required(Permission.EditFormation) @permission_required(Permission.EditFormation)

View File

@ -88,7 +88,7 @@ On a ici:
- identifiant du groupe: dans `SUMMARY`, `* - <groupe>` - identifiant du groupe: dans `SUMMARY`, `* - <groupe>`
- identifiant du module: on a le code `VCYR303` à trois endroits: `SUMMARY`, - identifiant du module: on a le code `VCYR303` à trois endroits: `SUMMARY`,
`DESCRIPTION`, `X-ALT-DESC`. `DESCRIPTION`, `X-ALT-DESC`.
- identifiant de l'enseignant: `SUMMARY`, `DESCRIPTION`, `X-ALT-DESC`. - identifiant de l'enseignant: ici `1234`, présent dans `SUMMARY`, `DESCRIPTION` et `X-ALT-DESC`.
## Extraction des identifiants: semestres, groupes, modules, enseignants ## Extraction des identifiants: semestres, groupes, modules, enseignants

View File

@ -86,7 +86,7 @@ Au besoin, mémo:
- afficher les clés: `redis-cli KEYS '*'` - afficher les clés: `redis-cli KEYS '*'`
- `redis-cli TTL key` affiche le TTL d'un clé, -1 si infini. - `redis-cli TTL key` affiche le TTL d'une clé, -1 si infini.
- `redis-cli -r -1 -i 3 KEYS '*_NT_*'` surveille certaines clés (ici _NT_), - `redis-cli -r -1 -i 3 KEYS '*_NT_*'` surveille certaines clés (ici _NT_),
affiche toutes les 3 secondes. affiche toutes les 3 secondes.

View File

@ -1042,8 +1042,10 @@ responsable et ses enseignants). La liste des moduleimpl d'un formsemestre peut
* **Résultat:** Description du moduleimpl. * **Résultat:** Description du moduleimpl.
* **Exemple de résultat:** [moduleimpl.json](samples/sample_moduleimpl.json.md) * **Exemple de résultat:** [moduleimpl.json](samples/sample_moduleimpl.json.md)
#### **`moduleimpl-inscriptions`** Note: la liste des `ModuleImpl` d'un `FormSemestre` peut être obtenue via
[formsemestre-programme](#formsemestre-programme).
#### **`moduleimpl-inscriptions`**
* **Méthode:** GET * **Méthode:** GET
* **Permission: `ScoView`** * **Permission: `ScoView`**
@ -1053,6 +1055,59 @@ responsable et ses enseignants). La liste des moduleimpl d'un formsemestre peut
* **Résultat:** Liste des inscriptions à ce moduleimpl. * **Résultat:** Liste des inscriptions à ce moduleimpl.
* **Exemple de résultat:** [moduleimpl.json](samples/sample_moduleimpl_inscriptions.json.md) * **Exemple de résultat:** [moduleimpl.json](samples/sample_moduleimpl_inscriptions.json.md)
#### **`moduleimpl-evaluations`**
* **Méthode:** GET
* **Permission: `ScoView`**
* **Paramètres:** `moduleimpl_id`
* **Routes:** `/moduleimpl/<int:moduleimpl_id>/evaluations`
* **Exemple d'utilisation:** `/ScoDoc/api/moduleimpl/1/evaluations`
* **Résultat:** Liste ordonnée des évaluations dans ce moduleimpl.
#### **`moduleimpl-notes`**
* **Méthode:** GET
* **Permission: `ScoView`**
* **Paramètres:** `moduleimpl_id`
* **Routes:** `/moduleimpl/<int:moduleimpl_id>/notes`
* **Exemple d'utilisation:** `/ScoDoc/api/moduleimpl/1/notes`
* **Résultat:** Liste des notes dans ce moduleimpl.
Exemple en formation classique:
```json
[
{
"etudid": 18270,
"nom": "Ball",
"prenom": "Jane",
"38083": 11.0, // Note evaluation d'id 38083
"38084": 14.5, // Note evaluation 38084
"moymod": 12.75 // Moyenne au module
},
...
]
```
Exemple de résultat en BUT:
```json
[
{
"etudid": 17776, // code de l'étudiant
"nom": "DUPONT",
"prenom": "Luz",
"38411": 16.0, // Note dans l'évaluation d'id 38411
"38410": 15.0,
"moymod": 15.5, // Moyenne INDICATIVE module
"moy_ue_2875": 15.5, // Moyenne vers l'UE 2875
"moy_ue_2876": 15.5, // Moyenne vers l'UE 2876
"moy_ue_2877": 15.5 // Moyenne vers l'UE 2877
},
...
]
```
### **API Partition** ### **API Partition**
#### Structure Partition #### Structure Partition
@ -1908,7 +1963,8 @@ Cette API est disponible à partir de ScoDoc 9.6 et remplace les absences.
| *etat* | string | état du justificatif ( attente, valide, non_valide, modifie) | | *etat* | string | état du justificatif ( attente, valide, non_valide, modifie) |
| *raison* | string ou null | explication du justificatif si présente | | *raison* | string ou null | explication du justificatif si présente |
| *fichier* | string | identifiant de l'archivage des fichiers | | *fichier* | string | identifiant de l'archivage des fichiers |
|*user_id* | int or null | identifiant de l'utilisateur ayant créé le justificatif | | *user_id* | int or null | id de l'utilisateur ayant créé le justificatif |
| *user_name* | str ou null | login de l'utilisateur ayant créé le justificatif |
| *entry_date* | string | date ISO de l'entrée du justificatif | | *entry_date* | string | date ISO de l'entrée du justificatif |
#### **justificatif** #### **justificatif**

View File

@ -59,10 +59,10 @@ Par ailleurs, chaque semestre est associé à une étape Apogée (VET), et, en
option, à un code d'élément annuel et un code d'élément semestre. Pour le option, à un code d'élément annuel et un code d'élément semestre. Pour le
deuxième semestre 5S2) du DUT R&T Villetaneuse, cela donne: deuxième semestre 5S2) du DUT R&T Villetaneuse, cela donne:
* Code étape (VET): `V1RT` (l'étape est annuelle) - Code étape (VET): `V1RT` (l'étape est annuelle)
* Code année (ELP): `VRT1A` (cet élément contiendra exactement les mêmes - Code année (ELP): `VRT1A` (cet élément contiendra exactement les mêmes
informations que le VET) informations que le VET)
* Code semestre (ELP): `VRTW2` (la note de ces élément sera la moyenne générale - Code semestre (ELP): `VRTW2` (la note de ces élément sera la moyenne générale
du semestre) du semestre)
Notez que la nomenclature est variable et souvent peu prévisible, même au sein Notez que la nomenclature est variable et souvent peu prévisible, même au sein
@ -97,13 +97,13 @@ Apogée.
### Précautions à prendre et remarques diverses ### Précautions à prendre et remarques diverses
* **Codage des fichiers**: Apogée (du moins à l'Université Paris 13) exporte et - **Codage des fichiers**: Apogée (du moins à l'Université Paris 13) exporte et
importe des fichiers maquettes codés en latin-1 (ISO-8859-1). Les web importe des fichiers maquettes codés en latin-1 (ISO-8859-1). Les web
services (portail Apogée), tout comme ScoDoc, travaillent en utf8. Pour services (portail Apogée), tout comme ScoDoc, travaillent en utf8. Pour
faciliter les échanges, les fichiers maquettes importés et exportés de ScoDoc faciliter les échanges, les fichiers maquettes importés et exportés de ScoDoc
sont en latin-1 (sauf celui reçu du portail Apogée). sont en latin-1 (sauf celui reçu du portail Apogée).
* **Format des nombres** (notes): les notes sont calculées par ScoDoc en haute - **Format des nombres** (notes): les notes sont calculées par ScoDoc en haute
précision, mais affichées avec deux chiffres après la virgule dans précision, mais affichées avec deux chiffres après la virgule dans
l'application (ce qui donne 4 chiffres significatifs, par exemple *12,34*, l'application (ce qui donne 4 chiffres significatifs, par exemple *12,34*,
soit une précision de un pour dix mille, ce qui semble plus que suffisant soit une précision de un pour dix mille, ce qui semble plus que suffisant
@ -118,14 +118,15 @@ Apogée.
![Config. précision exports Apogée](screens/apo-precision.png) ![Config. précision exports Apogée](screens/apo-precision.png)
* **Étudiants démissionnaires**: on note les démissions dans ScoDoc (sur la fiche - **Étudiants démissionnaires**: on note les démissions dans ScoDoc (sur la fiche
de l'étudiant), mais en général pas dans Apogée. Le résultat Apogée sera DEF. de l'étudiant), mais en général pas dans Apogée. Le résultat Apogée sera DEF.
Ne jamais désinscrire du semestre ScoDoc les démissionnaires ! Ne jamais désinscrire du semestre ScoDoc les démissionnaires !
* Exports à **mi-année** (après jurys de janvier): Si `periode==1` (jury de janvier), - Exports à **mi-année** (après jurys de janvier): Si `periode==1` (jury de janvier),
alors l'étape Apogée (annuelle) n'est pas terminée. alors l'étape Apogée (annuelle) n'est pas terminée.
Donc on ne remplit pas le code annuel (`elt_annee_apo`, comme `VRT1A`) ni le Donc on ne remplit pas le code annuel (`elt_annee_apo`, comme `VRT1A`) ni le
`VET` sauf si l'année est en fait validée grâce à un semestre de l'an `VET` sauf si l'année est en fait validée grâce à un semestre de l'an
précédent: (voir r1525) précédent: (voir r1525)
* jury de fin de S1: si le S2 est validé;
* jury de fin de S3: si le S4 est validé. - jury de fin de S1: si le S2 est validé;
- jury de fin de S3: si le S4 est validé.

View File

@ -121,6 +121,8 @@ l'initialiser et la peupler de données fictives pour les tests.
flask run --host 0.0.0.0 --debug flask run --host 0.0.0.0 --debug
``` ```
Le script `tests/api/start_api_server.sh -p 5555` fait tout cela pour vous !
### Configuration du client de test API ### Configuration du client de test API
1. Copier le fichier `scodoc/tests/api/dotenv_exemple` dans 1. Copier le fichier `scodoc/tests/api/dotenv_exemple` dans