forked from ScoDoc/ScoDoc
Update opolka/ScoDoc from ScoDoc/ScoDoc #2
@ -77,7 +77,9 @@ class ScoDocConfigurationForm(FlaskForm):
|
||||
Attention: si ce champ peut aussi être défini dans chaque département.""",
|
||||
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")
|
||||
cancel_scodoc = SubmitField("Annuler", render_kw={"formnovalidate": True})
|
||||
|
||||
|
@ -262,15 +262,16 @@ class BulletinGeneratorLegacy(sco_bulletins_generator.BulletinGenerator):
|
||||
|
||||
# ----- ABSENCES
|
||||
if self.preferences["bul_show_abs"]:
|
||||
nbabs = self.infos["nbabs"]
|
||||
nbabsjust = self.infos["nbabsjust"]
|
||||
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(
|
||||
Paragraph(
|
||||
SU(
|
||||
"%d absences (1/2 journées), dont %d justifiées."
|
||||
% (nbabs, nbabsjust)
|
||||
f"""{self.infos['nbabs']:g} {metrique} d'absences, dont {
|
||||
self.infos['nbabsjust']:g} justifiées."""
|
||||
),
|
||||
self.CellStyle,
|
||||
)
|
||||
|
@ -143,11 +143,14 @@ class BulletinGeneratorStandard(sco_bulletins_generator.BulletinGenerator):
|
||||
</a></p>
|
||||
"""
|
||||
)
|
||||
metrique = scu.AssiduitesMetrics.short_to_str(
|
||||
self.preferences["assi_metrique"], lower_plural=True
|
||||
)
|
||||
story.append(
|
||||
Paragraph(
|
||||
SU(
|
||||
"%(nbabs)s absences (1/2 journées), dont %(nbabsjust)s justifiées."
|
||||
% self.infos
|
||||
f"""{self.infos['nbabs']:g} {metrique} d'absences, dont {
|
||||
self.infos['nbabsjust']:g} justifiées."""
|
||||
),
|
||||
self.CellStyle,
|
||||
)
|
||||
|
@ -615,7 +615,7 @@ class BasePreferences:
|
||||
"assi_limit_annee",
|
||||
{
|
||||
"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",
|
||||
"input_type": "boolcheckbox",
|
||||
"labels": ["non", "oui"],
|
||||
@ -679,6 +679,7 @@ class BasePreferences:
|
||||
},
|
||||
),
|
||||
(
|
||||
# La valeur stockée est scu.AssiduitesMetrics.SHORT: "1/2 J.", "J.", "H."
|
||||
"assi_metrique",
|
||||
{
|
||||
"initvalue": "1/2 J.",
|
||||
|
@ -288,24 +288,28 @@ def is_period_overlapping(
|
||||
|
||||
|
||||
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"]
|
||||
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:
|
||||
"""
|
||||
translate_assiduites_metric
|
||||
|
||||
SHORT[true] : "J." "H." "N." "1/2 J."
|
||||
SHORT[false] : "Journée" "Heure" "Nombre" "Demi-Journée"
|
||||
|
||||
inverse[false] : "demi" -> "1/2 J."
|
||||
inverse[true] : "1/2 J." -> "demi"
|
||||
|
||||
|
||||
Args:
|
||||
metric (str): la métrique à traduire
|
||||
inverse (bool, optional). Defaults to True.
|
||||
|
Loading…
Reference in New Issue
Block a user