forked from ScoDoc/ScoDoc
Métrique assiduité sur bulletins pdf
This commit is contained in:
parent
0a38ed22e6
commit
b9c1eccc98
@ -77,7 +77,9 @@ class ScoDocConfigurationForm(FlaskForm):
|
|||||||
Attention: si ce champ peut aussi être défini dans chaque département.""",
|
Attention: si ce champ peut aussi être défini dans chaque département.""",
|
||||||
validators=[Optional(), Email()],
|
validators=[Optional(), Email()],
|
||||||
)
|
)
|
||||||
disable_bul_pdf = BooleanField("empêcher les exports des bulletins en PDF")
|
disable_bul_pdf = BooleanField(
|
||||||
|
"interdire les exports des bulletins en PDF (déconseillé)"
|
||||||
|
)
|
||||||
submit_scodoc = SubmitField("Valider")
|
submit_scodoc = SubmitField("Valider")
|
||||||
cancel_scodoc = SubmitField("Annuler", render_kw={"formnovalidate": True})
|
cancel_scodoc = SubmitField("Annuler", render_kw={"formnovalidate": True})
|
||||||
|
|
||||||
|
@ -262,15 +262,16 @@ class BulletinGeneratorLegacy(sco_bulletins_generator.BulletinGenerator):
|
|||||||
|
|
||||||
# ----- ABSENCES
|
# ----- ABSENCES
|
||||||
if self.preferences["bul_show_abs"]:
|
if self.preferences["bul_show_abs"]:
|
||||||
nbabs = self.infos["nbabs"]
|
|
||||||
nbabsjust = self.infos["nbabsjust"]
|
|
||||||
objects.append(Spacer(1, 2 * mm))
|
objects.append(Spacer(1, 2 * mm))
|
||||||
if nbabs:
|
if self.infos["nbabs"]:
|
||||||
|
metrique = scu.AssiduitesMetrics.short_to_str(
|
||||||
|
self.preferences["assi_metrique"], lower_plural=True
|
||||||
|
)
|
||||||
objects.append(
|
objects.append(
|
||||||
Paragraph(
|
Paragraph(
|
||||||
SU(
|
SU(
|
||||||
"%d absences (1/2 journées), dont %d justifiées."
|
f"""{self.infos['nbabs']:g} {metrique} d'absences, dont {
|
||||||
% (nbabs, nbabsjust)
|
self.infos['nbabsjust']:g} justifiées."""
|
||||||
),
|
),
|
||||||
self.CellStyle,
|
self.CellStyle,
|
||||||
)
|
)
|
||||||
|
@ -143,11 +143,14 @@ class BulletinGeneratorStandard(sco_bulletins_generator.BulletinGenerator):
|
|||||||
</a></p>
|
</a></p>
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
metrique = scu.AssiduitesMetrics.short_to_str(
|
||||||
|
self.preferences["assi_metrique"], lower_plural=True
|
||||||
|
)
|
||||||
story.append(
|
story.append(
|
||||||
Paragraph(
|
Paragraph(
|
||||||
SU(
|
SU(
|
||||||
"%(nbabs)s absences (1/2 journées), dont %(nbabsjust)s justifiées."
|
f"""{self.infos['nbabs']:g} {metrique} d'absences, dont {
|
||||||
% self.infos
|
self.infos['nbabsjust']:g} justifiées."""
|
||||||
),
|
),
|
||||||
self.CellStyle,
|
self.CellStyle,
|
||||||
)
|
)
|
||||||
|
@ -615,7 +615,7 @@ class BasePreferences:
|
|||||||
"assi_limit_annee",
|
"assi_limit_annee",
|
||||||
{
|
{
|
||||||
"initvalue": 1,
|
"initvalue": 1,
|
||||||
"title": "Ne lister que l'assiduités de l'année",
|
"title": "Ne lister que l'assiduité de l'année",
|
||||||
"explanation": "Limite l'affichage des listes d'assiduité et de justificatifs à l'année en cours",
|
"explanation": "Limite l'affichage des listes d'assiduité et de justificatifs à l'année en cours",
|
||||||
"input_type": "boolcheckbox",
|
"input_type": "boolcheckbox",
|
||||||
"labels": ["non", "oui"],
|
"labels": ["non", "oui"],
|
||||||
@ -679,6 +679,7 @@ class BasePreferences:
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
|
# La valeur stockée est scu.AssiduitesMetrics.SHORT: "1/2 J.", "J.", "H."
|
||||||
"assi_metrique",
|
"assi_metrique",
|
||||||
{
|
{
|
||||||
"initvalue": "1/2 J.",
|
"initvalue": "1/2 J.",
|
||||||
|
@ -288,24 +288,28 @@ def is_period_overlapping(
|
|||||||
|
|
||||||
|
|
||||||
class AssiduitesMetrics:
|
class AssiduitesMetrics:
|
||||||
"""Labels associés au métrique de l'assiduité"""
|
"""Labels associés à la métrique de l'assiduité"""
|
||||||
|
|
||||||
SHORT: list[str] = ["1/2 J.", "J.", "H."]
|
SHORT: list[str] = ["1/2 J.", "J.", "H."] # forme stockée en pref.
|
||||||
LONG: list[str] = ["Demi-journée", "Journée", "Heure"]
|
LONG: list[str] = ["Demi-journée", "Journée", "Heure"]
|
||||||
TAG: list[str] = ["demi", "journee", "heure"]
|
TAG: list[str] = ["demi", "journee", "heure"]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def short_to_str(cls, short_metric: str, lower_plural=False) -> str:
|
||||||
|
"""La forme longue à afficher à partir du code short, stocké en préf.
|
||||||
|
Raise ValueError if invalid arg."""
|
||||||
|
idx = cls.SHORT.index(short_metric)
|
||||||
|
return cls.LONG[idx].lower() + "s" if lower_plural else cls.LONG[idx].lower()
|
||||||
|
|
||||||
|
|
||||||
def translate_assiduites_metric(metric, inverse=True, short=True) -> str:
|
def translate_assiduites_metric(metric, inverse=True, short=True) -> str:
|
||||||
"""
|
"""
|
||||||
translate_assiduites_metric
|
|
||||||
|
|
||||||
SHORT[true] : "J." "H." "N." "1/2 J."
|
SHORT[true] : "J." "H." "N." "1/2 J."
|
||||||
SHORT[false] : "Journée" "Heure" "Nombre" "Demi-Journée"
|
SHORT[false] : "Journée" "Heure" "Nombre" "Demi-Journée"
|
||||||
|
|
||||||
inverse[false] : "demi" -> "1/2 J."
|
inverse[false] : "demi" -> "1/2 J."
|
||||||
inverse[true] : "1/2 J." -> "demi"
|
inverse[true] : "1/2 J." -> "demi"
|
||||||
|
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
metric (str): la métrique à traduire
|
metric (str): la métrique à traduire
|
||||||
inverse (bool, optional). Defaults to True.
|
inverse (bool, optional). Defaults to True.
|
||||||
|
Loading…
Reference in New Issue
Block a user