PV jury: restreint cursus à la formation actuelle. Fix #622.

This commit is contained in:
Emmanuel Viennet 2024-05-22 19:18:57 +02:00
parent 3ca5636454
commit bb23cdcea7
3 changed files with 29 additions and 21 deletions

View File

@ -350,11 +350,13 @@ class SituationEtudCursusClassic(SituationEtudCursus):
l'étudiant (quelle que soit la formation), le plus ancien en tête""" l'étudiant (quelle que soit la formation), le plus ancien en tête"""
return self.sems return self.sems
def get_cursus_descr(self, filter_futur=False): def get_cursus_descr(self, filter_futur=False, filter_formation_code=False):
"""Description brève du parcours: "S1, S2, ..." """Description brève du parcours: "S1, S2, ..."
Si filter_futur, ne mentionne pas les semestres qui sont après le semestre courant. Si filter_futur, ne mentionne pas les semestres qui sont après le semestre courant.
Si filter_formation_code, restreint aux semestres de même code formation que le courant.
""" """
cur_begin_date = self.sem["dateord"] cur_begin_date = self.sem["dateord"]
cur_formation_code = self.sem["formation_code"]
p = [] p = []
for s in self.sems: for s in self.sems:
if s["ins"]["etat"] == scu.DEMISSION: if s["ins"]["etat"] == scu.DEMISSION:
@ -363,12 +365,14 @@ class SituationEtudCursusClassic(SituationEtudCursus):
dem = "" dem = ""
if filter_futur and s["dateord"] > cur_begin_date: if filter_futur and s["dateord"] > cur_begin_date:
continue # skip semestres demarrant apres le courant continue # skip semestres demarrant apres le courant
SA = self.parcours.SESSION_ABBRV # 'S' ou 'A' if filter_formation_code and s["formation_code"] != cur_formation_code:
continue # restreint aux semestres de la formation courante (pour les PV)
session_abbrv = self.parcours.SESSION_ABBRV # 'S' ou 'A'
if s["semestre_id"] < 0: if s["semestre_id"] < 0:
SA = "A" # force, cas des DUT annuels par exemple session_abbrv = "A" # force, cas des DUT annuels par exemple
p.append("%s%d%s" % (SA, -s["semestre_id"], dem)) p.append("%s%d%s" % (session_abbrv, -s["semestre_id"], dem))
else: else:
p.append("%s%d%s" % (SA, s["semestre_id"], dem)) p.append("%s%d%s" % (session_abbrv, s["semestre_id"], dem))
return ", ".join(p) return ", ".join(p)
def get_parcours_decisions(self): def get_parcours_decisions(self):

View File

@ -42,7 +42,6 @@ from app.models import (
but_validations, but_validations,
) )
from app.scodoc import codes_cursus from app.scodoc import codes_cursus
from app.scodoc import sco_edit_ue
from app.scodoc import sco_etud from app.scodoc import sco_etud
from app.scodoc import sco_formsemestre from app.scodoc import sco_formsemestre
from app.scodoc import sco_cursus from app.scodoc import sco_cursus
@ -81,6 +80,7 @@ def dict_pvjury(
}, },
'autorisations' : [ { 'semestre_id' : { ... } } ], 'autorisations' : [ { 'semestre_id' : { ... } } ],
'validation_parcours' : True si parcours validé (diplome obtenu) 'validation_parcours' : True si parcours validé (diplome obtenu)
'parcours' : 'S1, S2, S3, S4, A1',
'prev_code' : code (calculé slt si with_prev), 'prev_code' : code (calculé slt si with_prev),
'mention' : mention (en fct moy gen), 'mention' : mention (en fct moy gen),
'sum_ects' : total ECTS acquis dans ce semestre (incluant les UE capitalisées) 'sum_ects' : total ECTS acquis dans ce semestre (incluant les UE capitalisées)
@ -107,10 +107,12 @@ def dict_pvjury(
D = {} # même chose que decisions, mais { etudid : dec } D = {} # même chose que decisions, mais { etudid : dec }
for etudid in etudids: for etudid in etudids:
etud = Identite.get_etud(etudid) etud = Identite.get_etud(etudid)
Se = sco_cursus.get_situation_etud_cursus( situation_etud = sco_cursus.get_situation_etud_cursus(
etud.to_dict_scodoc7(), formsemestre_id etud.to_dict_scodoc7(), formsemestre_id
) )
semestre_non_terminal = semestre_non_terminal or Se.semestre_non_terminal semestre_non_terminal = (
semestre_non_terminal or situation_etud.semestre_non_terminal
)
d = {} d = {}
d["identite"] = nt.identdict[etudid] d["identite"] = nt.identdict[etudid]
d["etat"] = nt.get_etud_etat( d["etat"] = nt.get_etud_etat(
@ -120,9 +122,8 @@ def dict_pvjury(
d["decisions_ue"] = nt.get_etud_decisions_ue(etudid) d["decisions_ue"] = nt.get_etud_decisions_ue(etudid)
if formsemestre.formation.is_apc(): if formsemestre.formation.is_apc():
d.update(but_validations.dict_decision_jury(etud, formsemestre)) d.update(but_validations.dict_decision_jury(etud, formsemestre))
d["last_formsemestre_id"] = Se.get_semestres()[ # id du dernier semestre (chronologiquement) dans lequel il a été inscrit:
-1 d["last_formsemestre_id"] = situation_etud.get_semestres()[-1]
] # id du dernier semestre (chronologiquement) dans lequel il a été inscrit
ects_capitalises_by_ue_code = _comp_ects_capitalises_by_ue_code(nt, etudid) ects_capitalises_by_ue_code = _comp_ects_capitalises_by_ue_code(nt, etudid)
d["sum_ects_capitalises"] = sum(ects_capitalises_by_ue_code.values()) d["sum_ects_capitalises"] = sum(ects_capitalises_by_ue_code.values())
@ -162,10 +163,13 @@ def dict_pvjury(
d["autorisations"] = [a.to_dict() for a in autorisations] d["autorisations"] = [a.to_dict() for a in autorisations]
d["autorisations_descr"] = descr_autorisations(autorisations) d["autorisations_descr"] = descr_autorisations(autorisations)
d["validation_parcours"] = Se.parcours_validated() d["validation_parcours"] = situation_etud.parcours_validated()
d["parcours"] = Se.get_cursus_descr(filter_futur=True) d["parcours"] = situation_etud.get_cursus_descr(filter_futur=True)
d["parcours_in_cur_formation"] = situation_etud.get_cursus_descr(
filter_futur=True, filter_formation_code=True
)
if with_parcours_decisions: if with_parcours_decisions:
d["parcours_decisions"] = Se.get_parcours_decisions() d["parcours_decisions"] = situation_etud.get_parcours_decisions()
# Observations sur les compensations: # Observations sur les compensations:
compensators = sco_cursus_dut.scolar_formsemestre_validation_list( compensators = sco_cursus_dut.scolar_formsemestre_validation_list(
cnx, args={"compense_formsemestre_id": formsemestre_id, "etudid": etudid} cnx, args={"compense_formsemestre_id": formsemestre_id, "etudid": etudid}
@ -206,19 +210,19 @@ def dict_pvjury(
if not info: if not info:
continue # should not occur continue # should not occur
etud = info[0] etud = info[0]
if Se.prev and Se.prev_decision: if situation_etud.prev and situation_etud.prev_decision:
d["prev_decision_sem"] = Se.prev_decision d["prev_decision_sem"] = situation_etud.prev_decision
d["prev_code"] = Se.prev_decision["code"] d["prev_code"] = situation_etud.prev_decision["code"]
d["prev_code_descr"] = _descr_decision_sem( d["prev_code_descr"] = _descr_decision_sem(
scu.INSCRIT, Se.prev_decision scu.INSCRIT, situation_etud.prev_decision
) )
d["prev"] = Se.prev d["prev"] = situation_etud.prev
has_prev = True has_prev = True
else: else:
d["prev_decision_sem"] = None d["prev_decision_sem"] = None
d["prev_code"] = "" d["prev_code"] = ""
d["prev_code_descr"] = "" d["prev_code_descr"] = ""
d["Se"] = Se d["Se"] = situation_etud
decisions.append(d) decisions.append(d)
D[etudid] = d D[etudid] = d

View File

@ -149,7 +149,7 @@ def pvjury_table(
etudid=e["identite"]["etudid"], etudid=e["identite"]["etudid"],
), ),
"_nomprenom_td_attrs": f"""id="{e['identite']['etudid']}" class="etudinfo" """, "_nomprenom_td_attrs": f"""id="{e['identite']['etudid']}" class="etudinfo" """,
"parcours": e["parcours"], "parcours": e["parcours_in_cur_formation"],
"decision": _descr_decision_sem_abbrev(e["etat"], e["decision_sem"]), "decision": _descr_decision_sem_abbrev(e["etat"], e["decision_sem"]),
"ue_cap": e["decisions_ue_descr"], "ue_cap": e["decisions_ue_descr"],
"validation_parcours_code": "ADM" if e["validation_parcours"] else "", "validation_parcours_code": "ADM" if e["validation_parcours"] else "",