From f4f6c13d79975b597333b629798d8e5ed24885ec Mon Sep 17 00:00:00 2001 From: Iziram Date: Wed, 29 May 2024 15:59:19 +0200 Subject: [PATCH] =?UTF-8?q?Assiduit=C3=A9=20:=20signal=5Fassiduites=5Fhebd?= =?UTF-8?q?o=20:=20v2=20sans=20mobile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/static/js/assiduites.js | 15 +- .../pages/signal_assiduites_hebdo.j2 | 205 +++++++++++++++--- app/views/assiduites.py | 9 +- 3 files changed, 197 insertions(+), 32 deletions(-) diff --git a/app/static/js/assiduites.js b/app/static/js/assiduites.js index a9ded03c..089469eb 100644 --- a/app/static/js/assiduites.js +++ b/app/static/js/assiduites.js @@ -68,7 +68,13 @@ async function async_post(path, data, success, errors) { const responseData = await response.json(); success(responseData); } else { - throw new Error("Network response was not ok."); + if (response.status == 404) { + response.json().then((data) => { + if (errors) errors(data); + }); + } else { + throw new Error("Network response was not ok."); + } } } catch (error) { console.error(error); @@ -615,7 +621,10 @@ function erreurModuleImpl(message) { openAlertModal("Sélection du module", content); } - if (message == "L'étudiant n'est pas inscrit au module") { + if ( + message == "L'étudiant n'est pas inscrit au module" || + message == "param 'moduleimpl_id': etud non inscrit" + ) { const HTML = `

Attention, l'étudiant n'est pas inscrit à ce module.

Si c'est une erreur, veuillez voir avec le ou les responsables de votre scodoc.

@@ -822,7 +831,7 @@ function dateCouranteEstTravaillee() { const nouvelleDate = retourJourTravail(date); $("#date").datepicker("setDate", nouvelleDate); let msg = "Le jour sélectionné"; - if ((new Date()).format("YYYY-MM-DD") == date.format("YYYY-MM-DD")) { + if (new Date().format("YYYY-MM-DD") == date.format("YYYY-MM-DD")) { msg = "Aujourd'hui"; } const att = document.createTextNode( diff --git a/app/templates/assiduites/pages/signal_assiduites_hebdo.j2 b/app/templates/assiduites/pages/signal_assiduites_hebdo.j2 index 5b2a7f28..09a0e750 100644 --- a/app/templates/assiduites/pages/signal_assiduites_hebdo.j2 +++ b/app/templates/assiduites/pages/signal_assiduites_hebdo.j2 @@ -108,6 +108,11 @@ background-color: var(--color-conflit); } + .conflit_calendar{ + font-size: 1.5em; + cursor: pointer; + } + @@ -185,6 +190,9 @@ @@ -654,6 +795,15 @@ document.addEventListener("DOMContentLoaded", ()=>{ Le matin 9h à 12h et l'après-midi de 13h à 17h +{% if readonly %} +

+ Ouvert en mode lecture seule. +

+ +{% endif %} @@ -676,8 +826,9 @@ document.addEventListener("DOMContentLoaded", ()=>{ {% endif %} {% endfor %} + {% if not readonly and not non_present %} - {# Ne pas afficher si preference "non presences" #} + {# Ne pas afficher si preference "non presences" / "readonly" #} {% for jour in hebdo_jours %} {% if not jour[0] or jour[1][0] not in ['Samedi', 'Dimanche'] %} @@ -689,13 +840,13 @@ document.addEventListener("DOMContentLoaded", ()=>{ {% endif %} {% endfor %} - + {% endif %} {% for etud in etudiants %} - + {# Sera rempli en JS #} {# Ne pas afficher bouton présent si pref "non présences" #} {#
{{ etud.nomprenom }}{{ etud.nom_prenom() }} diff --git a/app/views/assiduites.py b/app/views/assiduites.py index f84330b6..99ce6ab6 100644 --- a/app/views/assiduites.py +++ b/app/views/assiduites.py @@ -2070,8 +2070,6 @@ def signal_assiduites_hebdo(): grp + ' ' + groups_infos.groups_titles + "" ) - # TODO vérif perm AbsChange -> readonly - # Gestion des jours jours: dict[str, list[str]] = { "lun": [ @@ -2113,12 +2111,19 @@ def signal_assiduites_hebdo(): return render_template( "assiduites/pages/signal_assiduites_hebdo.j2", + title="Assiduité: saisie hebdomadaire", gr=gr_tit, etudiants=etudiants, moduleimpl_select=_module_selector( formsemestre=formsemestre, moduleimpl_id=moduleimpl_id ), hebdo_jours=hebdo_jours, + readonly=not current_user.has_permission(Permission.AbsChange), + non_present=sco_preferences.get_preference( + "non_present", + formsemestre_id=formsemestre_id, + dept_id=g.scodoc_dept_id, + ), )