Compare commits

...

10 Commits

5 changed files with 507 additions and 358 deletions

View File

@ -1,22 +1,26 @@
# Générer des bulletins en Python # Génération des bulletins en Python
Il est possible de coder de nouveaux styles de bulletins de notes (web et/ou Informations internes à destination des développeurs.
PDF), pour répondre précisément aux besoins de votre établissement.
Ce n'est pas très difficile, mais il faudra coder en langage Python avec pour le ## Types de bulletins
PDF la bibliothèque ReportLab (qui est bien documentée, [voir le
guide](http://www.reportlab.com/software/opensource/rl-toolkit/guide/)).
ScoDoc demande la création d'un bulletin pour un étudiant donné dans semestre - Formations classiques
donné (`formsemestre_id`). Le bulletin doit être rendu sous forme d'une liste - HTML, court, intermédiaire, long
d'objets PLATYPUS (voir le chapitre 5 du "User Guide" de ReportLab cité plus - XML (deprecated)
haut). - JSON
- PDF
- Formations BUT
- JSON (utilisé par la version HTML)
- XML (partiel, deprecated)
- PDF
- "but court" HTML
- "but court" PDF
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" ## Balises décisions de jury pour chaque type
alt="/!\" /> Attention (août 2011): nouvelle version, changement d'API: les
informations ci-dessous s'appliquent à partir de la subversion 1047.
## Organisation
## Organisation
A minima, il vous faut créer un module python (fichier .py) qui se définira une A minima, il vous faut créer un module python (fichier .py) qui se définira une
classe chargée de générer vos bulletins. classe chargée de générer vos bulletins.
@ -138,33 +142,33 @@ nom de l'université.
### Informations sur l'étudiant ### Informations sur l'étudiant
#### Identité #### Identité
Type | Nom | Description | Exemple de valeur Type | Nom | Description | Exemple de valeur
----| --- | ---- | --- ----| --- | ---- | ---
| string * | etudid | id ScoDoc de l'étudiant | 'EID15219' | | string * | etudid | id ScoDoc de l'étudiant | 'EID15219' |
string | code_ine | | * string | code_ine | | *
string | code_nip | | * string | code_nip | | *
string | codepostaldomicile | | '75018' string | codepostaldomicile | | '75018'
| date_naissance | | * | date_naissance | | *
| annee_naissance | | '1947' | annee_naissance | | '1947'
| domicile | | * | domicile | | *
| email | | * | email | | *
| lieu_naissance | | * | lieu_naissance | | *
| nationalite | | * | nationalite | | *
| ne | "e" si étudiante, vide sinon | * | ne | "e" si étudiante, vide sinon | *
| nom | | 'FOURIER' | nom | | 'FOURIER'
| prenom | | 'JOSEPH' | prenom | | 'JOSEPH'
| sexe | | 'M.' | sexe | | 'M.'
| nomprenom | | 'M. Joseph Fourier' | nomprenom | | 'M. Joseph Fourier'
| paysdomicile | | * | paysdomicile | | *
| telephone | | * | telephone | | *
| telephonemobile | | * | telephonemobile | | *
| telephonemobilestr | | * | telephonemobilestr | | *
| telephonestr | | * | telephonestr | | *
| typeadresse | | 'domicile' | typeadresse | | 'domicile'
| villedomicile | | * | villedomicile | | *
| villelycee | | | villelycee | |
#### Admission #### Admission
@ -172,37 +176,36 @@ Informations importées dans ScoDoc lors de la création de l'étudiant
(import des données d'admission): établissement d'origine, notes de (import des données d'admission): établissement d'origine, notes de
lycée, etc.) lycée, etc.)
Type | Nom | Description | Exemple de valeur Type | Nom | Description | Exemple de valeur
----| --- | ---- | --- ----| --- | ---- | ---
| bac | Série de bac | 'S' | bac | Série de bac | 'S'
| specialite | Spécialité de bac | 'SVT' | specialite | Spécialité de bac | 'SVT'
| math | note math antérieure (en terminale ou au bac ou ...) | * | math | note math antérieure (en terminale ou au bac ou ...) | *
| physique | note physique antérieure | * | physique | note physique antérieure | *
| francais | note francais (au bac en général) | * | francais | note francais (au bac en général) | *
| anglais | note anglais antérieure | * | anglais | note anglais antérieure | *
| annee_bac | année d'obtention du bac | '2010' | annee_bac | année d'obtention du bac | '2010'
| nomlycee | | * | nomlycee | | *
| codelycee | | * | codelycee | | *
| codepostallycee | | * | codepostallycee | | *
| qualite | note de qualité du dossier attribuée par le jury d'admission | * | qualite | note de qualité du dossier attribuée par le jury d'admission | *
| rang | rang de cet établissement dans les voeux du candidat (si applicable) | * | rang | rang de cet établissement dans les voeux du candidat (si applicable) | *
| rap | | "Pas d'informations sur les conditions d'admission." | rap | | "Pas d'informations sur les conditions d'admission."
| rapporteur | pseudo du collègue chargé de l'examen de ce dossier | * | rapporteur | pseudo du collègue chargé de l'examen de ce dossier | *
| score | Score calculé pour ce dossier à l'admission | * | score | Score calculé pour ce dossier à l'admission | *
| commentaire | Commentaire du jury d'admission| * | commentaire | Commentaire du jury d'admission| *
| decision | Décision du jury d'admission | 'ADMIS' | decision | Décision du jury d'admission | 'ADMIS'
| description | Comment l'étudiant a été inscrit | '(creation individuelle)' | description | Comment l'étudiant a été inscrit | '(creation individuelle)'
#### Inscription #### Inscription
Type | Nom | Description | Exemple de valeur Type | Nom | Description | Exemple de valeur
----| --- | ---- | --- ----| --- | ---- | ---
int | annee | | 2011 int | annee | | 2011
string | etatincursem | état (I=inscrit, D=démissionnaire) | 'I' string | etatincursem | état (I=inscrit, D=démissionnaire) | 'I'
string | inscription | | 'DUT GEII, semestre 1 FI (Mars 2011 - Jul 2011)' string | inscription | | 'DUT GEII, semestre 1 FI (Mars 2011 - Jul 2011)'
string | situation | | 'inscrit en DUT GEII, semestre 1 FI (Mars 2011 - Jul 2011) le 11/09/2011' string | situation | | 'inscrit en DUT GEII, semestre 1 FI (Mars 2011 - Jul 2011) le 11/09/2011'
string | statut | ? | * string | statut | ? | *
| descr_inscription | | 'Inscrit le 27/06/2011.' | descr_inscription | | 'Inscrit le 27/06/2011.'
En outre, les attributs `sems`, `cursem` et `ins` apportent des informations En outre, les attributs `sems`, `cursem` et `ins` apportent des informations
@ -220,142 +223,143 @@ Type | Nom | Description | Exemple de valeur
string | refcomp_specialite | code spécialité | "RT" string | refcomp_specialite | code spécialité | "RT"
string | refcomp_specialite_long| spécialité | "Réseaux et Télécommunications" string | refcomp_specialite_long| spécialité | "Réseaux et Télécommunications"
### Résultats (notes) de l'étudiant dans le semestre ### Résultats (notes) de l'étudiant dans le semestre
Quelques infos sur les résultats. Le détail des notes est dans la Quelques infos sur les résultats. Le détail des notes est dans la
liste `infos['ues']` et ses sous-listes imbriquées (modules, evaluation). liste `infos['ues']` et ses sous-listes imbriquées (modules, evaluation).
Type | Nom | Description | Exemple de valeur Type | Nom | Description | Exemple de valeur
----| --- | ---- | --- ----| --- | ---- | ---
string | moy_gen | moyenne générale de l'étudiant dans le semestre | '12.00' string | moy_gen | moyenne générale de l'étudiant dans le semestre | '12.00'
string | bonus_sport_culture | bonus appliqué | 0 string | bonus_sport_culture | bonus appliqué | 0
string | moy_max | moyenne max promo | '12.00' string | moy_max | moyenne max promo | '12.00'
string | moy_min | moyenne min promo | '10.00' string | moy_min | moyenne min promo | '10.00'
string | moy_moy | moyenne des moyennes promo | '11.00' string | moy_moy | moyenne des moyennes promo | '11.00'
int | nb_inscrits | nombre étudiants du semestre (incluant démissionnaires et défaillants) | 78 int | nb_inscrits | nombre étudiants du semestre (incluant démissionnaires et défaillants) | 78
int | nb_demissions | nombre de démissions dans le semestre | 3 int | nb_demissions | nombre de démissions dans le semestre | 3
int | nb_defaillants | nombre de défaillants dans le semestre | 2 int | nb_defaillants | nombre de défaillants dans le semestre | 2
int | nbabs | nombre de 1/2 journées d'absences | 0L int | nbabs | nombre de 1/2 journées d'absences | 0L
int | nbabsjust | idem, justifiées | 0L int | nbabsjust | idem, justifiées | 0L
string | rang | classement | '(attente)' string | rang | classement | '(attente)'
string | rang_txt | classement (avec titre) | 'Rang (attente) / 2' string | rang_txt | classement (avec titre) | 'Rang (attente) / 2'
list | ues | résultats dans les UE, voir ci-dessous | [ liste de dict ] list | ues | résultats dans les UE, voir ci-dessous | [ liste de dict ]
Chaque élément de la liste `ues` représente les résultats de Chaque élément de la liste `ues` représente les résultats de
l'étudiant dans une UE. l'étudiant dans une UE.
Type | Nom | Description | Exemple de valeur Type | Nom | Description | Exemple de valeur
----| --- | ---- | --- ----| --- | ---- | ---
string | acronyme | | 'UE 1' string | acronyme | | 'UE 1'
string | coef_ue_txt | Coefficient (chaîne) | '2' string | coef_ue_txt | Coefficient (chaîne) | '2'
string| cur_moy_ue_txt | Moyenne prise en compte pour cette UE | '12.00' string| cur_moy_ue_txt | Moyenne prise en compte pour cette UE | '12.00'
float | max | moyenne max promo | 12.0 float | max | moyenne max promo | 12.0
float | min | moyenne min promo | 10.0 float | min | moyenne min promo | 10.0
list | modules | détails notes dans les modules de l'UE | [ liste de dict] list | modules | détails notes dans les modules de l'UE | [ liste de dict]
list | modules_capitalized | | [] list | modules_capitalized | | []
float | moy | | 11.0 float | moy | | 11.0
string | moy_ue_txt | moyenne étudiant dans UE | '12.00' string | moy_ue_txt | moyenne étudiant dans UE | '12.00'
int | nb_moy | nombre de moyenens calculées dans cette UE (inscrits, sans démissionnaires ni défaillants) | 76 int | nb_moy | nombre de moyenens calculées dans cette UE (inscrits, sans démissionnaires ni défaillants) | 76
int | numero | rang tri UE | 1 int | numero | rang tri UE | 1
string | titre | | 'Formation Générale' string | titre | | 'Formation Générale'
int | type | code type UE | 0 int | type | code type UE | 0
string | ue_code | code dans programme formation | 'UCOD5' string | ue_code | code dans programme formation | 'UCOD5'
string | ue_descr_html | rang ou autre info à afficher | '(attente)/2' string | ue_descr_html | rang ou autre info à afficher | '(attente)/2'
string | ue_descr_txt | rang ou autre info à afficher | '(attente)/2' string | ue_descr_txt | rang ou autre info à afficher | '(attente)/2'
string | ue_id | id interne ScoDoc | 'UE14572' string | ue_id | id interne ScoDoc | 'UE14572'
dict | ue_status | statut de l'UE (voir ci-dessous)| { dict } dict | ue_status | statut de l'UE (voir ci-dessous)| { dict }
**Statut d'une UE (champ `ue_status`):** **Statut d'une UE (champ `ue_status`):**
Type | Nom | Description | Exemple de valeur Type | Nom | Description | Exemple de valeur
----| --- | ---- | --- ----| --- | ---- | ---
float | coef_ue | | 2.0 float | coef_ue | | 2.0
| coefs_bonus_gen | | [] | coefs_bonus_gen | | []
| cur_coef_ue | | 2.0 | cur_coef_ue | | 2.0
| cur_moy_ue | | 12.0 | cur_moy_ue | | 12.0
string | expr_diag | infos erreur calcul formule utilisateur | {} string | expr_diag | infos erreur calcul formule utilisateur | {}
bool | is_capitalized | est-elle capitalisée? | False bool | is_capitalized | est-elle capitalisée? | False
| moy | | 12.0 | moy | | 12.0
| nb_missing | | 1 | nb_missing | | 1
| nb_notes | | 1 | nb_notes | | 1
| notes_bonus_gen | | [] | notes_bonus_gen | | []
| sum_coefs | | 2.0 | sum_coefs | | 2.0
| was_capitalized | | False | was_capitalized | | False
**Résultats dans un module:** **Résultats dans un module:**
Type | Nom | Description | Exemple de valeur Type | Nom | Description | Exemple de valeur
----| --- | ---- | --- ----| --- | ---- | ---
| code | | * | code | | *
| code_html | | * | code_html | | *
| code_txt | | * | code_txt | | *
| computation_expr | | * | computation_expr | | *
| ens | | [] | ens | | []
| evaluations | | [] | evaluations | | []
| formsemestre_id | | 'SEM15176' | formsemestre_id | | 'SEM15176'
| mat | | {'titre': 'Mathématiques' } | mat | | {'titre': 'Mathématiques' }
| mod_coef_txt | | '2' | mod_coef_txt | | '2'
| mod_descr_txt | | "Module Fondamentaux d'algèbre et de trigonométrie, coef. 2 (Béatrice DUPONT)" | mod_descr_txt | | "Module Fondamentaux d'algèbre et de trigonométrie, coef. 2 (Béatrice DUPONT)"
| mod_eff | | 2 | mod_eff | | 2
| mod_moy_txt | | '12.00' | mod_moy_txt | | '12.00'
| mod_rang | | '(attente)' | mod_rang | | '(attente)'
| mod_rang_txt | | '(attente)/2' | mod_rang_txt | | '(attente)/2'
| module | | {voir plus loin} | module | | {voir plus loin}
| module_id | | 'MOD14576' | module_id | | 'MOD14576'
| moduleimpl_id | | 'MIP15178' | moduleimpl_id | | 'MIP15178'
| name | | 'Algèbre' | name | | 'Algèbre'
| responsable_id | id du responsable | 'dupont' | responsable_id | id du responsable | 'dupont'
| stats | statistiques sur les notes du module | `{'moy': 9.576, 'nb_missing': 2, 'max': 16.5, 'min': 0.0, 'nb_notes': 39, 'nb_valid_evals': 1}` | stats | statistiques sur les notes du module | `{'moy': 9.576, 'nb_missing': 2, 'max': 16.5, 'min': 0.0, 'nb_notes': 39, 'nb_valid_evals': 1}`
Le module (tel que décrit dans le programme de la formation) est représenté par: Le module (tel que décrit dans le programme de la formation) est représenté par:
Type | Nom | Description | Exemple de valeur Type | Nom | Description | Exemple de valeur
----| --- | ---- | --- ----| --- | ---- | ---
string | titre | | "Fondamentaux d'algèbre et de trigonométrie" string | titre | | "Fondamentaux d'algèbre et de trigonométrie"
string | abbrev | | 'Algèbre' string | abbrev | | 'Algèbre'
string | code | | 'M1' string | code | | 'M1'
float | coefficient | | 2.0 float | coefficient | | 2.0
| ects | | None | ects | | None
| formation_id | | 'FORM14570' | formation_id | | 'FORM14570'
| heures_cours | | 0.0 | heures_cours | | 0.0
| heures_td | | 30.0 | heures_td | | 30.0
| heures_tp | | 0.0 | heures_tp | | 0.0
| matiere_id | | 'MAT14574' | matiere_id | | 'MAT14574'
| module_id | | 'MOD14576' | module_id | | 'MOD14576'
| numero | | 10 | numero | | 10
| semestre_id | | 1 | semestre_id | | 1
| ue_id | | 'UE14572' | ue_id | | 'UE14572'
**Résultat dans une évaluation:** **Résultat dans une évaluation:**
Type | Nom | Description | Exemple de valeur Type | Nom | Description | Exemple de valeur
----| --- | ---- | --- ----| --- | ---- | ---
| coef_txt | | '1' | coef_txt | | '1'
| coefficient | | 1.0 | coefficient | | 1.0
| descrheure | | ' ? 08h00' | descrheure | | ' ? 08h00'
| description | | * | description | | *
| duree | | '2h' | duree | | '2h'
| etat | | { voir plus loin } | etat | | { voir plus loin }
| evaluation_id | | 'EVAL15226' | evaluation_id | | 'EVAL15226'
| evaluation_type | | 0 | evaluation_type | | 0
| heure_debut | | '08h00' | heure_debut | | '08h00'
| heure_fin | | '08h00' | heure_fin | | '08h00'
| jour | | '01/07/2011' | jour | | '01/07/2011'
| moduleimpl_id | | 'MIP15178' | moduleimpl_id | | 'MIP15178'
| name | | 'le 01/07/2011' | name | | 'le 01/07/2011'
| nb_abs | | 0 | nb_abs | | 0
| nb_att | | 0 | nb_att | | 0
| nb_inscrits | | 2 | nb_inscrits | | 2
| nb_neutre | | 0 | nb_neutre | | 0
| nb_notes | | 2 | nb_notes | | 2
| note_html | | '12.00' | note_html | | '12.00'
| note_max | | 20.0 | note_max | | 20.0
| note_txt | | '12.00' | note_txt | | '12.00'
| notes | | { voir plus loin } | notes | | { voir plus loin }
| publish_incomplete | | '0' | publish_incomplete | | '0'
| visibulletin | | '1' | visibulletin | | '1'
**Etat d'une évaluation:** **Etat d'une évaluation:**
@ -366,59 +370,59 @@ Le champ `etat` d'une évaluation est un dict donnant des informations sur les r
bool | evalattente | | False bool | evalattente | | False
bool | evalcomplete | | True bool | evalcomplete | | True
| evaluation_id | id interne | 15226 | evaluation_id | id interne | 15226
list | gr_incomplets | | [] list | gr_incomplets | | []
list | gr_moyennes | | [] list | gr_moyennes | | []
list | groups | liste des groupes | {} list | groups | liste des groupes | {}
datetime | last_modif | | datetime datetime | last_modif | | datetime
string | median | note médianne promo | '11.00' string | median | note médianne promo | '11.00'
string | moy | note moyenne promo | '11.00' string | moy | note moyenne promo | '11.00'
| nb_abs | nb étudiants absents | 0 | nb_abs | nb étudiants absents | 0
| nb_att | nb notes en attente | 0 | nb_att | nb notes en attente | 0
| nb_inscrits | nb inscrits à ce module | 2 | nb_inscrits | nb inscrits à ce module | 2
| nb_neutre | nb notes neutralisées | 0 | nb_neutre | nb notes neutralisées | 0
| nb_notes | nb notes saisies | 2 | nb_notes | nb notes saisies | 2
`gr_moyennes` est un dict: `gr_moyennes` est un dict:
Type | Nom | Description | Exemple de valeur Type | Nom | Description | Exemple de valeur
----| --- | ---- | --- ----| --- | ---- | ---
| gr_median | | '11.00' | gr_median | | '11.00'
| gr_moy | | '11.00' | gr_moy | | '11.00'
| gr_nb_att | | 0 | gr_nb_att | | 0
| gr_nb_notes | | 2 | gr_nb_notes | | 2
| group_id | | 'G24919' | group_id | | 'G24919'
| group_name | | None | group_name | | None
**Notes dans une évaluation:** **Notes dans une évaluation:**
Le champ `notes` dans une évaluation est un dictionnaire dont les clés sont les `etudids`, et les valeurs des dictionnaires donnant les informations sur la note de l'étudiant dans cette évaluation: Le champ `notes` dans une évaluation est un dictionnaire dont les clés sont les `etudids`, et les valeurs des dictionnaires donnant les informations sur la note de l'étudiant dans cette évaluation:
Type | Nom | Description | Exemple de valeur Type | Nom | Description | Exemple de valeur
----| --- | ---- | --- ----| --- | ---- | ---
string | comment | commentaire saisie note | * string | comment | commentaire saisie note | *
datetime | date | date de saisie | <mx.DateTime.DateTime object> datetime | date | date de saisie | <mx.DateTime.DateTime object>
string | etudid | | 'EID15214' string | etudid | | 'EID15214'
string | evaluation_id | | 'EVAL15226' string | evaluation_id | | 'EVAL15226'
string | uid | utilisateur ayant saisi la note | 'admin' string | uid | utilisateur ayant saisi la note | 'admin'
float | value | valeur de la note (sur 20) | 10.0 float | value | valeur de la note (sur 20) | 10.0
### Décisions de jury et autres informations ### Décisions de jury et autres informations
Type | Nom | Description | Exemple de valeur Type | Nom | Description | Exemple de valeur
----| --- | ---- | --- ----| --- | ---- | ---
| decision_sem | | None ou dict | decision_sem | | None ou dict
string | decision_jury | décision du jury en clair (présent seulement si décision saisie) | 'Validé' string | decision_jury | décision du jury en clair (présent seulement si décision saisie) | 'Validé'
list | appreciations | | [] list | appreciations | | []
list | appreciations_list | | [] list | appreciations_list | | []
list | appreciations_txt | | [] list | appreciations_txt | | []
string | mention | texte de la mention calculée | 'Très bien' string | mention | texte de la mention calculée | 'Très bien'
| filigranne | texte en surimpression | 'Provisoire' | filigranne | texte en surimpression | 'Provisoire'
## Note: la fonction log ## Note: la fonction log
Pour la mise au point, il peut être utile de recourir à la bonne vieille Pour la mise au point, il peut être utile de recourir à la bonne vieille
fonction log, qui envoie du texte dans le fichier de log courant, normalement fonction log, qui envoie du texte dans le fichier de log courant, normalement

View File

@ -46,8 +46,8 @@ inférieure à zéro), elle est ramenée à 20 (ou à zéro).
- La valeur saisie peut être négative (et donnera alors un bonus); - La valeur saisie peut être négative (et donnera alors un bonus);
l'affichage est mis à jour en conséquence. C'est donc la possibilité l'affichage est mis à jour en conséquence. C'est donc la possibilité
d'inclure un bonus donc la valeur n'est pas calculée par la formule d'inclure un bonus dont la valeur n'est pas calculée par la formule
configurée (cf. [Intégration de la formule](#intégration-de-la-formule)). configurée (cf. [Intégration de la règle de calcul](#integration-de-la-regle-de-calcul)).
## Comparatif bonus/malus ## Comparatif bonus/malus
@ -59,7 +59,7 @@ les modules de malus.
| **Structure** | UE Spécifique et modules (type standard) attachés | Module spécifique (type malus) | | **Structure** | UE Spécifique et modules (type standard) attachés | Module spécifique (type malus) |
| **Valeur du bonus/malus** | Calculé à partir d'une note | Saisie directe | | **Valeur du bonus/malus** | Calculé à partir d'une note | Saisie directe |
| **Application sur toutes les UE** | Automatique | Autant de modules que d'UE modifiées | | **Application sur toutes les UE** | Automatique | Autant de modules que d'UE modifiées |
| **Application sur une seule UE** | Impossible | Un module par UE modifiée | | | **Application sur une seule UE** | Impossible | Un module par UE modifiée |
| **Modification** | Bonus seulement | Malus ou Bonus | | **Modification** | Bonus seulement | Malus ou Bonus |
| **Affichage** | Affichage du bonus et du détail | Affichage du bonus/malus seulement | | **Affichage** | Affichage du bonus et du détail | Affichage du bonus/malus seulement |
| **Cumul de plusieurs modificateurs** | voir [les remarques](#remarques) | Déclarer une évaluation par type de modif. | | **Cumul de plusieurs modificateurs** | voir [les remarques](#remarques) | Déclarer une évaluation par type de modif. |
@ -88,7 +88,7 @@ Si l'établissement n'apparaît pas:
modificateur (après un calcul préalable hors scodoc) modificateur (après un calcul préalable hors scodoc)
2. Vous pouvez demander la création de la formule spécifique à votre 2. Vous pouvez demander la création de la formule spécifique à votre
établissement sur le serveur discord en précisant: établissement sur le serveur Discord (voir [contacts](Contact.md)) en précisant:
- Le nom de votre établissement, - Le nom de votre établissement,
- l'extrait du règlement intérieur qui décrit cette bonification, (celui ci - l'extrait du règlement intérieur qui décrit cette bonification, (celui ci
apparaîtra dans l'encadré explicatif) apparaîtra dans l'encadré explicatif)
@ -172,7 +172,7 @@ Dans tous les cas de figure, l'objectif est d'inscrire aux modules de
bonus/malus au moins les étudiants qui en bénéficient. On a deux stratégies bonus/malus au moins les étudiants qui en bénéficient. On a deux stratégies
possibles: possibles:
1. Inscription de tous les étudiants du semestre (inscription générale) 1. Inscription de tous les étudiants du semestre (inscription générale)
et attribuer la note `EXC`aux étudiants non concernés. Stratégie à et attribuer la note `EXC`aux étudiants non concernés. Stratégie à
éviter pour le bonus sport/culture afin d'éviter l'affichage d'une éviter pour le bonus sport/culture afin d'éviter l'affichage d'une
section bonus vide dans les bulletins des étudiants non concernés. section bonus vide dans les bulletins des étudiants non concernés.

View File

@ -17,11 +17,6 @@ L'avenir du logiciel dépend donc de vous: adhérez, ou incitez votre institutio
## Utilisation de ScoDoc ## Utilisation de ScoDoc
### Comment prendre en compte les notes de sport ou autres bonus/malus ?
Voir [la page dédiée](BonusMalus.md), ou bien pour les bonus sport
[le tutoriel vidéo par Cédric C.](https://www.youtube.com/watch?v=SVbjuDpq-lI&list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1&index=13).
### Qui peut voir les notes, et quand ? ### Qui peut voir les notes, et quand ?
Tous les collègues (enseignants et administratifs) pouvant accéder au Tous les collègues (enseignants et administratifs) pouvant accéder au
@ -38,26 +33,21 @@ affichage sur leur ENT en général, cet affichage pouvant être désactivé dep
ScoDoc pour un semestre particulier). A défaut, il faut leur envoyer leurs ScoDoc pour un semestre particulier). A défaut, il faut leur envoyer leurs
bulletins par mail. bulletins par mail.
### Comment supprimer une évaluation ? ### Comment les étudiants peuvent-ils accéder aux résultats ?
1. Supprimer toutes les notes saisies dans cette évaluation, s'il y en a: passer Les **étudiants n'ont pas accès à ScoDoc**, mais un composant "satellite",
par la page "Saisie des notes" et suivre le lien "Effacer toutes les notes de installé séparément peut fournir à chacun ses résultats (bulletins de notes,
cette évaluation". absences): il s'agit de [la passerelle développée par Sébastien Lehman](https://github.com/SebL68/Scodoc_Notes).
2. Lorsqu'il n'y a plus de notes, une croix rouge apparait sur le tableau de ### Comment signaler un problème ?
bord du module: cliquer dessus pour supprimer l'évaluation.
Nous vous remercions de nous signaler tous les problèmes que vous rencontrez:
erreurs, comportement bizarre ou malcommode. Nous ne promettons pas de les
régler rapidement, ni même plus tard: le logiciel est fourni sans aucune
garantie. Mais nous faisons de notre mieux: joindre le canal Discord
Assistance (voir [Contact](Contact.md))
### En IUT, comment gérer les licences professionnelles ? ## La gestion des étudiants
* On peut créer un département regroupant les licences, ou bien rattacher
chaque licence à un département existant. Cette dernière solution est
préférable si des étudiants de DUT poursuivent en licence (ainsi, on a
automatiquement accès à leur parcours complet).
* La plupart des licences pro durent un an, mais sont gérées comme un seul
semestre (pas de jury à mi-parcours). Indiquer "*pas de semestre*" dans
l'option "*Semestre dans la formation*" (page "*modification du semestre*").
### Comment gérer les étudiants les démissionnaires ? ### Comment gérer les étudiants les démissionnaires ?
@ -81,12 +71,84 @@ Ou bien au niveau de son inscription dans un semestre, via le menu *Scolarité*:
abandonne en tout début d'année (il ne sera alors pas compté dans les abandonne en tout début d'année (il ne sera alors pas compté dans les
inscrits). inscrits).
## Les notes
### Comment prendre en compte les notes de sport ou autres bonus/malus ?
Voir [la page dédiée](BonusMalus.md), ou bien pour les bonus sport
[le tutoriel vidéo par Cédric C.](https://www.youtube.com/watch?v=SVbjuDpq-lI&list=PLw49h6RbvswhasBk9bXj7PzOD8GDW3kG1&index=13).
### Comment supprimer une évaluation ?
1. Supprimer toutes les notes saisies dans cette évaluation, s'il y en a: passer
par la page "Saisie des notes" et suivre le lien "Effacer toutes les notes de
cette évaluation".
2. Lorsqu'il n'y a plus de notes, une croix rouge apparait sur le tableau de
bord du module: cliquer dessus pour supprimer l'évaluation.
## Les formations
### Quelles formations peuvent être gérées par ScoDoc
Toutes les formations notées peuvent bénéficier de ScoDoc.
De nombreuses fonctions spécialisées sont consacrées au Bachelor Universitaire
de technologie et son approche par compétences (APC) particulière.
ScoDoc est utilisé pour de nombreuses licences professionnelles, masters,
formations d'ingénieurs.
### En IUT, comment gérer les licences professionnelles ?
* On peut créer un département regroupant les licences, ou bien rattacher
chaque licence à un département existant. Cette dernière solution est
préférable si des étudiants de DUT poursuivent en licence (ainsi, on a
automatiquement accès à leur parcours complet).
* La plupart des licences pro durent un an, mais sont gérées comme un seul
semestre (pas de jury à mi-parcours). Indiquer "*pas de semestre*" dans
l'option "*Semestre dans la formation*" (page "*modification du semestre*").
## Les jurys
### Les ECTS ne s'affichent pas ### Les ECTS ne s'affichent pas
Les ECTS sont attribués (ou pas) au moment de la saisie de la décision de jury Les ECTS sont attribués (ou pas) au moment de la saisie de la décision de jury
sur les UEs. Avant le jury, l'étudiant n'a jamais d'ECTS, quelles que soient ses sur les UEs. Avant le jury, l'étudiant n'a jamais d'ECTS, quelles que soient ses
notes. notes.
### Comment identifier les ECTS ?
Les ECTS sont toujours liés aux Unités d'Enseignement (UE). Toute validation
d'UE apporte à l'étudiant son quota d'ECTS. Cette quantité est définie dans le
programme de la formation.
Les UEs peuvent être validées par le jury d'un semestre: le compte est affiché
sur une colonne à droite du tableau **Jury / Voir les décisions de jury**.
### L'étudiant n'est pas diplômé
Vérifiez qu'il a bien obtenu tous ces ECTS.
Si ce n'est pas le cas, vérifiez qu'il a bien validé toutes les UEs de son
parcours de formation (BUT), ou un nombre suffisant de celles ci.
### Comment voir toutes les validations de jury d'un étudiant ?
Dans certains cas, on souhaite vérifier tout le détail des validations de jury
enregistrées pour un étudiant. Pour cela, aller sur sa fiche et suivre le lien
*Éditer toutes décisions de jury*. Vous aurez le détail de tous les éléments
validés (UE, RCUEs du BUT, semestres des formations LMD, années du BUT, ...) et
pourrez même les supprimer une à une (si vous disposez des droits d'accès nécessaires.)
Voir aussi [guide du responsable de formation](GuideAdminFormation.md#jurys)
et [les jurys de BUT](BUTJurys.md).
## Administration système
### Mes données sont erronées, que faire ? ### Mes données sont erronées, que faire ?
En cas de problème (bug, erreur de manipulation, suspicion de piratage), En cas de problème (bug, erreur de manipulation, suspicion de piratage),
@ -105,20 +167,6 @@ Les utilisateurs autorisés peuvent facilement voir:
Les administrateurs (informaticiens) peuvent aussi consulter les journaux (logs) Les administrateurs (informaticiens) peuvent aussi consulter les journaux (logs)
du serveur, voir ["où sont les journaux"](#ou-sont-les-journaux-logs). du serveur, voir ["où sont les journaux"](#ou-sont-les-journaux-logs).
### Comment signaler un problème ?
Nous vous remercions de nous signaler tous les problèmes que vous rencontrez:
erreurs, comportement bizarre ou malcommode. Nous ne promettons pas de les
régler rapidement, ni même plus tard: le logiciel est fourni sans aucune
garantie. Mais nous faisons de notre mieux:
* si vous êtes utilisateurs, écrire à
[notes@listes.univ-paris13.fr](mailto:notes@listes.univ-paris13.fr).
ou joindre le canal Discord Assistance.
* si vous êtes informaticien et voulez évoquer un problème technique
(développement, installation), écrire à
[scodoc-devel@listes.univ-paris13.fr](mailto:scodoc-devel@listes.univ-paris13.fr).
## Configuration ## Configuration

View File

@ -240,110 +240,150 @@ permet de rechercher une entrée à partir du résultat attendu.
</div> </div>
</div> </div>
(carte générée avec `flask gen-api-map -e "api."`)
### Tableau récapitulatif des entrées de l'API ### Tableau récapitulatif des entrées de l'API
Ce tableau est trié selon le type des informations renvoyées: | Route | Méthode | Permission |
|---|---|---|
| [assiduite](#assiduite) | GET | ScoView |
| [assiduite_create](#assiduite-create) | POST | AbsChange |
| [assiduite_delete](#assiduite-delete) | POST | AbsChange |
| [assiduite_edit](#assiduite-edit) | POST | AbsChange |
| [assiduite_justificatifs](#assiduite-justificatifs) | GET | ScoView |
| [assiduites](#assiduites-query) | GET | ScoView |
| [assiduites_count](#assiduites-count-query) | GET | ScoView |
| [assiduites_create](#assiduites-create) | POST | AbsChange |
| [assiduites_edit](#assiduites-edit) | POST | AbsChange |
| [assiduites_evaluations](#assiduites-evaluations) | GET | ScoView |
| [assiduites_formsemestre](#assiduites-formsemestre-query) | GET | ScoView |
| [assiduites_formsemestre_count](#assiduites-formsemestre-count-query) | GET | ScoView |
| [assiduites_group](#assiduites-group-query) | GET | ScoView |
| [autorisation_inscription_delete](#autorisation-inscription-delete) | POST | EtudInscrit |
| [billets_absence_create](#billets-absence-create) | POST | Aucune permission requise |
| [billets_absence_delete](#billets-absence-delete) | POST | Aucune permission requise |
| [billets_absence_etudiant](#billets-absence-etudiant) | GET | Aucune permission requise |
| [bulletin](#bulletin) | GET | ScoView |
| [bulletins](#bulletins) | GET | ScoView |
| [decisions_jury](#decisions-jury) | GET | ScoView |
| [departement_by_acronym](#departement-by-acronym) | GET | ScoView |
| [departement_by_id](#departement-by-id) | GET | ScoView |
| [departement_create](#departement-create) | POST | ScoSuperAdmin |
| [departement_delete](#departement-delete) | POST | ScoSuperAdmin |
| [departement_edit](#departement-edit) | POST | ScoSuperAdmin |
| [departement_etudiants](#departement-etudiants) | GET | ScoView |
| [departement_etudiants_by_id](#departement-etudiants-by-id) | GET | ScoView |
| [departement_formsemestres_courants](#departement-formsemestres-courants-query) | GET | ScoView |
| [departement_formsemestres_ids](#departement-formsemestres-ids) | GET | ScoView |
| [departement_formsemestres_ids_by_id](#departement-formsemestres-ids-by-id) | GET | ScoView |
| [departements_ids](#departements-ids) | GET | ScoView |
| [departements_list](#departements-list) | GET | ScoView |
| [etudiant](#etudiant) | GET | ScoView |
| [etudiant_annotation](#etudiant-annotation) | POST | EtudInscrit |
| [etudiant_annotation_delete](#etudiant-annotation-delete) | POST | EtudInscrit |
| [etudiant_create](#etudiant-create) | POST | EtudInscrit |
| [etudiant_edit](#etudiant-edit) | POST | EtudInscrit |
| [etudiant_formsemestres](#etudiant-formsemestres) | GET | ScoView |
| [etudiant_get_photo_image](#etudiant-get-photo-image-query) | GET | ScoView |
| [etudiant_groups](#etudiant-groups) | GET | ScoView |
| [etudiants](#etudiants) | GET | ScoView |
| [etudiants_by_name](#etudiants-by-name) | GET | ScoView |
| [etudiants_courants](#etudiants-courants-query) | GET | ScoView |
| [evaluation_assiduites](#evaluation-assiduites) | GET | ScoView |
| [evaluation_create](#evaluation-create) | POST | EnsView |
| [evaluation_delete](#evaluation-delete) | POST | EnsView |
| [evaluation_notes](#evaluation-notes) | GET | ScoView |
| [evaluation_set_notes](#evaluation-set-notes) | POST | EnsView |
| [formation_by_id](#formation-by-id) | GET | ScoView |
| [formation_export_by_formation_id](#formation-export-by-formation-id) | GET | ScoView |
| [formation_module_edit](#formation-module-edit) | POST | EditFormation |
| [formation_module_get](#formation-module-get) | GET | ScoView |
| [formation_module_set_code_apogee](#formation-module-set-code-apogee) | POST | EditFormation |
| [formations](#formations) | GET | ScoView |
| [formations_ids](#formations-ids) | GET | ScoView |
| [formsemestre_edit](#formsemestre-edit) | POST | EditFormSemestre |
| [formsemestre_edt](#formsemestre-edt-query) | GET | ScoView |
| [formsemestre_etat_evaluations](#formsemestre-etat-evaluations) | GET | ScoView |
| [formsemestre_etudiants](#formsemestre-etudiants-query) | GET | ScoView |
| [formsemestre_infos](#formsemestre-infos) | GET | ScoView |
| [formsemestre_partitions](#formsemestre-partitions) | GET | ScoView |
| [formsemestre_programme](#formsemestre-programme) | GET | ScoView |
| [formsemestre_resultat](#formsemestre-resultat-query) | GET | ScoView |
| [formsemestre_set_apo_etapes](#formsemestre-set-apo-etapes) | POST | EditApogee |
| [formsemestre_set_elt_annee_apo](#formsemestre-set-elt-annee-apo) | POST | EditApogee |
| [formsemestre_set_elt_passage_apo](#formsemestre-set-elt-passage-apo) | POST | EditApogee |
| [formsemestre_set_elt_sem_apo](#formsemestre-set-elt-sem-apo) | POST | EditApogee |
| [formsemestre_set_partitions_order](#formsemestre-set-partitions-order) | POST | ScoView |
| [formsemestres_query](#formsemestres-query) | GET | ScoView |
| [group_create](#group-create) | POST | ScoView |
| [group_delete](#group-delete) | POST | ScoView |
| [group_edit](#group-edit) | POST | ScoView |
| [group_etudiants](#group-etudiants) | GET | ScoView |
| [group_etudiants_query](#group-etudiants-query) | GET | ScoView |
| [group_remove_etud](#group-remove-etud) | POST | ScoView |
| [group_set_edt_id](#group-set-edt-id) | POST | ScoView |
| [group_set_etudiant](#group-set-etudiant) | POST | ScoView |
| [groups_get_auto_assignment](#groups-get-auto-assignment) | GET | ScoView |
| [groups_save_auto_assignment](#groups-save-auto-assignment) | POST | ScoView |
| [justif_create](#justif-create) | POST | AbsChange |
| [justif_delete](#justif-delete) | POST | AbsChange |
| [justif_edit](#justif-edit) | POST | AbsChange |
| [justif_export](#justif-export) | POST | ScoView |
| [justif_import](#justif-import) | POST | AbsChange |
| [justif_justifies](#justif-justifies) | GET | AbsChange |
| [justif_list](#justif-list) | GET | ScoView |
| [justif_remove](#justif-remove) | POST | AbsChange |
| [justificatif](#justificatif) | GET | ScoView |
| [justificatifs](#justificatifs-query) | GET | ScoView |
| [justificatifs_dept](#justificatifs-dept-query) | GET | ScoView |
| [justificatifs_formsemestre](#justificatifs-formsemestre-query) | GET | ScoView |
| [logo_get_global](#logo-get-global) | GET | ScoSuperAdmin |
| [logo_get_local_by_acronym](#logo-get-local-by-acronym) | GET | ScoSuperAdmin |
| [logo_get_local_by_id](#logo-get-local-by-id) | GET | ScoSuperAdmin |
| [logo_get_local_dept_by_acronym](#logo-get-local-dept-by-acronym) | GET | ScoSuperAdmin |
| [logo_get_local_dept_by_id](#logo-get-local-dept-by-id) | GET | ScoSuperAdmin |
| [logo_list_globals](#logo-list-globals) | GET | ScoSuperAdmin |
| [moduleimpl_evaluations](#moduleimpl-evaluations) | GET | ScoView |
| [moduleimpl_inscriptions](#moduleimpl-inscriptions) | GET | ScoView |
| [moduleimpl_notes](#moduleimpl-notes) | GET | ScoView |
| [partition_create](#partition-create) | POST | ScoView |
| [partition_delete](#partition-delete) | POST | ScoView |
| [partition_edit](#partition-edit) | POST | ScoView |
| [partition_info](#partition-info) | GET | ScoView |
| [partition_order_groups](#partition-order-groups) | POST | ScoView |
| [partition_remove_etud](#partition-remove-etud) | POST | ScoView |
| [permissions_list](#permissions-list) | GET | UsersView |
| [referentiel_competences](#referentiel-competences) | GET | ScoView |
| [role_create](#role-create) | POST | ScoSuperAdmin |
| [role_delete](#role-delete) | POST | ScoSuperAdmin |
| [role_edit](#role-edit) | POST | ScoSuperAdmin |
| [role_get](#role-get) | GET | UsersView |
| [role_permission_add](#role-permission-add) | POST | ScoSuperAdmin |
| [role_permission_remove](#role-permission-remove) | POST | ScoSuperAdmin |
| [roles_list](#roles-list) | GET | UsersView |
| [token_get](#token-get) | POST | Aucune permission requise |
| [ue_assoc_niveau](#ue-assoc-niveau) | POST | EditFormation |
| [ue_desassoc_niveau](#ue-desassoc-niveau) | POST | EditFormation |
| [ue_edit](#ue-edit) | POST | EditFormation |
| [ue_set_code_apogee](#ue-set-code-apogee) | POST | EditFormation |
| [ue_set_code_apogee_rcue](#ue-set-code-apogee-rcue) | POST | EditFormation |
| [ue_set_parcours](#ue-set-parcours) | POST | EditFormation |
| [user_create](#user-create) | POST | UsersAdmin |
| [user_edit](#user-edit) | POST | UsersAdmin |
| [user_info](#user-info) | GET | UsersView |
| [user_password](#user-password) | POST | UsersAdmin |
| [user_role_add](#user-role-add) | POST | ScoSuperAdmin |
| [user_role_remove](#user-role-remove) | POST | ScoSuperAdmin |
| [users_info_query](#users-info-query) | GET | ScoView |
| [validation_annee_but_delete](#validation-annee-but-delete) | POST | EtudInscrit |
| [validation_dut120_delete](#validation-dut120-delete) | POST | EtudInscrit |
| [validation_formsemestre_delete](#validation-formsemestre-delete) | POST | ScoView |
| [validation_rcue_delete](#validation-rcue-delete) | POST | EtudInscrit |
| [validation_rcue_record](#validation-rcue-record) | POST | EtudInscrit |
| [validation_ue_delete](#validation-ue-delete) | POST | ScoView |
* un nom simple représente un seul objet de ce type; (table générée avec `flask gen-api-map -e "api."`)
* suivi de `+`désigne une forme 'longue' d'objet de ce type;
* suivi de `*` désigne une liste de 0, 1 ou plusieurs objets du type;
* suivi de `#` désigne une liste d'entiers (les ids des objets du type);
* suivi de `:` puis d'un nom en majuscule indique une requête (POST) qui modifie
les données de ScoDoc.
| Retour | Remarque | Méthode | Navigation | Permission |
|:------------------------|:----------------------------------------|---------|---------------------------------------------------------------------------|---------------------|
| 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 formsemestre | GET | [assiduités-formsemestre](#assiduites-formsemestre) | 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) | AbsChange |
| assiduite:EDIT | édition d'assiduité | POST | [assiduite-edit](#assiduite-edit) | AbsChange |
| assiduite:DELETE | suppression d'assiduité | POST | [assiduite-delete](#assiduite-delete) | AbsChange |
| justificatif | un justificatif | GET | [justificatif](#justificatif) | ScoView |
| justificatif**`*`** | liste de justificatif d'un étudiant | GET | [justificatifs](#justificatifs) | ScoView |
| justificatif:CREATE | création de justificatif | POST | [justificatif-create](#justificatif-create) | AbsChange |
| justificatif:EDIT | édition de justificatif | POST | [justificatif-edit](#justificatif-edit) | AbsChange |
| justificatif:DELETE | suppression de justificatif | POST | [justificatif-delete](#justificatif-delete) | AbsChange |
| justificatif:IMPORT | importation de fichier justificatif | POST | [justificatif-import](#justificatif-import) | AbsChange |
| justificatif:EXPORT | exportation de fichier justificatif | POST | [justificatif-export](#justificatif-export) | AbsChange |
| justificatif:REMOVE | suppression de fichier justificatif | POST | [justificatif-remove](#justificatif-remove) | AbsChange |
| departement**`*`** | tous les depts | GET | [departements](#departements) | |
| departement**`#`** | tous les ids des depts | GET | [departements-ids](#departements-ids) | ScoView |
| departement | recherche par id | GET | [departement](#departement) | ScoView |
| departement | recherche par acronyme | GET | [departement](#departement) | ScoView |
| 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: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**`#`** | ids des formations accessibles | GET | [formations-ids](#formations-ids) | ScoView |
| formation | une formation | GET | [formation](#formation) | ScoView |
| export | | GET | [formation-export](#formation-export) | ScoView |
| export**`+`** | | GET | [formation-export_with_ids](#formation-export_with_ids) | ScoView |
| referentiel_competences | | GET | [formation-referenciel_competences](#formation-referenciel_competences) | ScoView |
| formsemestre**`#`** | | GET | [departement-formsemestres_ids](#departement-formsemestres_ids) | ScoView |
| formsemestre**`*`** | | GET | [departement-formsemestres_courants](#departement-formsemestres_courants) | ScoView |
| formsemestre**`*`** | | GET | [formsemestre-query](#formsemestre-query) | ScoView |
| formsemestre:EDIT | | POST | [formsemestre-edit](#formsemestre-edit) | EditFormSemestre |
| formsemestre**`*`** | | GET | [etudiant-formsemestres](#etudiant-formsemestres) | ScoView |
| formsemestre | | GET | [formsemestre](#formsemestre) | ScoView |
| moduleimpl | | GET | [moduleimpl](#moduleimpl) | ScoView |
| moduleimpl-inscriptions | | GET | [moduleimpl](#moduleimpl-inscriptions) | ScoView |
| partition**`*`** | | GET | [formsemestre-partitions](#formsemestre-partitions) | ScoView |
| partition | | GET | [partition](#partition) | ScoView |
| partition:CREATE | | POST | [formsemestre-partition-create](#formsemestre-partition-create) | EtudChangeGroups |
| partition:EDIT | | POST | [partition-edit](#partition-edit) | EtudChangeGroups |
| partition:ACTION | | POST | [formsemestre-partitions-order](#formsemestre-partitions-order) | EtudChangeGroups |
| partition:DELETE | | POST | [partition-delete](#partition-delete) | EtudChangeGroups |
| partition:ACTION | | POST | [partition-remove_etudiant](#partition-remove_etudiant) | EtudChangeGroups |
| group:CREATE | | POST | [partition-group-create](#partition-group-create) | EtudChangeGroups |
| group:EDIT | | POST | [group-edit](#group-edit) | EtudChangeGroups |
| group:ACTION | | POST | [partition-groups-order](#partition-groups-order) | EtudChangeGroups |
| group:DELETE | | POST | [group-delete](#group-delete) | EtudChangeGroups |
| group* | | GET | [etudiant-formsemestre-groups](#etudiant-formsemestre-groups) | ScoView |
| group:ACTION | | POST | [group-set_etudiant](#group-set_etudiant) | EtudChangeGroups |
| group:ACTION | | POST | [group-remove_etudiant](#group-remove_etudiant) | EtudChangeGroups |
| etudiant**`*`** | recherche par etudid, nip ou ine | GET | [etudiants-clef](#etudiants-clef) | ScoView |
| etudiant**`*`** | les étudiants actuels | GET | [etudiants-courant](#etudiants-courant) | ScoView |
| etudiant**`*`** | étudiants dont le nom commence par | GET | [etudiants-name](#etudiants-name) | ScoView |
| etudiant**`*`** | | GET | [departement-etudiants](#departement-etudiants) | ScoView |
| etudiant**`*`** | | GET | [formsemestre-etudiants](#formsemestre-etudiants) | ScoView |
| etudiant**`*`** | | GET | [formsemestre-etudiants-query](#formsemestre-etudiants-query) | ScoView |
| etudiant**`*`** | | GET | [group-etudiants-query](#group-etudiants) | ScoView |
| etudiant**`*`** | | GET | [group-etudiants-query](#group-etudiants-query) |
| etudiant | | GET | [etudiant](#etudiant) | ScoView |
| etudiant:CREATE | | GET | [etudiant-create](#etudiant-create) | EtudInscrit |
| etudiant:EDIT | | GET | [etudiant-edit](#etudiant-edit) | EtudInscrit |
| bulletin**`*`** | | GET | [formsemestre-bulletin](#formsemestre-bulletin) | ScoView |
| bulletin | | GET | [etudiant-formsemestre-bulletin](#etudiant-formsemestre-bulletin) | ScoView |
| programme | | GET | [formsemestre-programme](#formsemestre-programme) | ScoView |
| | | GET | [formsemestre-etat_evals](#formsemestre-etat_evals) | ScoView |
| | | GET | [formsemestre-resultats](#formsemestre-resultats) | ScoView |
| jury | | GET | [formsemestre-decisions_jury](#formsemestre-decisions_jury) | ScoView |
| note* | | GET | [evaluation-notes](#evaluation-notes) | ScoView |
| | | GET | [evaluation-notes-set](#evaluation-notes-set) | (contextuelle) |
| logo**`*`** | | GET | [logos](#logos) | ScoSuperAdmin |
| logo**`*`** | | GET | [departement-logos](#departement-logos) | ScoSuperAdmin |
| logo | | GET | [logo](#logo) | ScoSuperAdmin |
| logo | | GET | [departement-logo](#departement-logo) | ScoSuperAdmin |
| user | | GET | [user](#user) | UsersView |
| user**`*`** | | GET | [users-query](#users-query) | UsersView |
| user:CREATE | | POST | [user-create](#user-create) | UsersAdmin |
| user:EDIT | | POST | [user-edit](#user-edit) | UsersAdmin |
| user:PASSWORD | change le mot de passe d'un utilisateur | POST | [user-password](#user-password) | UsersAdmin |
| user:ACTION | | POST | [user-role-add](#user-role-add) | UsersAdmin |
| user:ACTION | | POST | [user-role-remove](#user-role-remove) | UsersAdmin |
| permission**`*`** | | GET | [permissions](#permissions) | UsersView |
| role**`*`** | | GET | [roles](#roles) | UsersView |
| role**`*`** | | GET | [role](#role) | UsersView |
| role:ACTION | | POST | [role-add_permission](#role-add_permission) | UsersAdmin |
| role:ACTION | | POST | [role-remove_permission](#role-remove_permission) | UsersAdmin |
| role:CREATE | | POST | [role-create](#role-create) | UsersAdmin |
| role:EDIT | | POST | [role-edit](#role-edit) | UsersAdmin |
| role:DELETE | | POST | [role-delete](#role-delete) | UsersAdmin |
#### Note sur les exemples d'utilisation #### Note sur les exemples d'utilisation
@ -838,6 +878,63 @@ Note: les poids ne sont utilisés que dans les formations APC (BUT).
* **Résultat:** Description de la formation. * **Résultat:** Description de la formation.
* **Exemple de résultat:** [formation.json](samples/sample_formation.json.md) * **Exemple de résultat:** [formation.json](samples/sample_formation.json.md)
#### **`module-edit`**
* **Méthode:** POST
* **Permission: `EditFormation`**
* **Paramètres:** `module_id`
* **Data:**
```json
{
"titre" : str,
"abbrev" : str,
"code"
"heures_cours" : float,
"heures_td" : float,
"heures_tp" : float,
"coefficient" : float,
"ects" : float,
"matiere_id" : int, // must be in same UE
"semestre_id" : int, // le rang du semestre (S1, ...)
"numero" : int, // ordre d'affichage
"code_apogee" : str,
"edt_id" : str,
"module_type" : int, // 0 std, 1 malus, 2 ressource, 3 SAÉ
"parcours" : [ id de parcours ],
}
```
* **Routes:** `/formation/module/<int:module_id>/edit`
* **Résultat:** le module modifié.
#### **`ue-edit`**
* **Méthode:** POST
* **Permission: `EditFormation`**
* **Paramètres:** `ue_id`
* **Data:**
```json
{
"acronyme" : str,
"numero" : int, // ordre d'affichage
"titre" : str,
"semestre_idx" : int, // le rang du semestre (S1, ...)
"type": int, // 0 std, 1 bonus sport, 2 projet&stage (old LP)
"ue_code" : str,
"ects" : float,
"is_external" : bool, // true pour externes
"code_apogee" : str,
"code_apogee_rcue" : str,
"coef_rcue" : float,
"coefficient" : float, // si option use_ue_coefs
"ects" : float,
"matiere_id" : int, // must be in same UE
}
```
* **Routes:** `/formation/ue/<int:ue_id>/edit`
* **Résultat:** l'UE modifiée.
### **API Formsemestre** ### **API Formsemestre**
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`.
@ -1282,7 +1379,7 @@ utilisateur pourra être associé à un ou plusieurs rôles dans chaque départe
(ainsi, il ou elle peut enseigner dans un département et être administrateur (ainsi, il ou elle peut enseigner dans un département et être administrateur
d'un autre). d'un autre).
#### **roles** #### **list-roles**
* **Méthode:** GET * **Méthode:** GET
* **Permission: `UsersView`** * **Permission: `UsersView`**
@ -1291,7 +1388,7 @@ d'un autre).
* **Résultat:** Liste de tous les rôles. * **Résultat:** Liste de tous les rôles.
* **Exemple de résultat:** [roles.json](samples/sample_roles.json.md) * **Exemple de résultat:** [roles.json](samples/sample_roles.json.md)
#### **role** #### **list-role**
* **Méthode:** GET * **Méthode:** GET
* **Permission: `UsersView`** * **Permission: `UsersView`**
@ -1300,7 +1397,7 @@ d'un autre).
* **Résultat:** Liste le rôle indiqué. 404 si inexistant. * **Résultat:** Liste le rôle indiqué. 404 si inexistant.
* **Exemple de résultat:** [role.json](samples/sample_role.json.md) * **Exemple de résultat:** [role.json](samples/sample_role.json.md)
#### **role-add_permission** #### **role-permission-add**
* **Méthode: POST** * **Méthode: POST**
* **Permission: `ScoSuperAdmin`** * **Permission: `ScoSuperAdmin`**
@ -1310,7 +1407,7 @@ d'un autre).
Note: la liste des permissions est donnée sur [ConfigPermissions](ConfigPermissions.md). Note: la liste des permissions est donnée sur [ConfigPermissions](ConfigPermissions.md).
* **Exemple de résultat:** [role-add_permission.json](samples/sample_role-add_permission.json.md) * **Exemple de résultat:** [role-add_permission.json](samples/sample_role-add_permission.json.md)
#### **role-remove_permission** #### **role-permission-remove**
* **Méthode: POST** * **Méthode: POST**
* **Permission: `ScoSuperAdmin`** * **Permission: `ScoSuperAdmin`**
@ -1357,7 +1454,7 @@ d'un autre).
### **API User, Permissions** ### **API User, Permissions**
#### **user** #### **user-info**
* **Méthode:** GET * **Méthode:** GET
* **Permission: `UsersView`** * **Permission: `UsersView`**
@ -1389,7 +1486,7 @@ d'un autre).
si est "super-administrateur". si est "super-administrateur".
* **Exemple de résultat:** [user-create.json](samples/sample_user-create.json.md) * **Exemple de résultat:** [user-create.json](samples/sample_user-create.json.md)
#### **`users-query`** #### **`users-info-query`**
* **Méthode:** GET * **Méthode:** GET
* **Permission: `UsersView`** * **Permission: `UsersView`**
@ -1462,7 +1559,7 @@ d'un autre).
* **Résultat:** Retire le rôle à l'utilisateur. * **Résultat:** Retire le rôle à l'utilisateur.
* **Exemple de résultat:** [user-role-remove.json](samples/sample_user-role-remove.json.md) * **Exemple de résultat:** [user-role-remove.json](samples/sample_user-role-remove.json.md)
#### **`permissions`** #### **`list-permissions`**
* **Méthode:** GET * **Méthode:** GET
* **Permission: `UsersView`** * **Permission: `UsersView`**

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 872 KiB

After

Width:  |  Height:  |  Size: 440 KiB