forked from ScoDoc/ScoDoc
Update opolka/ScoDoc from ScoDoc/ScoDoc #2
@ -387,9 +387,11 @@ class BulletinBUT:
|
|||||||
semestre_infos["absences"] = {
|
semestre_infos["absences"] = {
|
||||||
"injustifie": nbabs - nbabsjust,
|
"injustifie": nbabs - nbabsjust,
|
||||||
"total": nbabs,
|
"total": nbabs,
|
||||||
"metrique": sco_preferences.ASSIDUITES_METRIC_LABEL_LONG.get(
|
"metrique": {
|
||||||
sco_preferences.get_preference("assi_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 {}
|
decisions_ues = self.res.get_etud_decisions_ue(etud.id) or {}
|
||||||
if self.prefs["bul_show_ects"]:
|
if self.prefs["bul_show_ects"]:
|
||||||
|
@ -39,9 +39,11 @@ from app.models.validations import ScolarFormSemestreValidation
|
|||||||
from app.scodoc import codes_cursus, sco_preferences
|
from app.scodoc import codes_cursus, sco_preferences
|
||||||
from app.scodoc.sco_exceptions import ScoValueError
|
from app.scodoc.sco_exceptions import ScoValueError
|
||||||
from app.scodoc.sco_permissions import Permission
|
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_vdi import ApoEtapeVDI
|
||||||
|
|
||||||
|
from app.scodoc.sco_utils import translate_assiduites_metric
|
||||||
|
|
||||||
GROUPS_AUTO_ASSIGNMENT_DATA_MAX = 1024 * 1024 # bytes
|
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)
|
metrique = sco_preferences.get_preference("assi_metrique", self.id)
|
||||||
return sco_assiduites.get_assiduites_count_in_interval(
|
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]:
|
def get_codes_apogee(self, category=None) -> set[str]:
|
||||||
|
@ -122,7 +122,7 @@ def sidebar(etudid: int = None):
|
|||||||
nbabs, nbabsjust = sco_assiduites.get_assiduites_count(etudid, cur_sem)
|
nbabs, nbabsjust = sco_assiduites.get_assiduites_count(etudid, cur_sem)
|
||||||
nbabsnj = nbabs - nbabsjust
|
nbabsnj = nbabs - nbabsjust
|
||||||
H.append(
|
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>"""
|
<br>{ nbabsjust } J., { nbabsnj } N.J.</span>"""
|
||||||
)
|
)
|
||||||
H.append("<ul>")
|
H.append("<ul>")
|
||||||
|
@ -66,7 +66,11 @@ def abs_notify(etudid, date):
|
|||||||
etudid,
|
etudid,
|
||||||
formsemestre.date_debut.isoformat(),
|
formsemestre.date_debut.isoformat(),
|
||||||
formsemestre.date_fin.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)
|
do_abs_notify(formsemestre, etudid, date, nbabs, nbabsjust)
|
||||||
|
|
||||||
|
@ -373,7 +373,7 @@ def get_assiduites_count(etudid, sem):
|
|||||||
etudid,
|
etudid,
|
||||||
sem["date_debut_iso"],
|
sem["date_debut_iso"],
|
||||||
sem["date_fin_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"""
|
"""Invalidate (clear) cached counts"""
|
||||||
date_debut = sem["date_debut_iso"]
|
date_debut = sem["date_debut_iso"]
|
||||||
date_fin = sem["date_fin_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"
|
key = str(etudid) + "_" + date_debut + "_" + date_fin + f"{met}_assiduites"
|
||||||
sco_cache.AbsSemEtudCache.delete(key)
|
sco_cache.AbsSemEtudCache.delete(key)
|
||||||
|
|
||||||
|
@ -198,17 +198,11 @@ def _get_pref_default_value_from_config(name, pref_spec):
|
|||||||
|
|
||||||
_INSTALLED_FONTS = ", ".join(sco_pdf.get_available_font_names())
|
_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.
|
# l'ordre est important, c'est celui-du menu. Le defaut en 1er donc.
|
||||||
"demi": "Demi-Journée",
|
"1/2 J.": "demi",
|
||||||
"journee": "Journée",
|
"J.": "journee",
|
||||||
"heure": "Heure",
|
"H.": "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.",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PREF_CATEGORIES = (
|
PREF_CATEGORIES = (
|
||||||
@ -670,10 +664,10 @@ class BasePreferences(object):
|
|||||||
(
|
(
|
||||||
"assi_metrique",
|
"assi_metrique",
|
||||||
{
|
{
|
||||||
"initvalue": "demi",
|
"initvalue": "1/2 J.",
|
||||||
"input_type": "menu",
|
"input_type": "menu",
|
||||||
"labels": list(ASSIDUITES_METRIC_LABEL_LONG.values()),
|
"labels": list(ASSIDUITES_METRIC_LABEL.keys()),
|
||||||
"allowed_values": list(ASSIDUITES_METRIC_LABEL_LONG.keys()),
|
"allowed_values": list(ASSIDUITES_METRIC_LABEL.keys()),
|
||||||
"title": "Métrique de l'assiduité",
|
"title": "Métrique de l'assiduité",
|
||||||
"explanation": "Unité utilisée dans la fiche étudiante, les bilans et les calculs",
|
"explanation": "Unité utilisée dans la fiche étudiante, les bilans et les calculs",
|
||||||
"category": "assi",
|
"category": "assi",
|
||||||
|
@ -251,6 +251,17 @@ def is_period_overlapping(
|
|||||||
return p_deb < i_fin and p_fin > i_deb
|
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
|
# Types de modules
|
||||||
class ModuleType(IntEnum):
|
class ModuleType(IntEnum):
|
||||||
"""Code des types de module."""
|
"""Code des types de module."""
|
||||||
|
@ -125,8 +125,8 @@ class RowAssi(tb.Row):
|
|||||||
"absent": ["Absences", 0.0, 0.0],
|
"absent": ["Absences", 0.0, 0.0],
|
||||||
}
|
}
|
||||||
|
|
||||||
assi_metric = sco_preferences.get_preference(
|
assi_metric = sco_preferences.ASSIDUITES_METRIC_LABEL.get(
|
||||||
"assi_metrique", dept_id=g.scodoc_dept_id
|
sco_preferences.get_preference("assi_metrique", dept_id=g.scodoc_dept_id)
|
||||||
)
|
)
|
||||||
|
|
||||||
for etat, valeur in retour.items():
|
for etat, valeur in retour.items():
|
||||||
|
@ -79,7 +79,9 @@ class ScoData:
|
|||||||
etud.id,
|
etud.id,
|
||||||
self.etud_cur_sem.date_debut.isoformat(),
|
self.etud_cur_sem.date_debut.isoformat(),
|
||||||
self.etud_cur_sem.date_fin.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
|
self.nbabsnj = self.nbabs - self.nbabsjust
|
||||||
else:
|
else:
|
||||||
|
@ -327,8 +327,8 @@ def bilan_etud():
|
|||||||
date_debut: str = f"{scu.annee_scolaire()}-09-01"
|
date_debut: str = f"{scu.annee_scolaire()}-09-01"
|
||||||
date_fin: str = f"{scu.annee_scolaire()+1}-06-30"
|
date_fin: str = f"{scu.annee_scolaire()+1}-06-30"
|
||||||
|
|
||||||
assi_metric = sco_preferences.get_preference(
|
assi_metric = sco_preferences.ASSIDUITES_METRIC_LABEL.get(
|
||||||
"assi_metrique", dept_id=g.scodoc_dept_id
|
sco_preferences.get_preference("assi_metrique", dept_id=g.scodoc_dept_id)
|
||||||
)
|
)
|
||||||
|
|
||||||
return HTMLBuilder(
|
return HTMLBuilder(
|
||||||
@ -840,8 +840,8 @@ def visu_assi_group():
|
|||||||
|
|
||||||
return render_template(
|
return render_template(
|
||||||
"assiduites/pages/visu_assi.j2",
|
"assiduites/pages/visu_assi.j2",
|
||||||
assi_metric=sco_preferences.get_preference(
|
assi_metric=sco_preferences.ASSIDUITES_METRIC_LABEL.get(
|
||||||
"assi_metrique", dept_id=g.scodoc_dept_id
|
sco_preferences.get_preference("assi_metrique", dept_id=g.scodoc_dept_id)
|
||||||
),
|
),
|
||||||
date_debut=dates["debut"],
|
date_debut=dates["debut"],
|
||||||
date_fin=dates["fin"],
|
date_fin=dates["fin"],
|
||||||
|
Loading…
Reference in New Issue
Block a user