From 6b985620e91f8eeafd5b8e557114f04a8e87c5be Mon Sep 17 00:00:00 2001 From: Iziram Date: Mon, 22 Apr 2024 15:46:17 +0200 Subject: [PATCH] =?UTF-8?q?Assiduit=C3=A9=20:=20signal=5Fassiduites=5Fdiff?= =?UTF-8?q?=20:=20plage=20depuis=20args=20url=20closes=20#741?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/signal_assiduites_diff.j2 | 19 +++++++++- app/views/assiduites.py | 36 ++++++++++++++++++- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/app/templates/assiduites/pages/signal_assiduites_diff.j2 b/app/templates/assiduites/pages/signal_assiduites_diff.j2 index 76d40d43..0c5c800e 100644 --- a/app/templates/assiduites/pages/signal_assiduites_diff.j2 +++ b/app/templates/assiduites/pages/signal_assiduites_diff.j2 @@ -525,12 +525,29 @@ if (window.forceModule) { } }); } + +const defaultPlage = {{ nouv_plage | safe}} || []; + /** * Fonction exécutée au lancement de la page * - On affiche ou non les photos des étudiants * - On vérifie si la date est un jour travaillé */ async function main() { + + // On initialise les sélecteurs avec les valeurs par défaut (si elles existent) + if (defaultPlage.every((e) => e)) { + $("#date").datepicker("setDate", defaultPlage[0]); + $("#debut").val(defaultPlage[1]); + $("#fin").val(defaultPlage[2]); + + // On ajoute la période si la date est un jour travaillé + if(dateCouranteEstTravaillee()){ + await nouvellePeriode(); + } + } + + const checked = localStorage.getItem("scodoc-etud-pdp") == "true"; afficherPDP(checked); $("#date").on("change", async function (d) { @@ -539,7 +556,7 @@ async function main() { }); } -main(); +window.addEventListener("load", main); diff --git a/app/views/assiduites.py b/app/views/assiduites.py index 1981473f..82990fcb 100644 --- a/app/views/assiduites.py +++ b/app/views/assiduites.py @@ -1919,8 +1919,29 @@ def _preparer_objet( @scodoc @permission_required(Permission.AbsChange) def signal_assiduites_diff(): - """TODO documenter + """ Utilisé notamment par "Saisie différée" sur tableau de bord semetstre" + + Arguments de la requête: + + - group_ids : liste des groupes + example : group_ids=1,2,3 + - formsemestre_id : id du formsemestre + example : formsemestre_id=1 + - moduleimpl_id : id du moduleimpl + example : moduleimpl_id=1 + + (Permet de pré-générer une plage. Si non renseigné, la plage sera vide) + (Les trois valeurs suivantes doivent être renseignées ensemble) + - date + example : date=01/01/2021 + - heure_debut + example : heure_debut=08:00 + - heure_fin + example : heure_fin=10:00 + + Exemple de requête : + signal_assiduites_diff?formsemestre_id=67&group_ids=400&moduleimpl_id=1229&date=15/04/2024&heure_debut=12:34&heure_fin=12:55 """ # Récupération des paramètres de la requête group_ids: list[int] = request.args.get("group_ids", None) @@ -1962,11 +1983,23 @@ def signal_assiduites_diff(): grp + ' ' + groups_infos.groups_titles + "" ) + # Pré-remplissage des sélecteurs moduleimpl_id = request.args.get("moduleimpl_id", -1) try: moduleimpl_id = int(moduleimpl_id) except ValueError: moduleimpl_id = -1 + # date fra (dd/mm/yyyy) + date = request.args.get("date", "") + # heures (hh:mm) + heure_deb = request.args.get("heure_debut", "") + heure_fin = request.args.get("heure_fin", "") + + # vérifications des sélecteurs + date = date if re.match(r"^\d{2}\/\d{2}\/\d{4}$", date) else "" + heure_deb = heure_deb if re.match(r"^[0-2]\d:[0-5]\d$", heure_deb) else "" + heure_fin = heure_fin if re.match(r"^[0-2]\d:[0-5]\d$", heure_fin) else "" + nouv_plage: list[str] = [date, heure_deb, heure_fin] return render_template( "assiduites/pages/signal_assiduites_diff.j2", @@ -1987,6 +2020,7 @@ def signal_assiduites_diff(): formsemestre_id=formsemestre_id, dept_id=g.scodoc_dept_id, ), + nouv_plage=nouv_plage, )