From 691bd10c91355991726d6cda29bb082137a1b6aa Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Sun, 13 Aug 2023 22:40:16 +0200 Subject: [PATCH] =?UTF-8?q?WIP:=20assiduit=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scodoc/sco_formsemestre_status.py | 10 +++++++--- app/scodoc/sco_preferences.py | 19 +++++++++++++------ app/static/css/scodoc.css | 4 ++++ app/tables/visu_assiduites.py | 8 +++----- .../assiduites/pages/config_assiduites.j2 | 11 ++++++++++- .../pages/signal_assiduites_group.j2 | 5 +++-- app/templates/assiduites/pages/visu_assi.j2 | 4 ++++ app/templates/configuration.j2 | 6 +++--- app/views/assiduites.py | 11 +++++------ sco_version.py | 2 +- 10 files changed, 53 insertions(+), 27 deletions(-) diff --git a/app/scodoc/sco_formsemestre_status.py b/app/scodoc/sco_formsemestre_status.py index e37ba39d..00dfaa0c 100755 --- a/app/scodoc/sco_formsemestre_status.py +++ b/app/scodoc/sco_formsemestre_status.py @@ -846,11 +846,15 @@ def _make_listes_sem(formsemestre: FormSemestre, with_absences=True): """ form_abs_tmpl += f""" + url_for("assiduites.signal_assiduites_group", scodoc_dept=g.scodoc_dept) + }?group_ids=%(group_id)s&jour={ + datetime.date.today().isoformat() + }&formsemestre_id={formsemestre.id}"> + }?group_ids=%(group_id)s&formsemestre_id={ + formsemestre.formsemestre_id + }"> """ else: diff --git a/app/scodoc/sco_preferences.py b/app/scodoc/sco_preferences.py index e286ea12..e4b322c6 100644 --- a/app/scodoc/sco_preferences.py +++ b/app/scodoc/sco_preferences.py @@ -162,7 +162,7 @@ def _convert_pref_type(p, pref_spec): # special case for float values (where NULL means 0) p["value"] = float(p["value"] or 0) elif typ == "int": - p["value"] = int(p["value"] or 0) + p["value"] = int(float(p["value"] or 0)) else: raise ValueError("invalid preference type") @@ -198,6 +198,13 @@ def _get_pref_default_value_from_config(name, pref_spec): _INSTALLED_FONTS = ", ".join(sco_pdf.get_available_font_names()) +ASSIDUITES_METRIC_LABEL = { + # l'ordre est important, c'est celui-du menu. Le defaut en 1er donc. + "1/2 J.": "demi-journée", + "J.": "journee", + "H.": "heure", +} + PREF_CATEGORIES = ( # sur page "Paramètres" ("general", {"title": ""}), # voir paramètre titlr de TrivialFormulator @@ -658,10 +665,10 @@ class BasePreferences(object): { "initvalue": "1/2 J.", "input_type": "menu", - "labels": ["1/2 J.", "J.", "H."], - "allowed_values": ["1/2 J.", "J.", "H."], + "labels": list(ASSIDUITES_METRIC_LABEL.values()), + "allowed_values": list(ASSIDUITES_METRIC_LABEL.keys()), "title": "Métrique de l'assiduité", - "explanation": "Unité utilisée dans la fiche étudiante, le bilan, et dans les calculs (J. = journée, H. = heure)", + "explanation": "Unité utilisée dans la fiche étudiante, les bilans et les calculs", "category": "assi", "only_global": True, }, @@ -669,10 +676,10 @@ class BasePreferences(object): ( "assi_seuil", { - "initvalue": 3.0, + "initvalue": 3, "size": 10, "title": "Seuil d'alerte des absences", - "type": "float", + "type": "int", "explanation": "Nombres d'absences limite avant alerte dans le bilan (utilisation de l'unité métrique ↑ )", "category": "assi", "only_global": True, diff --git a/app/static/css/scodoc.css b/app/static/css/scodoc.css index 0a64032f..df293cf7 100644 --- a/app/static/css/scodoc.css +++ b/app/static/css/scodoc.css @@ -1792,6 +1792,10 @@ td.formsemestre_status_inscrits { text-align: center; } +div.formsemestre_status button { + margin-left: 12px;; +} + td.rcp_titre_sem a.jury_link { margin-left: 8px; color: red; diff --git a/app/tables/visu_assiduites.py b/app/tables/visu_assiduites.py index 304e827f..0907da90 100644 --- a/app/tables/visu_assiduites.py +++ b/app/tables/visu_assiduites.py @@ -125,11 +125,9 @@ class RowAssi(tb.Row): "absent": ["Absences", 0.0, 0.0], } - assi_metric = { - "H.": "heure", - "J.": "journee", - "1/2 J.": "demi", - }.get(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(): compte_etat = scass.get_assiduites_stats( diff --git a/app/templates/assiduites/pages/config_assiduites.j2 b/app/templates/assiduites/pages/config_assiduites.j2 index 417d0275..05c6a439 100644 --- a/app/templates/assiduites/pages/config_assiduites.j2 +++ b/app/templates/assiduites/pages/config_assiduites.j2 @@ -2,7 +2,16 @@ {% import 'bootstrap/wtf.html' as wtf %} {% block app_content %} -

Configuration du Module d'assiduité

+
+ +

Configuration du suivi de l'assiduité

+ +
Ces paramètres seront utilisés par tous les départements et +affectent notamment les comptages d'absences de tous les bulletins des +étudiants : ne changer que lorsque c'est vraiment nécessaire. +
+ +
diff --git a/app/templates/assiduites/pages/signal_assiduites_group.j2 b/app/templates/assiduites/pages/signal_assiduites_group.j2 index d0c1a8a1..927e54b1 100644 --- a/app/templates/assiduites/pages/signal_assiduites_group.j2 +++ b/app/templates/assiduites/pages/signal_assiduites_group.j2 @@ -40,8 +40,9 @@ {% if readonly == "false" %}
- +
Module :{{moduleimpl_select|safe}}
{% else %} diff --git a/app/templates/assiduites/pages/visu_assi.j2 b/app/templates/assiduites/pages/visu_assi.j2 index 33aa13c7..07fb6974 100644 --- a/app/templates/assiduites/pages/visu_assi.j2 +++ b/app/templates/assiduites/pages/visu_assi.j2 @@ -21,6 +21,10 @@ {{tableau | safe}} +
+Les comptes sont exprimés en {{ assi_metric }}. +
+