From 26b59ee54792d1156ee8d1559fe74017c6d8b56a Mon Sep 17 00:00:00 2001
From: Emmanuel Viennet
Date: Mon, 15 Jul 2024 13:45:02 +0200
Subject: [PATCH] =?UTF-8?q?Page=20d=C3=A9tail=20validations=20accessible?=
=?UTF-8?q?=20=C3=A0=20tous,=20plus=20de=20d=C3=A9tails.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/but/jury_edit_manual.py | 8 +-
app/scodoc/sco_page_etud.py | 21 ++--
app/static/css/jury_delete_manual.css | 12 +-
app/templates/jury/jury_delete_manual.j2 | 137 +++++++++++++++--------
app/views/jury_validations.py | 2 +-
5 files changed, 119 insertions(+), 61 deletions(-)
diff --git a/app/but/jury_edit_manual.py b/app/but/jury_edit_manual.py
index 704376b8..beea5e9b 100644
--- a/app/but/jury_edit_manual.py
+++ b/app/but/jury_edit_manual.py
@@ -10,6 +10,7 @@ Non spécifique au BUT.
"""
from flask import render_template
+from flask_login import current_user
import sqlalchemy as sa
from app.models import (
@@ -21,13 +22,13 @@ from app.models import (
UniteEns,
ValidationDUT120,
)
+from app.scodoc.sco_permissions import Permission
from app.views import ScoData
def jury_delete_manual(etud: Identite):
- """Vue (réservée au chef de dept.)
- présentant *toutes* les décisions de jury concernant cet étudiant
- et permettant de les supprimer une à une.
+ """Vue présentant *toutes* les décisions de jury concernant cet étudiant
+ et permettant (si permission) de les supprimer une à une.
"""
sem_vals = ScolarFormSemestreValidation.query.filter_by(
etudid=etud.id, ue_id=None
@@ -68,4 +69,5 @@ def jury_delete_manual(etud: Identite):
annee_but_vals=annee_but_vals,
sco=ScoData(),
title=f"Toutes les décisions de jury enregistrées pour {etud.html_link_fiche()}",
+ read_only=not current_user.has_permission(Permission.EtudInscrit),
)
diff --git a/app/scodoc/sco_page_etud.py b/app/scodoc/sco_page_etud.py
index 6c8b08b2..162c0af8 100644
--- a/app/scodoc/sco_page_etud.py
+++ b/app/scodoc/sco_page_etud.py
@@ -302,21 +302,26 @@ def fiche_etud(etudid=None):
}">Visualiser les compétences BUT
"""
- if current_user.has_permission(Permission.EtudInscrit):
- info[
- "link_inscrire_ailleurs"
- ] = f"""Inscrire à un autre semestre
+ """
+ if current_user.has_permission(Permission.EtudInscrit)
+ else ""
+ )
+ can_edit_jury = current_user.has_permission(Permission.EtudInscrit)
+ info[
+ "link_inscrire_ailleurs"
+ ] += f"""
Éditer toutes décisions de jury
+ scodoc_dept=g.scodoc_dept, etudid=etudid,
+ read_only=not can_edit_jury)
+ }">{'Éditer' if can_edit_jury else 'Détail de'} toutes décisions de jury
"""
- else:
- info["link_inscrire_ailleurs"] = ""
info[
"link_bilan_ects"
] = f"""
Cette page liste toutes les décisions de jury connus de ScoDoc concernant cet étudiant
-et permet de les effacer une par une.
+{% if not read_only %}
+ et permet de les effacer une par une.
+{% endif %}
+{% if not read_only %}
Attention, il vous appartient de vérifier la cohérence du résultat !
En principe, l'usage de cette page devrait rester exceptionnel.
Aucune annulation n'est ici possible (vous devrez re-saisir les décisions via les
pages de saisie de jury habituelles).
+{% endif %}
+
+
+
{% if sem_vals.first() %}
{% endif %}
{% if ue_vals.first() %}
Décisions d'UEs
-
{% for v in ue_vals %}
- - {{v.html(detail=True)|safe}}
+
+ {{v.html(detail=True)|safe}}
+
+
UE {{v.ue.acronyme}} en
+
{{v.ue.formation.html()|safe}}
+ {% if v.ue.formation.is_apc() %}
+
Référentiel :
+ {{ v.ue.formation.referentiel_competence.get_title()
+ if v.ue.formation.referentiel_competence else 'pas de référentiel' }}
+
+ {% endif %}
+ {% if not read_only %}
-
+ {% endif %}
+
+
{% endfor %}
-
{% endif %}
{% if rcue_vals.first() %}
Décisions de RCUE (niveaux de compétences)
-
{% endif %}
{% if annee_but_vals.first() %}
{% endif %}
{% if dut120_vals.count() %}
Diplôme de DUT en 120 ECTS (dans un parcours BUT)
-
{% endif %}
{% if autorisations.first() %}
Autorisations d'inscriptions (passages)
-
+
{% for v in autorisations %}
- - {{v.html()|safe}}
-
{% endif %}
{% if not(
sem_vals.first() or ue_vals.first() or rcue_vals.first()
- or annee_but_vals.first() or autorisations.first())
+ or annee_but_vals.first() or autorisations.first() or dut120_vals.first() )
%}
aucune décision enregistrée
{% endif %}
-
-
retour à la fiche de {{etud.html_link_fiche()|safe}}
+
+
+
+
Retour à la fiche de {{etud.html_link_fiche()|safe}}
@@ -136,6 +175,7 @@ pages de saisie de jury habituelles).
{% block scripts %}
{{super()}}
+{% if not read_only %}
+{% endif %}
{% endblock %}
diff --git a/app/views/jury_validations.py b/app/views/jury_validations.py
index 3da7823c..8b5285ec 100644
--- a/app/views/jury_validations.py
+++ b/app/views/jury_validations.py
@@ -900,7 +900,7 @@ def erase_decisions_annee_formation(etudid: int, formation_id: int, annee: int):
methods=["GET", "POST"],
)
@scodoc
-@permission_required(Permission.EtudInscrit)
+@permission_required(Permission.ScoView)
def jury_delete_manual(etudid: int):
"""Efface toute les décisions d'une année pour cet étudiant"""
etud = Identite.get_etud(etudid)