WIP: assiduités

This commit is contained in:
Emmanuel Viennet 2023-08-13 22:40:16 +02:00
parent 093ed2e0d7
commit 691bd10c91
10 changed files with 53 additions and 27 deletions

View File

@ -846,11 +846,15 @@ def _make_listes_sem(formsemestre: FormSemestre, with_absences=True):
"""
form_abs_tmpl += f"""
<a class="btn" href="{
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}"><button>Saisie Journalière</button></a>
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}"><button>Saisie journalière</button></a>
<a class="btn" href="{
url_for("assiduites.signal_assiduites_diff", scodoc_dept=g.scodoc_dept)
}?group_ids=%(group_id)s&formsemestre_id={formsemestre.formsemestre_id}"><button>Saisie Différée</button></a>
}?group_ids=%(group_id)s&formsemestre_id={
formsemestre.formsemestre_id
}"><button>Saisie différée</button></a>
</td>
"""
else:

View File

@ -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,

View File

@ -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;

View File

@ -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(

View File

@ -2,7 +2,16 @@
{% import 'bootstrap/wtf.html' as wtf %}
{% block app_content %}
<h1>Configuration du Module d'assiduité</h1>
<div class="row">
<h1>Configuration du suivi de l'assiduité</h1>
<div class="help"> Ces paramètres seront utilisés par tous les départements et
affectent notamment les comptages d'absences de tous les bulletins des
étudiants&nbsp;: ne changer que lorsque c'est vraiment nécessaire.
</div>
</div>
<div class="row">
<div class="col-md-8">

View File

@ -40,8 +40,9 @@
{% if readonly == "false" %}
<div style="margin: 1vh 0;">
<div id="forcemodule" style="display: none; margin:10px 0px;">Une préférence du semestre vous impose d'indiquer
le module !</div>
<div id="forcemodule" style="display: none; margin:10px 0px;">
Vous devez spécifier le module ! (voir réglage préférence du semestre)
</div>
<div>Module :{{moduleimpl_select|safe}}</div>
</div>
{% else %}

View File

@ -21,6 +21,10 @@
{{tableau | safe}}
<div class=""help">
Les comptes sont exprimés en {{ assi_metric }}.
</div>
<script>
const date_debut = "{{date_debut}}";
const date_fin = "{{date_fin}}";

View File

@ -57,18 +57,18 @@
<div class="sco_help">Ces images peuvent être intégrées dans les documents
générés par ScoDoc: bulletins, PV, etc.
</div>
<p><a class="stdlink" href="{{url_for('scodoc.configure_logos')}}">configuration des images et logos</a>
<p><a class="stdlink" href="{{url_for('scodoc.configure_logos')}}">Configuration des images et logos</a>
</p>
</section>
<section>
<h2>Exports Apogée</h2>
<p><a class="stdlink" href="{{url_for('scodoc.config_codes_decisions')}}">configuration des codes de décision</a>
<p><a class="stdlink" href="{{url_for('scodoc.config_codes_decisions')}}">Configuration des codes de décision</a>
</p>
</section>
<section>
<h2>Assiduités</h2>
<p><a class="stdlink" href="{{url_for('scodoc.config_assiduites')}}">configuration du module d'assiduités</a>
<p><a class="stdlink" href="{{url_for('scodoc.config_assiduites')}}">Configuration du suivi de l'assiduité</a>
</p>
</section>

View File

@ -807,8 +807,6 @@ def visu_assi_group():
fmt = request.args.get("format", "html")
group_ids: list[int] = request.args.get("group_ids", None)
etudiants: list[dict] = []
if group_ids is None:
group_ids = []
else:
@ -842,16 +840,17 @@ def visu_assi_group():
grp + ' <span class="fontred">' + groups_infos.groups_titles + "</span>"
)
print()
return render_template(
"assiduites/pages/visu_assi.j2",
tableau=table.html(),
gr_tit=gr_tit,
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"],
gr_tit=gr_tit,
group_ids=request.args.get("group_ids", None),
sco=ScoData(formsemestre=groups_infos.get_formsemestre()),
tableau=table.html(),
title=f"Assiduité {grp} {groups_infos.groups_titles}",
)

View File

@ -1,7 +1,7 @@
# -*- mode: python -*-
# -*- coding: utf-8 -*-
SCOVERSION = "9.6.8"
SCOVERSION = "9.6.9"
SCONAME = "ScoDoc"