diff --git a/app/scodoc/sco_formsemestre_status.py b/app/scodoc/sco_formsemestre_status.py index 4053e694e..4c3748f41 100755 --- a/app/scodoc/sco_formsemestre_status.py +++ b/app/scodoc/sco_formsemestre_status.py @@ -910,6 +910,31 @@ def _make_listes_sem(formsemestre: FormSemestre) -> str: }">Ajouter une partition""" ) + # --- Formulaire importation Assiduité excel (si autorisé) + if current_user.has_permission(Permission.AbsChange): + H.append( + f"""

+ + Importation de l'assiduité depuis un fichier excel +

""" + ) + + # --- Lien Traitement Justificatifs: + + if current_user.has_permission( + Permission.AbsJustifView + ) and current_user.has_permission(Permission.JustifValidate): + H.append( + f"""

+ + Traitement des justificatifs d'absence +

""" + ) + H.append("") return "\n".join(H) @@ -1134,20 +1159,6 @@ def formsemestre_status(formsemestre_id=None, check_parcours=True): "", ] - # --- Lien Traitement Justificatifs: - - if current_user.has_permission( - Permission.AbsJustifView - ) and current_user.has_permission(Permission.JustifValidate): - H.append( - f"""

- - Traitement des justificatifs d'absence -

""" - ) - # --- Lien mail enseignants: adrlist = list(mails_enseignants - {None, ""}) if adrlist: diff --git a/app/templates/assiduites/pages/feuille_abs_formsemestre.j2 b/app/templates/assiduites/pages/feuille_abs_formsemestre.j2 new file mode 100644 index 000000000..236154200 --- /dev/null +++ b/app/templates/assiduites/pages/feuille_abs_formsemestre.j2 @@ -0,0 +1,114 @@ +{% extends "sco_page.j2" %} +{% block styles %} +{{super()}} + + + +{% endblock styles %} + +{% block app_content %} + +

Importation de l'assiduité depuis un fichier excel

+

{{titre_form}}

+
+
+

Avertissement : le fichier doit respecter le format suivant

+ + + +

: Colonne optionnelle, les cases peuvent être vides

+

: Formats autorisés : +

+

+ +

La première ligne du fichier ne doit pas être une ligne d'entête

+ + +
+ + +
+ + +
+ +
+
+
+ +{% if erreurs %} +
+
+

Les erreurs suivantes ont été trouvées dans le fichier excel :

+ +
+
+{% endif %} + +{% endblock app_content %} \ No newline at end of file diff --git a/app/templates/assiduites/pages/signal_assiduites_hebdo.j2 b/app/templates/assiduites/pages/signal_assiduites_hebdo.j2 index 36985a8de..44f554141 100644 --- a/app/templates/assiduites/pages/signal_assiduites_hebdo.j2 +++ b/app/templates/assiduites/pages/signal_assiduites_hebdo.j2 @@ -113,6 +113,26 @@ cursor: pointer; } + #excel-content { + margin: 4px 0; + display: flex; + flex-direction: column; + gap: 4px; + justify-content: space-evenly; + } + + .hint { + font-style: italic; + } + + #excel-errors { + background-color: rgb(241, 209, 209); + } + + .stdlink{ + width: fit-content; + } + @@ -657,6 +677,8 @@ matin.textContent = `${temps.matin.debut} à ${temps.matin.fin}`; apresmidi.textContent = `${temps.apresmidi.debut} à ${temps.apresmidi.fin}`; + document.getElementById("excel-heures").value = Object.values(temps).map((el)=>Object.values(el).join(",")).join(","); + recupAssiduitesHebdo(updateTable); } @@ -685,6 +707,14 @@ updateTemps(temps); + const select = document.getElementById("moduleimpl_select"); + const excelModule = document.getElementById("excel-module"); + select.addEventListener("change", (ev)=>{ + excelModule.value = ev.target.value; + }); + + excelModule.value = select.value; +