Codes jury: enregistrement transcodage BUT, tableau documentation

This commit is contained in:
Emmanuel Viennet 2022-06-26 15:43:46 +02:00
parent 3d5361ce50
commit 4087fd6096
5 changed files with 112 additions and 33 deletions

View File

@ -41,6 +41,7 @@ from app.scodoc import sco_codes_parcours
def _build_code_field(code): def _build_code_field(code):
return StringField( return StringField(
label=code, label=code,
default=code,
description=sco_codes_parcours.CODES_EXPL[code], description=sco_codes_parcours.CODES_EXPL[code],
validators=[ validators=[
validators.regexp( validators.regexp(

View File

@ -9,6 +9,8 @@ from app.comp import bonus_spo
from app.scodoc.sco_exceptions import ScoValueError from app.scodoc.sco_exceptions import ScoValueError
from app.scodoc.sco_codes_parcours import ( from app.scodoc.sco_codes_parcours import (
ABAN,
ABL,
ADC, ADC,
ADJ, ADJ,
ADM, ADM,
@ -19,11 +21,16 @@ from app.scodoc.sco_codes_parcours import (
CMP, CMP,
DEF, DEF,
DEM, DEM,
EXCLU,
NAR, NAR,
PASD,
PAS1NCI,
RAT, RAT,
) )
CODES_SCODOC_TO_APO = { CODES_SCODOC_TO_APO = {
ABAN: "ABAN",
ABL: "ABL",
ADC: "ADMC", ADC: "ADMC",
ADJ: "ADM", ADJ: "ADM",
ADM: "ADM", ADM: "ADM",
@ -34,7 +41,10 @@ CODES_SCODOC_TO_APO = {
CMP: "COMP", CMP: "COMP",
DEF: "NAR", DEF: "NAR",
DEM: "NAR", DEM: "NAR",
EXCLU: "EXC",
NAR: "NAR", NAR: "NAR",
PASD: "PASD",
PAS1NCI: "PAS1NCI",
RAT: "ATT", RAT: "ATT",
"NOTES_FMT": "%3.2f", "NOTES_FMT": "%3.2f",
} }
@ -161,9 +171,8 @@ class ScoDocSiteConfig(db.Model):
@classmethod @classmethod
def get_code_apo(cls, code: str) -> str: def get_code_apo(cls, code: str) -> str:
"""La représentation d'un code pour les exports Apogée. """La représentation d'un code pour les exports Apogée.
Par exemple, à l'iUT du H., le code ADM est réprésenté par VAL Par exemple, à l'IUT du H., le code ADM est réprésenté par VAL
Les codes par défaut sont donnés dans sco_apogee_csv. Les codes par défaut sont donnés dans sco_apogee_csv.
""" """
cfg = ScoDocSiteConfig.query.filter_by(name=code).first() cfg = ScoDocSiteConfig.query.filter_by(name=code).first()
if not cfg: if not cfg:
@ -172,6 +181,11 @@ class ScoDocSiteConfig(db.Model):
code_apo = cfg.value code_apo = cfg.value
return code_apo return code_apo
@classmethod
def get_codes_apo_dict(cls) -> dict[str:str]:
"Un dict avec code jury : code exporté"
return {code: cls.get_code_apo(code) for code in CODES_SCODOC_TO_APO}
@classmethod @classmethod
def set_code_apo(cls, code: str, code_apo: str): def set_code_apo(cls, code: str, code_apo: str):
"""Enregistre nouvelle représentation du code""" """Enregistre nouvelle représentation du code"""

View File

@ -156,4 +156,9 @@ div.but_doc table tbody tr {
div.but_doc table tbody tr:nth-child(odd) { div.but_doc table tbody tr:nth-child(odd) {
background-color: #ffffff; background-color: #ffffff;
}
div.but_doc table tr td.amue {
color: rgb(127, 127, 206);
font-size: 90%;
} }

View File

@ -9,69 +9,82 @@
<table> <table>
<tr> <tr>
<th>ScoDoc</th> <th>ScoDoc</th>
<th>{{nom_univ}}</th>
<th>AMUE</th> <th>AMUE</th>
<th></th> <th>Signification</th>
</tr> </tr>
<tr> <tr>
<td>ADM</td> <td>ADM</td>
<td></td> <td>{{codes["ADM"]}}</td>
<td class="amue"></td>
<td>Admis</td> <td>Admis</td>
</tr> </tr>
<tr> <tr>
<td>ADJ</td> <td>ADJ</td>
<td></td> <td>{{codes["ADJ"]}}</td>
<td class="amue"></td>
<td>Admis par décision jury</td> <td>Admis par décision jury</td>
</tr> </tr>
<tr> <tr>
<td>PASD</td> <td>PASD</td>
<td>PASD</td> <td>{{codes["PASD"]}}</td>
<td class="amue">PASD</td>
<td>Non admis, mais passage de droit</td> <td>Non admis, mais passage de droit</td>
</tr> </tr>
<tr> <tr>
<td>PAS1NCI</td> <td>PAS1NCI</td>
<td>PAS1NCI</td> <td>{{codes["PAS1NCI"]}}</td>
<td class="amue">PAS1NCI</td>
<td>Non admis, mais passage par décision de jury (Passage en Année <td>Non admis, mais passage par décision de jury (Passage en Année
Supérieure avec au moins 1 Niveau de Compétence Insuffisant (RCUE&lt;8)) Supérieure avec au moins 1 Niveau de Compétence Insuffisant (RCUE&lt;8))
</td> </td>
</tr> </tr>
<tr> <tr>
<td>RED</td> <td>RED</td>
<td>RED</td> <td>{{codes["RED"]}}</td>
<td class="amue">RED</td>
<td>Ajourné, mais autorisé à redoubler</td> <td>Ajourné, mais autorisé à redoubler</td>
</tr> </tr>
<tr> <tr>
<td>NAR</td> <td>NAR</td>
<td>REO</td> <td>{{codes["NAR"]}}</td>
<td class="amue">REO</td>
<td>Non admis, réorientation</td> <td>Non admis, réorientation</td>
</tr> </tr>
<tr> <tr>
<td>DEM</td> <td>DEM</td>
<td></td> <td>{{codes["DEM"]}}</td>
<td class="amue"></td>
<td>Démission</td> <td>Démission</td>
</tr> </tr>
<tr> <tr>
<td>ABAN</td> <td>ABAN</td>
<td>ABAN</td> <td>{{codes["ABAN"]}}</td>
<td> ABANdon constaté (sans lettre de démission)</td> <td class="amue">ABAN</td>
<td>ABANdon constaté (sans lettre de démission)</td>
</tr> </tr>
<tr> <tr>
<td>RAT</td> <td>RAT</td>
<td></td> <td>{{codes["RAT"]}}</td>
<td class="amue"></td>
<td>En attente dun rattrapage</td> <td>En attente dun rattrapage</td>
</tr> </tr>
<tr> <tr>
<td>EXCLU</td> <td>EXCLU</td>
<td>EXC</td> <td>{{codes["EXCLU"]}}</td>
<td class="amue">EXC</td>
<td>EXClusion, décision réservée à des décisions disciplinaires</td> <td>EXClusion, décision réservée à des décisions disciplinaires</td>
</tr> </tr>
<tr> <tr>
<td>DEF</td> <td>DEF</td>
<td></td> <td>{{codes["DEF"]}}</td>
<td> (défaillance) Non évalué par manque assiduité</td> <td class="amue"></td>
<td>(défaillance) Non évalué par manque assiduité</td>
</tr> </tr>
<tr> <tr>
<td>ABL</td> <td>ABL</td>
<td>ABL</td> <td>{{codes["ABL"]}}</td>
<td class="amue">ABL</td>
<td>Année Blanche</td> <td>Année Blanche</td>
</tr> </tr>
</table> </table>
@ -81,39 +94,52 @@
<div class="but_doc"> <div class="but_doc">
<table> <table>
<tr>
<th>ScoDoc</th>
<th>{{nom_univ}}</th>
<th>AMUE</th>
<th>Signification</th>
</tr>
<tr> <tr>
<th>ADM</td> <th>ADM</td>
<th>VAL</td> <td>{{codes["ADM"]}}</td>
<th class="amue">VAL</td>
<th>Acquis</td> <th>Acquis</td>
</tr> </tr>
<tr> <tr>
<td>CMP</td> <td>CMP</td>
<td></td> <td>{{codes["CMP"]}}</td>
<td class="amue"></td>
<td>Acquis par compensation annuelle</td> <td>Acquis par compensation annuelle</td>
</tr> </tr>
<tr> <tr>
<td>ADJ</td> <td>ADJ</td>
<td>CODJ</td> <td>{{codes["ADJ"]}}</td>
<td class="amue">CODJ</td>
<td>Acquis par décision du jury</td> <td>Acquis par décision du jury</td>
</tr> </tr>
<tr> <tr>
<td>AJ</td> <td>AJ</td>
<td>AJ</td> <td>{{codes["AJ"]}}</td>
<td class="amue">AJ</td>
<td>Attente pour problème de moyenne</td> <td>Attente pour problème de moyenne</td>
</tr> </tr>
<tr> <tr>
<td>RAT</td> <td>RAT</td>
<td>{{codes["RAT"]}}</td>
<td></td> <td></td>
<td>En attente dun rattrapage</td> <td>En attente dun rattrapage</td>
</tr> </tr>
<tr> <tr>
<td>DEF</td> <td>DEF</td>
<td></td> <td>{{codes["DEF"]}}</td>
<td class="amue"></td>
<td>Défaillant</td> <td>Défaillant</td>
</tr> </tr>
<tr> <tr>
<td>ABAN</td> <td>ABAN</td>
<td></td> <td>{{codes["ABAN"]}}</td>
<td class="amue"></td>
<td>Non évalué pour manque assiduité</td> <td>Non évalué pour manque assiduité</td>
</tr> </tr>
</table> </table>
@ -123,42 +149,66 @@
<div class="but_doc"> <div class="but_doc">
<table> <table>
<tr>
<th>ScoDoc</th>
<th>{{nom_univ}}</th>
<th>AMUE</th>
<th>Signification</th>
</tr>
<tr> <tr>
<td>ADM</td> <td>ADM</td>
<td> Acquis (ECTS acquis)</td> <td>{{codes["ADM"]}}</td>
<td class="amue">VAL</td>
<td>Acquis (ECTS acquis)</td>
</tr> </tr>
<tr> <tr>
<td>CMP</td> <td>CMP</td>
<td> Acquis par compensation UE compensée avec lUE de même compétence et de même année (ECTS acquis) <td>{{codes["CMP"]}}</td>
<td class="amue">COMP</td>
<td>Acquis par compensation UE compensée avec lUE de même compétence et de même année (ECTS acquis)
</td> </td>
</tr> </tr>
<tr> <tr>
<td>ADJ</td> <td>ADJ</td>
<td> Acquis par décision de jury (ECTS acquis)</td> <td>{{codes["ADJ"]}}</td>
<td class="amue"></td>
<td>Acquis par décision de jury (ECTS acquis)</td>
</tr> </tr>
<tr> <tr>
<td>AJ</td> <td>AJ</td>
<td> Attente pour problème de moyenne</td> <td>{{codes["AJ"]}}</td>
<td class="amue">AJ</td>
<td>Attente pour problème de moyenne</td>
</tr> </tr>
<tr> <tr>
<td>RAT</td> <td>RAT</td>
<td> En attente dun rattrapage</td> <td>{{codes["RAT"]}}</td>
<td class="amue"></td>
<td>En attente dun rattrapage</td>
</tr> </tr>
<tr> <tr>
<td>DEF</td> <td>DEF</td>
<td> Défaillant Pas ou peu de notes par arrêt de la formation</td> <td>{{codes["DEF"]}}</td>
<td class="amue">ABAN</td>
<td>Défaillant Pas ou peu de notes par arrêt de la formation</td>
</tr> </tr>
<tr> <tr>
<td>ABAN</td> <td>ABAN</td>
<td> Non évalué pour manque dassiduité Non présentation des notes de létudiant au jury</td> <td>{{codes["ABAN"]}}</td>
<td class="amue">ABAN</td>
<td>Non évalué pour manque dassiduité Non présentation des notes de létudiant au jury</td>
</tr> </tr>
<tr> <tr>
<td>DEM</td> <td>DEM</td>
<td> Démission</td> <td>{{codes["DEM"]}}</td>
<td class="amue"></td>
<td>Démission</td>
</tr> </tr>
<tr> <tr>
<td>UEBSL</td> <td>UEBSL</td>
<td> UE blanchie </td> <td>{{codes["UEBSL"]}}</td>
<td class="amue">UEBSL</td>
<td>UE blanchie </td>
</tr> </tr>
</table> </table>
</div> </div>

View File

@ -46,6 +46,7 @@ from app.but.forms import jury_but_forms
from app.comp import res_sem from app.comp import res_sem
from app.comp.res_but import ResultatsSemestreBUT from app.comp.res_but import ResultatsSemestreBUT
from app.comp.res_compat import NotesTableCompat from app.comp.res_compat import NotesTableCompat
from app.models.config import ScoDocSiteConfig
from app.models.etudiants import Identite from app.models.etudiants import Identite
from app.models.formsemestre import FormSemestre from app.models.formsemestre import FormSemestre
from app.models.formsemestre import FormSemestreUEComputationExpr from app.models.formsemestre import FormSemestreUEComputationExpr
@ -2359,7 +2360,15 @@ def formsemestre_validation_but(formsemestre_id: int, etudid: int):
) )
H.append("</form>") # but_annee H.append("</form>") # but_annee
H.append(render_template("but/documentation_codes_jury.html")) H.append(
render_template(
"but/documentation_codes_jury.html",
nom_univ=f"""Export {sco_preferences.get_preference("InstituteName")
or sco_preferences.get_preference("UnivName")
or "Apogée"}""",
codes=ScoDocSiteConfig.get_codes_apo_dict(),
)
)
return "\n".join(H) + html_sco_header.sco_footer() return "\n".join(H) + html_sco_header.sco_footer()