diff --git a/app/but/jury_edit_manual.py b/app/but/jury_edit_manual.py index 704376b8a..beea5e9b9 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 6c8b08b2c..162c0af89 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() %}
Décisions de semestres
-
    {% for v in sem_vals %} -
  • {{v.html()|safe}} -
    -
    -
  • +
    + {{v.html()|safe}} +
    + {% if not read_only %} +
    +
    + {% endif %} +
    +
    {% endfor %} -
{% endif %} {% if ue_vals.first() %}
Décisions d'UEs
-
+ {% endfor %} -
{% endif %} {% if rcue_vals.first() %}
Décisions de RCUE (niveaux de compétences)
-
{% endif %} {% if annee_but_vals.first() %}
Décisions d'années BUT
-
{% endif %} {% if dut120_vals.count() %}
Diplôme de DUT en 120 ECTS (dans un parcours BUT)
-
{% endif %} {% if autorisations.first() %}
Autorisations d'inscriptions (passages)
-
+ {% endfor %} - {% 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 3da7823cc..8b5285ec4 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)