diff --git a/app/but/bulletin_but.py b/app/but/bulletin_but.py index 8eec9ba6a..ab4227b0d 100644 --- a/app/but/bulletin_but.py +++ b/app/but/bulletin_but.py @@ -393,7 +393,7 @@ class BulletinBUT: else: etud_ues_ids = res.etud_ues_ids(etud.id) - nbabs, nbabsjust = formsemestre.get_abs_count(etud.id) + nbabsnj, nbabsjust, nbabs = formsemestre.get_abs_count(etud.id) etud_groups = sco_groups.get_etud_formsemestre_groups( etud, formsemestre, only_to_show=True ) @@ -408,7 +408,7 @@ class BulletinBUT: } if self.prefs["bul_show_abs"]: semestre_infos["absences"] = { - "injustifie": nbabs - nbabsjust, + "injustifie": nbabsnj, "total": nbabs, "metrique": { "H.": "Heure(s)", @@ -525,7 +525,7 @@ class BulletinBUT: d["demission"] = "" # --- Absences - d["nbabs"], d["nbabsjust"] = self.res.formsemestre.get_abs_count(etud.id) + _, d["nbabsjust"], d["nbabs"] = self.res.formsemestre.get_abs_count(etud.id) # --- Decision Jury infos, _ = sco_bulletins.etud_descr_situation_semestre( @@ -540,9 +540,9 @@ class BulletinBUT: d.update(infos) # --- Rangs - d["rang_nt"] = ( - f"{d['semestre']['rang']['value']} / {d['semestre']['rang']['total']}" - ) + d[ + "rang_nt" + ] = f"{d['semestre']['rang']['value']} / {d['semestre']['rang']['total']}" d["rang_txt"] = "Rang " + d["rang_nt"] d.update(sco_bulletins.make_context_dict(self.res.formsemestre, d["etud"])) diff --git a/app/but/bulletin_but_xml_compat.py b/app/but/bulletin_but_xml_compat.py index 07522f80c..fb9af2056 100644 --- a/app/but/bulletin_but_xml_compat.py +++ b/app/but/bulletin_but_xml_compat.py @@ -241,7 +241,7 @@ def bulletin_but_xml_compat( # --- Absences if sco_preferences.get_preference("bul_show_abs", formsemestre_id): - nbabs, nbabsjust = formsemestre.get_abs_count(etud.id) + _, nbabsjust, nbabs = formsemestre.get_abs_count(etud.id) doc.append(Element("absences", nbabs=str(nbabs), nbabsjust=str(nbabsjust))) # -------- LA SUITE EST COPIEE SANS MODIF DE sco_bulletins_xml.py --------- diff --git a/app/models/formsemestre.py b/app/models/formsemestre.py index 09c1d3056..5541d1780 100644 --- a/app/models/formsemestre.py +++ b/app/models/formsemestre.py @@ -875,7 +875,7 @@ class FormSemestre(db.Model): def get_abs_count(self, etudid): """Les comptes d'absences de cet étudiant dans ce semestre: - tuple (nb abs, nb abs justifiées) + tuple (nb abs non just, nb abs justifiées, nb abs total) Utilise un cache. """ from app.scodoc import sco_assiduites diff --git a/app/scodoc/html_sidebar.py b/app/scodoc/html_sidebar.py index f1c8f8356..2d351e628 100755 --- a/app/scodoc/html_sidebar.py +++ b/app/scodoc/html_sidebar.py @@ -175,10 +175,9 @@ def sidebar(etudid: int = None): inscription = etud.inscription_courante() if inscription: formsemestre = inscription.formsemestre - nbabs, nbabsjust = sco_assiduites.formsemestre_get_assiduites_count( + nbabsnj, nbabsjust, _ = sco_assiduites.formsemestre_get_assiduites_count( etudid, formsemestre ) - nbabsnj = nbabs - nbabsjust H.append( f""" tuple[int, int]: """Les comptes d'absences de cet étudiant dans ce semestre: - tuple (nb abs non justifiées, nb abs justifiées) + tuple (nb abs non justifiées, nb abs justifiées, nb abs total) Utilise un cache. """ metrique = sco_preferences.get_preference("assi_metrique", sem["formsemestre_id"]) @@ -687,17 +687,17 @@ def formsemestre_get_assiduites_count( etudid: int, formsemestre: FormSemestre, moduleimpl_id: int = None ) -> tuple[int, int]: """Les comptes d'absences de cet étudiant dans ce semestre: - tuple (nb abs non justifiées, nb abs justifiées) + tuple (nb abs non justifiées, nb abs justifiées, nb abs total) Utilise un cache. """ metrique = sco_preferences.get_preference("assi_metrique", formsemestre.id) return get_assiduites_count_in_interval( etudid, date_debut=scu.localize_datetime( - datetime.combine(formsemestre.date_debut, time(8, 0)) + datetime.combine(formsemestre.date_debut, time(0, 0)) ), date_fin=scu.localize_datetime( - datetime.combine(formsemestre.date_fin, time(18, 0)) + datetime.combine(formsemestre.date_fin, time(23, 0)) ), metrique=scu.translate_assiduites_metric(metrique), moduleimpl_id=moduleimpl_id, @@ -714,12 +714,12 @@ def get_assiduites_count_in_interval( moduleimpl_id: int = None, ): """Les comptes d'absences de cet étudiant entre ces deux dates, incluses: - tuple (nb abs, nb abs justifiées) + tuple (nb abs non justifiées, nb abs justifiées, nb abs total) On peut spécifier les dates comme datetime ou iso. Utilise un cache. """ - date_debut_iso = date_debut_iso or date_debut.isoformat() - date_fin_iso = date_fin_iso or date_fin.isoformat() + date_debut_iso = date_debut_iso or date_debut.strftime("%Y-%m-%d") + date_fin_iso = date_fin_iso or date_fin.strftime("%Y-%m-%d") key = f"{etudid}_{date_debut_iso}_{date_fin_iso}_assiduites" r = sco_cache.AbsSemEtudCache.get(key) @@ -744,9 +744,10 @@ def get_assiduites_count_in_interval( if not ans: log("warning: get_assiduites_count failed to cache") - nb_abs: dict = r["absent"][metrique] - nb_abs_just: dict = r["absent_just"][metrique] - return (nb_abs, nb_abs_just) + nb_abs: int = r["absent"][metrique] + nb_abs_nj: int = r["absent_non_just"][metrique] + nb_abs_just: int = r["absent_just"][metrique] + return (nb_abs_nj, nb_abs_just, nb_abs) def invalidate_assiduites_count(etudid: int, sem: dict): diff --git a/app/scodoc/sco_bulletins.py b/app/scodoc/sco_bulletins.py index 1b70d3858..d1c32795d 100644 --- a/app/scodoc/sco_bulletins.py +++ b/app/scodoc/sco_bulletins.py @@ -196,7 +196,7 @@ def formsemestre_bulletinetud_dict(formsemestre_id, etudid, version="long"): pid = partition["partition_id"] partitions_etud_groups[pid] = sco_groups.get_etud_groups_in_partition(pid) # --- Absences - I["nbabs"], I["nbabsjust"] = sco_assiduites.get_assiduites_count(etudid, nt.sem) + _, I["nbabsjust"], I["nbabs"] = sco_assiduites.get_assiduites_count(etudid, nt.sem) # --- Decision Jury infos, dpv = etud_descr_situation_semestre( @@ -471,7 +471,7 @@ def _ue_mod_bulletin( ) # peut etre 'NI' is_malus = mod["module"]["module_type"] == ModuleType.MALUS if bul_show_abs_modules: - nbabs, nbabsjust = sco_assiduites.get_assiduites_count(etudid, sem) + _, nbabsjust, nbabs = sco_assiduites.get_assiduites_count(etudid, sem) mod_abs = [nbabs, nbabsjust] mod["mod_abs_txt"] = scu.fmt_abs(mod_abs) else: diff --git a/app/scodoc/sco_bulletins_json.py b/app/scodoc/sco_bulletins_json.py index 0481e6f9c..a7848b39e 100644 --- a/app/scodoc/sco_bulletins_json.py +++ b/app/scodoc/sco_bulletins_json.py @@ -296,7 +296,7 @@ def formsemestre_bulletinetud_published_dict( # --- Absences if prefs["bul_show_abs"]: - nbabs, nbabsjust = sco_assiduites.get_assiduites_count(etudid, sem) + _, nbabsjust, nbabs = sco_assiduites.get_assiduites_count(etudid, sem) d["absences"] = dict(nbabs=nbabs, nbabsjust=nbabsjust) # --- Décision Jury diff --git a/app/scodoc/sco_bulletins_xml.py b/app/scodoc/sco_bulletins_xml.py index 25f2cfa64..77f95ac28 100644 --- a/app/scodoc/sco_bulletins_xml.py +++ b/app/scodoc/sco_bulletins_xml.py @@ -260,7 +260,7 @@ def make_xml_formsemestre_bulletinetud( numero=str(mod["numero"]), titre=quote_xml_attr(mod["titre"]), abbrev=quote_xml_attr(mod["abbrev"]), - code_apogee=quote_xml_attr(mod["code_apogee"]) + code_apogee=quote_xml_attr(mod["code_apogee"]), # ects=ects ects des modules maintenant inutilisés ) x_ue.append(x_mod) @@ -347,7 +347,7 @@ def make_xml_formsemestre_bulletinetud( # --- Absences if sco_preferences.get_preference("bul_show_abs", formsemestre_id): - nbabs, nbabsjust = sco_assiduites.get_assiduites_count(etudid, sem) + _, nbabsjust, nbabs = sco_assiduites.get_assiduites_count(etudid, sem) doc.append(Element("absences", nbabs=str(nbabs), nbabsjust=str(nbabsjust))) # --- Decision Jury if ( diff --git a/app/scodoc/sco_formsemestre_validation.py b/app/scodoc/sco_formsemestre_validation.py index df4770fa3..27d99fffd 100644 --- a/app/scodoc/sco_formsemestre_validation.py +++ b/app/scodoc/sco_formsemestre_validation.py @@ -722,8 +722,8 @@ def formsemestre_recap_parcours_table( f"""