diff --git a/app/but/bulletin_but.py b/app/but/bulletin_but.py index f2a3b744bcd16fdcbc8d4e167f3bf7b0fff43ed3..3231cc88e45261c5d1c8ebeb3515baca567d5835 100644 --- a/app/but/bulletin_but.py +++ b/app/but/bulletin_but.py @@ -387,9 +387,11 @@ class BulletinBUT: semestre_infos["absences"] = { "injustifie": nbabs - nbabsjust, "total": nbabs, - "metrique": sco_preferences.ASSIDUITES_METRIC_LABEL_LONG.get( - sco_preferences.get_preference("assi_metrique") - ), + "metrique": { + "H.": "Heure(s)", + "J.": "Journée(s)", + "1/2 J.": "1/2 Jour.", + }.get(sco_preferences.get_preference("assi_metrique")), } decisions_ues = self.res.get_etud_decisions_ue(etud.id) or {} if self.prefs["bul_show_ects"]: diff --git a/app/models/formsemestre.py b/app/models/formsemestre.py index af856f75e0e1019594c74fce45ee0938a0b2987f..e4690a06a295f0859c4bf0649646b38b33e54a0e 100644 --- a/app/models/formsemestre.py +++ b/app/models/formsemestre.py @@ -39,9 +39,11 @@ from app.models.validations import ScolarFormSemestreValidation from app.scodoc import codes_cursus, sco_preferences from app.scodoc.sco_exceptions import ScoValueError from app.scodoc.sco_permissions import Permission -from app.scodoc.sco_utils import MONTH_NAMES_ABBREV +from app.scodoc.sco_utils import MONTH_NAMES_ABBREV, translate_assiduites_metric from app.scodoc.sco_vdi import ApoEtapeVDI +from app.scodoc.sco_utils import translate_assiduites_metric + GROUPS_AUTO_ASSIGNMENT_DATA_MAX = 1024 * 1024 # bytes @@ -716,7 +718,10 @@ class FormSemestre(db.Model): metrique = sco_preferences.get_preference("assi_metrique", self.id) return sco_assiduites.get_assiduites_count_in_interval( - etudid, self.date_debut.isoformat(), self.date_fin.isoformat(), metrique + etudid, + self.date_debut.isoformat(), + self.date_fin.isoformat(), + translate_assiduites_metric(metrique), ) def get_codes_apogee(self, category=None) -> set[str]: diff --git a/app/scodoc/html_sidebar.py b/app/scodoc/html_sidebar.py index 72310acd698b8fd3f5542031d8c3dd12a345d13d..820bf8987f6e1cec4fbcd742fec92ee8202be926 100755 --- a/app/scodoc/html_sidebar.py +++ b/app/scodoc/html_sidebar.py @@ -122,7 +122,7 @@ def sidebar(etudid: int = None): nbabs, nbabsjust = sco_assiduites.get_assiduites_count(etudid, cur_sem) nbabsnj = nbabs - nbabsjust H.append( - f"""<span title="absences du { cur_sem["date_debut"] } au { cur_sem["date_fin"] }">({sco_preferences.ASSIDUITES_METRIC_LABEL_SHORT.get(sco_preferences.get_preference("assi_metrique", "demi"))}) + f"""<span title="absences du { cur_sem["date_debut"] } au { cur_sem["date_fin"] }">({sco_preferences.get_preference("assi_metrique", None)}) <br>{ nbabsjust } J., { nbabsnj } N.J.</span>""" ) H.append("<ul>") diff --git a/app/scodoc/sco_abs_notification.py b/app/scodoc/sco_abs_notification.py index 56432c5ea05c9173ece31c31bd3f3a8f8eee2320..7ff95d77287c74367d92b6c0093b9bf5081b048c 100644 --- a/app/scodoc/sco_abs_notification.py +++ b/app/scodoc/sco_abs_notification.py @@ -66,7 +66,11 @@ def abs_notify(etudid, date): etudid, formsemestre.date_debut.isoformat(), formsemestre.date_fin.isoformat(), - sco_preferences.get_preference("assi_metrique", formsemestre.formsemestre_id), + scu.translate_assiduites_metric( + sco_preferences.get_preference( + "assi_metrique", formsemestre.formsemestre_id + ) + ), ) do_abs_notify(formsemestre, etudid, date, nbabs, nbabsjust) diff --git a/app/scodoc/sco_assiduites.py b/app/scodoc/sco_assiduites.py index 4634367a619bbc2047e9af26e05ea5d435ef6186..98e9af5fc458d6fcc64f62b5ed181f924db8e246 100644 --- a/app/scodoc/sco_assiduites.py +++ b/app/scodoc/sco_assiduites.py @@ -373,7 +373,7 @@ def get_assiduites_count(etudid, sem): etudid, sem["date_debut_iso"], sem["date_fin_iso"], - metrique, + scu.translate_assiduites_metric(metrique), ) @@ -427,7 +427,7 @@ def invalidate_assiduites_count(etudid, sem): """Invalidate (clear) cached counts""" date_debut = sem["date_debut_iso"] date_fin = sem["date_fin_iso"] - for met in sco_preferences.ASSIDUITES_METRIC_LABEL_SHORT.values(): + for met in sco_preferences.ASSIDUITES_METRIC_LABEL.values(): key = str(etudid) + "_" + date_debut + "_" + date_fin + f"{met}_assiduites" sco_cache.AbsSemEtudCache.delete(key) diff --git a/app/scodoc/sco_preferences.py b/app/scodoc/sco_preferences.py index 7046584bcea048d3efc6a67e2fd3d2138f261b11..c97c4c48ab38aaee3dd734bdc6f88b3df0f81b0c 100644 --- a/app/scodoc/sco_preferences.py +++ b/app/scodoc/sco_preferences.py @@ -198,17 +198,11 @@ def _get_pref_default_value_from_config(name, pref_spec): _INSTALLED_FONTS = ", ".join(sco_pdf.get_available_font_names()) -ASSIDUITES_METRIC_LABEL_LONG = { +ASSIDUITES_METRIC_LABEL = { # l'ordre est important, c'est celui-du menu. Le defaut en 1er donc. - "demi": "Demi-Journée", - "journee": "Journée", - "heure": "Heure", -} -ASSIDUITES_METRIC_LABEL_SHORT = { - # l'ordre est important, c'est celui-du menu. Le defaut en 1er donc. - "demi": "1/2 J.", - "journee": "J.", - "heure": "H.", + "1/2 J.": "demi", + "J.": "journee", + "H.": "heure", } PREF_CATEGORIES = ( @@ -670,10 +664,10 @@ class BasePreferences(object): ( "assi_metrique", { - "initvalue": "demi", + "initvalue": "1/2 J.", "input_type": "menu", - "labels": list(ASSIDUITES_METRIC_LABEL_LONG.values()), - "allowed_values": list(ASSIDUITES_METRIC_LABEL_LONG.keys()), + "labels": list(ASSIDUITES_METRIC_LABEL.keys()), + "allowed_values": list(ASSIDUITES_METRIC_LABEL.keys()), "title": "Métrique de l'assiduité", "explanation": "Unité utilisée dans la fiche étudiante, les bilans et les calculs", "category": "assi", diff --git a/app/scodoc/sco_utils.py b/app/scodoc/sco_utils.py index 86cd307eb649482d6c083af9c5ce96b2c27e88f1..6208c16e1bfb50c5c8df2787febf4eb5b995afb3 100644 --- a/app/scodoc/sco_utils.py +++ b/app/scodoc/sco_utils.py @@ -251,6 +251,17 @@ def is_period_overlapping( return p_deb < i_fin and p_fin > i_deb +def translate_assiduites_metric(hr_metric) -> str: + if hr_metric == "1/2 J.": + return "demi" + if hr_metric == "J.": + return "journee" + if hr_metric == "N.": + return "compte" + if hr_metric == "H.": + return "heure" + + # Types de modules class ModuleType(IntEnum): """Code des types de module.""" diff --git a/app/tables/visu_assiduites.py b/app/tables/visu_assiduites.py index 5cdb2dee37b0f2698456b2b474cee67003b2915c..0907da90ff779b101816475bbcaf44f9730200ed 100644 --- a/app/tables/visu_assiduites.py +++ b/app/tables/visu_assiduites.py @@ -125,8 +125,8 @@ class RowAssi(tb.Row): "absent": ["Absences", 0.0, 0.0], } - assi_metric = sco_preferences.get_preference( - "assi_metrique", dept_id=g.scodoc_dept_id + assi_metric = sco_preferences.ASSIDUITES_METRIC_LABEL.get( + sco_preferences.get_preference("assi_metrique", dept_id=g.scodoc_dept_id) ) for etat, valeur in retour.items(): diff --git a/app/views/__init__.py b/app/views/__init__.py index ef3a01cfdaf12eed19749435e01e05f926c9ef88..fdad9b5fbc3d3e613c96b20f75d1052ef71c669b 100644 --- a/app/views/__init__.py +++ b/app/views/__init__.py @@ -79,7 +79,9 @@ class ScoData: etud.id, self.etud_cur_sem.date_debut.isoformat(), self.etud_cur_sem.date_fin.isoformat(), - sco_preferences.get_preference("assi_metrique"), + scu.translate_assiduites_metric( + sco_preferences.get_preference("assi_metrique") + ), ) self.nbabsnj = self.nbabs - self.nbabsjust else: diff --git a/app/views/assiduites.py b/app/views/assiduites.py index 350855408338b0ae49778c31abd10be840a097d5..4d26a8ef3eb5ff89ee6ccf91da376c4d7134162f 100644 --- a/app/views/assiduites.py +++ b/app/views/assiduites.py @@ -327,8 +327,8 @@ def bilan_etud(): date_debut: str = f"{scu.annee_scolaire()}-09-01" date_fin: str = f"{scu.annee_scolaire()+1}-06-30" - assi_metric = sco_preferences.get_preference( - "assi_metrique", dept_id=g.scodoc_dept_id + assi_metric = sco_preferences.ASSIDUITES_METRIC_LABEL.get( + sco_preferences.get_preference("assi_metrique", dept_id=g.scodoc_dept_id) ) return HTMLBuilder( @@ -840,8 +840,8 @@ def visu_assi_group(): return render_template( "assiduites/pages/visu_assi.j2", - assi_metric=sco_preferences.get_preference( - "assi_metrique", dept_id=g.scodoc_dept_id + assi_metric=sco_preferences.ASSIDUITES_METRIC_LABEL.get( + sco_preferences.get_preference("assi_metrique", dept_id=g.scodoc_dept_id) ), date_debut=dates["debut"], date_fin=dates["fin"],