début de mise à jour de la liste des champs

This commit is contained in:
Emmanuel Viennet 2024-07-17 12:14:42 +03:00
parent 7975ecf2d2
commit 024f95d9f6

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