Retire message d'avertissement sur saisie note s'il y a un RCUE déjà validé

This commit is contained in:
Emmanuel Viennet 2023-11-16 12:31:53 +01:00
parent bb9995fca6
commit ba1089e8a9
4 changed files with 20 additions and 13 deletions

View File

@ -307,7 +307,7 @@ class ResultatsSemestreBUT(NotesTableCompat):
return ues_ids return ues_ids
def etud_has_decision(self, etudid) -> bool: def etud_has_decision(self, etudid, include_rcues=True) -> bool:
"""True s'il y a une décision (quelconque) de jury """True s'il y a une décision (quelconque) de jury
émanant de ce formsemestre pour cet étudiant. émanant de ce formsemestre pour cet étudiant.
prend aussi en compte les autorisations de passage. prend aussi en compte les autorisations de passage.
@ -318,9 +318,12 @@ class ResultatsSemestreBUT(NotesTableCompat):
or ApcValidationAnnee.query.filter_by( or ApcValidationAnnee.query.filter_by(
formsemestre_id=self.formsemestre.id, etudid=etudid formsemestre_id=self.formsemestre.id, etudid=etudid
).count() ).count()
or ApcValidationRCUE.query.filter_by( or (
formsemestre_id=self.formsemestre.id, etudid=etudid include_rcues
).count() and ApcValidationRCUE.query.filter_by(
formsemestre_id=self.formsemestre.id, etudid=etudid
).count()
)
) )
def get_validations_annee(self) -> dict[int, ApcValidationAnnee]: def get_validations_annee(self) -> dict[int, ApcValidationAnnee]:

View File

@ -290,9 +290,10 @@ class NotesTableCompat(ResultatsSemestre):
] ]
return etudids return etudids
def etud_has_decision(self, etudid) -> bool: def etud_has_decision(self, etudid, include_rcues=True) -> bool:
"""True s'il y a une décision de jury pour cet étudiant émanant de ce formsemestre. """True s'il y a une décision de jury pour cet étudiant émanant de ce formsemestre.
prend aussi en compte les autorisations de passage. prend aussi en compte les autorisations de passage.
Si include_rcues, prend en compte les validation d'RCUEs en BUT (pas d'effet en classic).
Sous-classée en BUT pour les RCUEs et années. Sous-classée en BUT pour les RCUEs et années.
""" """
return bool( return bool(

View File

@ -7,7 +7,6 @@ from app import db
from app.models import CODE_STR_LEN from app.models import CODE_STR_LEN
from app.models.but_refcomp import ApcNiveau from app.models.but_refcomp import ApcNiveau
from app.models.etudiants import Identite from app.models.etudiants import Identite
from app.models.formations import Formation
from app.models.formsemestre import FormSemestre from app.models.formsemestre import FormSemestre
from app.models.ues import UniteEns from app.models.ues import UniteEns

View File

@ -660,7 +660,7 @@ def notes_add(
nb_suppress += 1 nb_suppress += 1
if changed: if changed:
etudids_changed.append(etudid) etudids_changed.append(etudid)
if res.etud_has_decision(etudid): if res.etud_has_decision(etudid, include_rcues=False):
etudids_with_decision.append(etudid) etudids_with_decision.append(etudid)
except Exception as exc: except Exception as exc:
log("*** exception in notes_add") log("*** exception in notes_add")
@ -1168,7 +1168,11 @@ def _form_saisie_notes(
return '<div class="ue_warning"><span>Aucun étudiant sélectionné !</span></div>' return '<div class="ue_warning"><span>Aucun étudiant sélectionné !</span></div>'
# Décisions de jury existantes ? # Décisions de jury existantes ?
decisions_jury = {etudid: res.etud_has_decision(etudid) for etudid in etudids} # en BUT on ne considère pas les RCUEs car ils peuvenut avoir été validés depuis
# d'autres semestres (les validations de RCUE n'indiquent pas si elles sont "externes")
decisions_jury = {
etudid: res.etud_has_decision(etudid, include_rcues=False) for etudid in etudids
}
# Nb de décisions de jury (pour les inscrits à l'évaluation): # Nb de décisions de jury (pour les inscrits à l'évaluation):
nb_decisions = sum(decisions_jury.values()) nb_decisions = sum(decisions_jury.values())