forked from ScoDoc/ScoDoc
Page détail validations accessible à tous, plus de détails.
This commit is contained in:
parent
137afb21b6
commit
26b59ee547
@ -10,6 +10,7 @@ Non spécifique au BUT.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from flask import render_template
|
from flask import render_template
|
||||||
|
from flask_login import current_user
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
from app.models import (
|
from app.models import (
|
||||||
@ -21,13 +22,13 @@ from app.models import (
|
|||||||
UniteEns,
|
UniteEns,
|
||||||
ValidationDUT120,
|
ValidationDUT120,
|
||||||
)
|
)
|
||||||
|
from app.scodoc.sco_permissions import Permission
|
||||||
from app.views import ScoData
|
from app.views import ScoData
|
||||||
|
|
||||||
|
|
||||||
def jury_delete_manual(etud: Identite):
|
def jury_delete_manual(etud: Identite):
|
||||||
"""Vue (réservée au chef de dept.)
|
"""Vue présentant *toutes* les décisions de jury concernant cet étudiant
|
||||||
présentant *toutes* les décisions de jury concernant cet étudiant
|
et permettant (si permission) de les supprimer une à une.
|
||||||
et permettant de les supprimer une à une.
|
|
||||||
"""
|
"""
|
||||||
sem_vals = ScolarFormSemestreValidation.query.filter_by(
|
sem_vals = ScolarFormSemestreValidation.query.filter_by(
|
||||||
etudid=etud.id, ue_id=None
|
etudid=etud.id, ue_id=None
|
||||||
@ -68,4 +69,5 @@ def jury_delete_manual(etud: Identite):
|
|||||||
annee_but_vals=annee_but_vals,
|
annee_but_vals=annee_but_vals,
|
||||||
sco=ScoData(),
|
sco=ScoData(),
|
||||||
title=f"Toutes les décisions de jury enregistrées pour {etud.html_link_fiche()}",
|
title=f"Toutes les décisions de jury enregistrées pour {etud.html_link_fiche()}",
|
||||||
|
read_only=not current_user.has_permission(Permission.EtudInscrit),
|
||||||
)
|
)
|
||||||
|
@ -302,21 +302,26 @@ def fiche_etud(etudid=None):
|
|||||||
}">Visualiser les compétences BUT</a>
|
}">Visualiser les compétences BUT</a>
|
||||||
</span>
|
</span>
|
||||||
"""
|
"""
|
||||||
if current_user.has_permission(Permission.EtudInscrit):
|
info["link_inscrire_ailleurs"] = (
|
||||||
info[
|
f"""<span class="link_bul_pdf"><a class="stdlink" href="{
|
||||||
"link_inscrire_ailleurs"
|
|
||||||
] = f"""<span class="link_bul_pdf"><a class="stdlink" href="{
|
|
||||||
url_for("notes.formsemestre_inscription_with_modules_form",
|
url_for("notes.formsemestre_inscription_with_modules_form",
|
||||||
scodoc_dept=g.scodoc_dept, etudid=etudid)
|
scodoc_dept=g.scodoc_dept, etudid=etudid)
|
||||||
}">Inscrire à un autre semestre</a></span>
|
}">Inscrire à un autre semestre</a></span>
|
||||||
|
"""
|
||||||
|
if current_user.has_permission(Permission.EtudInscrit)
|
||||||
|
else ""
|
||||||
|
)
|
||||||
|
can_edit_jury = current_user.has_permission(Permission.EtudInscrit)
|
||||||
|
info[
|
||||||
|
"link_inscrire_ailleurs"
|
||||||
|
] += f"""
|
||||||
<span class="link_bul_pdf"><a class="stdlink" href="{
|
<span class="link_bul_pdf"><a class="stdlink" href="{
|
||||||
url_for("notes.jury_delete_manual",
|
url_for("notes.jury_delete_manual",
|
||||||
scodoc_dept=g.scodoc_dept, etudid=etudid)
|
scodoc_dept=g.scodoc_dept, etudid=etudid,
|
||||||
}">Éditer toutes décisions de jury</a></span>
|
read_only=not can_edit_jury)
|
||||||
|
}">{'Éditer' if can_edit_jury else 'Détail de'} toutes décisions de jury</a></span>
|
||||||
"""
|
"""
|
||||||
|
|
||||||
else:
|
|
||||||
info["link_inscrire_ailleurs"] = ""
|
|
||||||
info[
|
info[
|
||||||
"link_bilan_ects"
|
"link_bilan_ects"
|
||||||
] = f"""<span class="link_bul_pdf"><a class="stdlink" href="{
|
] = f"""<span class="link_bul_pdf"><a class="stdlink" href="{
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
div.jury_decisions_list div {
|
div.jury_decisions_list>div {
|
||||||
font-size: 120%;
|
font-size: 120%;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
margin-top: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
span.parcours {
|
span.parcours {
|
||||||
@ -21,3 +22,12 @@ div.ue_list_etud_validations ul li.new_semestre,
|
|||||||
div.ue_list_etud_validations ul li:first-child {
|
div.ue_list_etud_validations ul li:first-child {
|
||||||
margin-top: 16px;
|
margin-top: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
details {
|
||||||
|
margin-left: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.validation-details {
|
||||||
|
margin-left: 32px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
@ -12,121 +12,160 @@
|
|||||||
|
|
||||||
<p class="help">
|
<p class="help">
|
||||||
Cette page liste toutes les décisions de jury connus de ScoDoc concernant cet étudiant
|
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 %}
|
||||||
</p>
|
</p>
|
||||||
|
{% if not read_only %}
|
||||||
<p class="help">
|
<p class="help">
|
||||||
<b>Attention</b>, il vous appartient de vérifier la cohérence du résultat !
|
<b>Attention</b>, il vous appartient de vérifier la cohérence du résultat !
|
||||||
En principe, <b>l'usage de cette page devrait rester exceptionnel</b>.
|
En principe, <b>l'usage de cette page devrait rester exceptionnel</b>.
|
||||||
Aucune annulation n'est ici possible (vous devrez re-saisir les décisions via les
|
Aucune annulation n'est ici possible (vous devrez re-saisir les décisions via les
|
||||||
pages de saisie de jury habituelles).
|
pages de saisie de jury habituelles).
|
||||||
</p>
|
</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="scobox">
|
||||||
|
|
||||||
{% if sem_vals.first() %}
|
{% if sem_vals.first() %}
|
||||||
<div class="jury_decisions_list jury_decisions_sems">
|
<div class="jury_decisions_list jury_decisions_sems">
|
||||||
<div>Décisions de semestres</div>
|
<div>Décisions de semestres</div>
|
||||||
<ul>
|
|
||||||
{% for v in sem_vals %}
|
{% for v in sem_vals %}
|
||||||
<li>{{v.html()|safe}}
|
<details>
|
||||||
<form>
|
<summary>{{v.html()|safe}}</summary>
|
||||||
|
<div class="validation-details">
|
||||||
|
{% if not read_only %}
|
||||||
|
<form class="inline-form">
|
||||||
<button
|
<button
|
||||||
data-v_id="{{v.id}}" data-type="validation_formsemestre" data-etudid="{{etud.id}}"
|
data-v_id="{{v.id}}" data-type="validation_formsemestre" data-etudid="{{etud.id}}"
|
||||||
>effacer</button></form>
|
>effacer validation</button></form>
|
||||||
</li>
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if ue_vals.first() %}
|
{% if ue_vals.first() %}
|
||||||
<div class="jury_decisions_list jury_decisions_ues">
|
<div class="jury_decisions_list jury_decisions_ues">
|
||||||
<div>Décisions d'UEs</div>
|
<div>Décisions d'UEs</div>
|
||||||
<ul>
|
|
||||||
{% for v in ue_vals %}
|
{% for v in ue_vals %}
|
||||||
<li>{{v.html(detail=True)|safe}}
|
<details>
|
||||||
|
<summary>{{v.html(detail=True)|safe}}</summary>
|
||||||
|
<div class="validation-details">
|
||||||
|
<b>UE {{v.ue.acronyme}}</b> en
|
||||||
|
<a class="discretelink" href="{{
|
||||||
|
url_for('notes.ue_table', scodoc_dept=g.scodoc_dept,
|
||||||
|
formation_id=v.ue.formation.id, semestre_idx=v.ue.semestre_idx)
|
||||||
|
}}">{{v.ue.formation.html()|safe}}</a>
|
||||||
|
{% if v.ue.formation.is_apc() %}
|
||||||
|
<div>Référentiel :
|
||||||
|
{{ v.ue.formation.referentiel_competence.get_title()
|
||||||
|
if v.ue.formation.referentiel_competence else '<em>pas de référentiel</em>' }}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% if not read_only %}
|
||||||
<form class="inline-form">
|
<form class="inline-form">
|
||||||
<button data-v_id="{{v.id}}" data-type="validation_ue" data-etudid="{{etud.id}}"
|
<button data-v_id="{{v.id}}" data-type="validation_ue" data-etudid="{{etud.id}}"
|
||||||
>effacer</button>
|
>effacer validation d'UE</button>
|
||||||
</form>
|
</form>
|
||||||
</li>
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if rcue_vals.first() %}
|
{% if rcue_vals.first() %}
|
||||||
<div class="jury_decisions_list jury_decisions_rcues">
|
<div class="jury_decisions_list jury_decisions_rcues">
|
||||||
<div>Décisions de RCUE (niveaux de compétences)</div>
|
<div>Décisions de RCUE (niveaux de compétences)</div>
|
||||||
<ul>
|
|
||||||
{% for v in rcue_vals %}
|
{% for v in rcue_vals %}
|
||||||
<li>{{v.html()|safe}}
|
<details>
|
||||||
<form>
|
<summary>{{v.html()|safe}}</summary>
|
||||||
|
<div class="validation-details">
|
||||||
|
{% if not read_only %}
|
||||||
|
<form class="inline-form">
|
||||||
<button data-v_id="{{v.id}}" data-type="validation_rcue" data-etudid="{{etud.id}}"
|
<button data-v_id="{{v.id}}" data-type="validation_rcue" data-etudid="{{etud.id}}"
|
||||||
>effacer</button>
|
>effacer validation RCUE</button>
|
||||||
</form>
|
</form>
|
||||||
</li>
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if annee_but_vals.first() %}
|
{% if annee_but_vals.first() %}
|
||||||
<div class="jury_decisions_list jury_decisions_annees_but">
|
<div class="jury_decisions_list jury_decisions_annees_but">
|
||||||
<div>Décisions d'années BUT</div>
|
<div>Décisions d'années BUT</div>
|
||||||
<ul>
|
|
||||||
{% for v in annee_but_vals %}
|
{% for v in annee_but_vals %}
|
||||||
<li>{{v.html()|safe}}
|
<details>
|
||||||
<form>
|
<summary>{{v.html()|safe}}</summary>
|
||||||
|
<div class="validation-details">
|
||||||
|
{% if not read_only %}
|
||||||
|
<form class="inline-form">
|
||||||
<button data-v_id="{{v.id}}" data-type="validation_annee_but" data-etudid="{{etud.id}}"
|
<button data-v_id="{{v.id}}" data-type="validation_annee_but" data-etudid="{{etud.id}}"
|
||||||
>effacer</button>
|
>effacer décision année</button>
|
||||||
</form>
|
</form>
|
||||||
</li>
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if dut120_vals.count() %}
|
{% if dut120_vals.count() %}
|
||||||
<div class="jury_decisions_list jury_decisions_dut120">
|
<div class="jury_decisions_list jury_decisions_dut120">
|
||||||
<div>Diplôme de DUT en 120 ECTS (dans un parcours BUT)</div>
|
<div>Diplôme de DUT en 120 ECTS (dans un parcours BUT)</div>
|
||||||
<ul>
|
|
||||||
{% for v in dut120_vals %}
|
{% for v in dut120_vals %}
|
||||||
<li>{{v.html()|safe}}
|
<details>
|
||||||
|
<summary>{{v.html()|safe}}</summary>
|
||||||
|
<div class="validation-details">
|
||||||
|
{% if not read_only %}
|
||||||
<form>
|
<form>
|
||||||
<button data-v_id="{{v.id}}" data-type="validation_dut120" data-etudid="{{etud.id}}"
|
<button data-v_id="{{v.id}}" data-type="validation_dut120" data-etudid="{{etud.id}}"
|
||||||
>effacer</button>
|
>effacer diplôme DUT120</button>
|
||||||
</form>
|
</form>
|
||||||
</li>
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if autorisations.first() %}
|
{% if autorisations.first() %}
|
||||||
<div class="jury_decisions_list jury_decisions_autorisation_inscription">
|
<div class="jury_decisions_list jury_decisions_autorisation_inscription">
|
||||||
<div>Autorisations d'inscriptions (passages)</div>
|
<div>Autorisations d'inscriptions (passages)</div>
|
||||||
<ul>
|
|
||||||
{% for v in autorisations %}
|
{% for v in autorisations %}
|
||||||
<li>{{v.html()|safe}}
|
<details>
|
||||||
<form>
|
<summary>{{v.html()|safe}}</summary>
|
||||||
|
<div class="validation-details">
|
||||||
|
{% if not read_only %}
|
||||||
|
<form class="validation-details">
|
||||||
<button data-v_id="{{v.id}}" data-type="autorisation_inscription" data-etudid="{{etud.id}}"
|
<button data-v_id="{{v.id}}" data-type="autorisation_inscription" data-etudid="{{etud.id}}"
|
||||||
>effacer</button>
|
>effacer autorisation</button>
|
||||||
</form>
|
</form>
|
||||||
</li>
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if not(
|
{% if not(
|
||||||
sem_vals.first() or ue_vals.first() or rcue_vals.first()
|
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() )
|
||||||
%}
|
%}
|
||||||
<div>
|
<div>
|
||||||
<p class="fontred">aucune décision enregistrée</p>
|
<p class="fontred">aucune décision enregistrée</p>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div>
|
</div>
|
||||||
<p>retour à la fiche de {{etud.html_link_fiche()|safe}}
|
|
||||||
|
<div class="scobox">
|
||||||
|
<p>Retour à la fiche de {{etud.html_link_fiche()|safe}}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -136,6 +175,7 @@ pages de saisie de jury habituelles).
|
|||||||
{% block scripts %}
|
{% block scripts %}
|
||||||
{{super()}}
|
{{super()}}
|
||||||
|
|
||||||
|
{% if not read_only %}
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
const buttons = document.querySelectorAll('.jury_decisions_list button');
|
const buttons = document.querySelectorAll('.jury_decisions_list button');
|
||||||
@ -165,4 +205,5 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -900,7 +900,7 @@ def erase_decisions_annee_formation(etudid: int, formation_id: int, annee: int):
|
|||||||
methods=["GET", "POST"],
|
methods=["GET", "POST"],
|
||||||
)
|
)
|
||||||
@scodoc
|
@scodoc
|
||||||
@permission_required(Permission.EtudInscrit)
|
@permission_required(Permission.ScoView)
|
||||||
def jury_delete_manual(etudid: int):
|
def jury_delete_manual(etudid: int):
|
||||||
"""Efface toute les décisions d'une année pour cet étudiant"""
|
"""Efface toute les décisions d'une année pour cet étudiant"""
|
||||||
etud = Identite.get_etud(etudid)
|
etud = Identite.get_etud(etudid)
|
||||||
|
Loading…
Reference in New Issue
Block a user