diff --git a/app/but/bulletin_but.py b/app/but/bulletin_but.py index bfaba4e30..79423197f 100644 --- a/app/but/bulletin_but.py +++ b/app/but/bulletin_but.py @@ -16,7 +16,7 @@ from app.comp import moy_ue, moy_sem, inscr_mod from app.models import ModuleImpl from app.scodoc import sco_utils as scu from app.scodoc.sco_cache import ResultatsSemestreBUTCache -from app.scodoc.sco_exceptions import ScoFormatError +from app.scodoc import sco_bulletins_json from app.scodoc import sco_preferences from app.scodoc.sco_utils import jsnan, fmt_note @@ -237,23 +237,21 @@ class ResultatsSemestreBUT: "options": bulletin_option_affichage(formsemestre), } semestre_infos = { - "etapes": { # XXX TODO - # à spécifier: liste des étapes Apogée - }, + "etapes": [str(x.etape_apo) for x in formsemestre.etapes if x.etape_apo], "date_debut": formsemestre.date_debut.isoformat(), "date_fin": formsemestre.date_fin.isoformat(), "annee_universitaire": self.formsemestre.annee_scolaire_str(), "inscription": "TODO-MM-JJ", # XXX TODO "numero": formsemestre.semestre_id, - "decision": None, # XXX TODO - "situation": "non disponible", # "Décision jury: Validé. Diplôme obtenu.", # XXX TODO - "date_jury": "AAAA-MM-JJ", # XXX TODO "groupes": [], # XXX TODO "absences": { # XXX TODO "injustifie": 1, "total": 33, }, } + semestre_infos.update( + sco_bulletins_json.dict_decision_jury(etud.id, formsemestre.id) + ) if etat_inscription == scu.INSCRIT: semestre_infos.update( { diff --git a/app/scodoc/sco_bulletins_json.py b/app/scodoc/sco_bulletins_json.py index c79591807..9dae5753c 100644 --- a/app/scodoc/sco_bulletins_json.py +++ b/app/scodoc/sco_bulletins_json.py @@ -334,19 +334,44 @@ def formsemestre_bulletinetud_published_dict( d["absences"] = dict(nbabs=nbabs, nbabsjust=nbabsjust) # --- Decision Jury + d.update( + dict_decision_jury(etudid, formsemestre_id, with_decisions=xml_with_decisions) + ) + # --- Appreciations + cnx = ndb.GetDBConnexion() + apprecs = sco_etud.appreciations_list( + cnx, args={"etudid": etudid, "formsemestre_id": formsemestre_id} + ) + d["appreciation"] = [] + for app in apprecs: + d["appreciation"].append( + dict( + comment=scu.quote_xml_attr(app["comment"]), + date=ndb.DateDMYtoISO(app["date"]), + ) + ) + + # + return d + + +def dict_decision_jury(etudid, formsemestre_id, with_decisions=False): + "dict avec decision pour bulletins json" + from app.scodoc import sco_bulletins + + d = {} if ( sco_preferences.get_preference("bul_show_decision", formsemestre_id) - or xml_with_decisions + or with_decisions ): infos, dpv = sco_bulletins.etud_descr_situation_semestre( etudid, formsemestre_id, - format="xml", show_uevalid=sco_preferences.get_preference( "bul_show_uevalid", formsemestre_id ), ) - d["situation"] = scu.quote_xml_attr(infos["situation"]) + d["situation"] = infos["situation"] if dpv: decision = dpv["decisions"][0] etat = decision["etat"] @@ -355,7 +380,13 @@ def formsemestre_bulletinetud_published_dict( else: code = "" - d["decision"] = dict(code=code, etat=etat) + d["decision"] = dict( + code=code, + etat=etat, + date=ndb.DateDMYtoISO( + dpv["decisions"][0]["decision_sem"]["event_date"] + ), + ) if ( decision["decision_sem"] and "compense_formsemestre_id" in decision["decision_sem"] @@ -373,11 +404,11 @@ def formsemestre_bulletinetud_published_dict( d["decision_ue"].append( dict( ue_id=ue["ue_id"], - numero=scu.quote_xml_attr(ue["numero"]), - acronyme=scu.quote_xml_attr(ue["acronyme"]), - titre=scu.quote_xml_attr(ue["titre"]), + numero=ue["numero"], + acronyme=ue["acronyme"], + titre=ue["titre"], code=decision["decisions_ue"][ue_id]["code"], - ects=scu.quote_xml_attr(ue["ects"] or ""), + ects=ue["ects"] or "", ) ) d["autorisation_inscription"] = [] @@ -387,20 +418,4 @@ def formsemestre_bulletinetud_published_dict( ) else: d["decision"] = dict(code="", etat="DEM") - - # --- Appreciations - cnx = ndb.GetDBConnexion() - apprecs = sco_etud.appreciations_list( - cnx, args={"etudid": etudid, "formsemestre_id": formsemestre_id} - ) - d["appreciation"] = [] - for app in apprecs: - d["appreciation"].append( - dict( - comment=scu.quote_xml_attr(app["comment"]), - date=ndb.DateDMYtoISO(app["date"]), - ) - ) - - # return d