From 1699febab8b0b32a1692fd97ae315ce0f66347cd Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Sat, 16 Dec 2023 22:53:02 +0100 Subject: [PATCH] ajout_justificatif_etud: upload fichiers + corrige permissions --- README.md | 2 +- app/api/justificatifs.py | 12 ++++++++++-- app/models/assiduites.py | 2 +- app/pe/README.md | 5 +---- app/tables/visu_assiduites.py | 4 ++-- .../assiduites/pages/ajout_justificatif_etud.j2 | 8 ++++---- 6 files changed, 19 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index d0194b45e..b17799fee 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # ScoDoc - Gestion de la scolarité - Version ScoDoc 9 -(c) Emmanuel Viennet 1999 - 2022 (voir LICENCE.txt). +(c) Emmanuel Viennet 1999 - 2024 (voir LICENCE.txt). Installation: voir instructions à jour sur diff --git a/app/api/justificatifs.py b/app/api/justificatifs.py index d0b10ec46..fd71effbd 100644 --- a/app/api/justificatifs.py +++ b/app/api/justificatifs.py @@ -651,10 +651,11 @@ def justif_import(justif_id: int = None): ) @scodoc @login_required -@permission_required(Permission.AbsJustifView) +@permission_required(Permission.ScoView) def justif_export(justif_id: int | None = None, filename: str | None = None): """ - Retourne un fichier d'une archive d'un justificatif + Retourne un fichier d'une archive d'un justificatif. + La permission est ScoView + (AbsJustifView ou être l'auteur du justifcatif) """ # On récupère le justificatif concerné query: Query = Justificatif.query.filter_by(id=justif_id) @@ -662,6 +663,13 @@ def justif_export(justif_id: int | None = None, filename: str | None = None): query = query.join(Identite).filter_by(dept_id=g.scodoc_dept_id) justificatif_unique: Justificatif = query.first_or_404() + # Vérification des permissions + if not ( + current_user.has_permission(Permission.AbsJustifView) + or justificatif_unique.user_id == current_user.id + ): + return json_error(401, "non autorisé à voir ce fichier") + # On récupère l'archive concernée archive_name: str = justificatif_unique.fichier if archive_name is None: diff --git a/app/models/assiduites.py b/app/models/assiduites.py index 85b0fe335..7e9ab274c 100644 --- a/app/models/assiduites.py +++ b/app/models/assiduites.py @@ -423,7 +423,7 @@ class Justificatif(db.Model): ) db.session.add(nouv_justificatif) - + db.session.commit() log(f"create_justificatif: etudid={etud.id} {nouv_justificatif}") Scolog.logdb( method="create_justificatif", diff --git a/app/pe/README.md b/app/pe/README.md index bace3081b..b71bc863a 100644 --- a/app/pe/README.md +++ b/app/pe/README.md @@ -1,8 +1,5 @@ -# Module "Avis de poursuite d'étude" +# Module "Avis de poursuite d'étude" Conçu et développé sur ScoDoc 7 par Cléo Baras (IUT de Grenoble) pour le DUT. Actuellement non opérationnel dans ScoDoc 9. - - - diff --git a/app/tables/visu_assiduites.py b/app/tables/visu_assiduites.py index 07fb7dec7..304ab405e 100644 --- a/app/tables/visu_assiduites.py +++ b/app/tables/visu_assiduites.py @@ -131,9 +131,9 @@ class RowAssi(tb.Row): def _get_etud_stats(self, etud: Identite) -> dict[str, list[str, float, float]]: # XXX TODO @iziram commentaire sur la fonction et la var. retour retour: dict[str, tuple[str, float, float]] = { - "present": ["Présences", 0.0, 0.0], - "retard": ["Retards", 0.0, 0.0], "absent": ["Absences", 0.0, 0.0], + "retard": ["Retards", 0.0, 0.0], + "present": ["Présences", 0.0, 0.0], } assi_metric = scu.translate_assiduites_metric( diff --git a/app/templates/assiduites/pages/ajout_justificatif_etud.j2 b/app/templates/assiduites/pages/ajout_justificatif_etud.j2 index 007ded7ca..4d28e6287 100644 --- a/app/templates/assiduites/pages/ajout_justificatif_etud.j2 +++ b/app/templates/assiduites/pages/ajout_justificatif_etud.j2 @@ -34,7 +34,7 @@ div.submit > input { {% endfor %} -
+
{{ form.hidden_tag() }} {# Dates et heures #} @@ -66,10 +66,10 @@ div.submit > input { {{ render_field_errors(form, 'assi_raison') }} {# Fichier(s) justificatif(s) #} -
chargement fichier désactivé (travaux en cours), passer ensuite par "modifier le justificatif" - {#
{{ form.fichiers.label }}
+
+
{{ form.fichiers.label }}
{{ form.fichiers() }} - {{ render_field_errors(form, 'fichiers') }} #} + {{ render_field_errors(form, 'fichiers') }}
{# Date dépot #} {{ form.entry_date.label }} : {{ form.entry_date }}