Jurys avec notes en ATTente. #592

This commit is contained in:
Emmanuel Viennet 2023-02-10 23:43:16 +01:00
parent 1309e77bfa
commit 1e3dbe26c5
4 changed files with 29 additions and 3 deletions

View File

@ -779,6 +779,16 @@ class DecisionsProposeesAnnee(DecisionsProposees):
if self.formsemestre_pair is not None: if self.formsemestre_pair is not None:
sco_cache.invalidate_formsemestre(formsemestre_id=self.formsemestre_pair.id) sco_cache.invalidate_formsemestre(formsemestre_id=self.formsemestre_pair.id)
def has_notes_en_attente(self) -> bool:
"Vrai si l'étudiant a au moins une note en attente dans le semestre origine de ce deca"
res = (
self.res_pair
if self.formsemestre_pair
and (self.formsemestre.id == self.formsemestre_pair.id)
else self.res_impair
)
return res and self.etud.id in res.get_etudids_attente()
def record_all( def record_all(
self, no_overwrite: bool = True, only_validantes: bool = False self, no_overwrite: bool = True, only_validantes: bool = False
) -> bool: ) -> bool:
@ -787,11 +797,16 @@ class DecisionsProposeesAnnee(DecisionsProposees):
- Si "à cheval", ne modifie pas les codes UE de l'année scolaire précédente. - Si "à cheval", ne modifie pas les codes UE de l'année scolaire précédente.
- Pour les RCUE: n'enregistre que si la nouvelle décision est plus favorable que l'ancienne. - Pour les RCUE: n'enregistre que si la nouvelle décision est plus favorable que l'ancienne.
Si only_validantes, n'enregistre que des décisions "validantes" de droit: ADM ou CMP. Si only_validantes, n'enregistre que des décisions "validantes" de droit: ADM ou CMP,
et seulement si l'étudiant n'a pas de notes en ATTente.
Return: True si au moins un code modifié et enregistré. Return: True si au moins un code modifié et enregistré.
""" """
modif = False modif = False
# Vérification notes en attente dans formsemestre origine
if only_validantes and self.has_notes_en_attente():
return False
# Toujours valider dans l'ordre UE, RCUE, Année # Toujours valider dans l'ordre UE, RCUE, Année
annee_scolaire = self.formsemestre.annee_scolaire() annee_scolaire = self.formsemestre.annee_scolaire()
# UEs # UEs

View File

@ -172,6 +172,12 @@ class ResultatsSemestre(ResultatsCache):
if m.module.module_type == scu.ModuleType.SAE if m.module.module_type == scu.ModuleType.SAE
] ]
def get_etudids_attente(self) -> set[int]:
"""L'ensemble des etudids ayant au moins une note en ATTente"""
return set().union(
*[mr.etudids_attente for mr in self.modimpls_results.values()]
)
# --- JURY... # --- JURY...
def load_validations(self) -> ValidationsSemestre: def load_validations(self) -> ValidationsSemestre:
"""Load validations, set attribute and return value""" """Load validations, set attribute and return value"""

View File

@ -17,6 +17,8 @@
</li> </li>
<li>N'enregistre que les décisions <b>validantes de droit: ADM ou CMP</b>. <li>N'enregistre que les décisions <b>validantes de droit: ADM ou CMP</b>.
</li> </li>
<li>N'enregistre pas de décision si l'étudiant a une ou plusieurs notes en ATTente.
</li>
<li>L'assiduité n'est <b>pas</b> prise en compte. <li>L'assiduité n'est <b>pas</b> prise en compte.
</li> </li>
</ul> </ul>

View File

@ -2473,10 +2473,13 @@ def formsemestre_validation_but(
) )
if deca.formsemestre_impair and deca.inscription_etat_impair != scu.INSCRIT: if deca.formsemestre_impair and deca.inscription_etat_impair != scu.INSCRIT:
etat_ins = scu.ETATS_INSCRIPTION.get(deca.inscription_etat_impair, "inconnu?") etat_ins = scu.ETATS_INSCRIPTION.get(deca.inscription_etat_impair, "inconnu?")
warning += f"""<div class="warning">{etat_ins} en S{deca.formsemestre_impair.semestre_id}""" warning += f"""<div class="warning">{etat_ins} en S{deca.formsemestre_impair.semestre_id}</div>"""
if deca.formsemestre_pair and deca.inscription_etat_pair != scu.INSCRIT: if deca.formsemestre_pair and deca.inscription_etat_pair != scu.INSCRIT:
etat_ins = scu.ETATS_INSCRIPTION.get(deca.inscription_etat_pair, "inconnu?") etat_ins = scu.ETATS_INSCRIPTION.get(deca.inscription_etat_pair, "inconnu?")
warning += f"""<div class="warning">{etat_ins} en S{deca.formsemestre_pair.semestre_id}""" warning += f"""<div class="warning">{etat_ins} en S{deca.formsemestre_pair.semestre_id}</div>"""
if deca.has_notes_en_attente():
warning += f"""<div class="warning">{etud.nomprenom} a des notes en ATTente.
Vous devriez régler cela avant de statuer en jury !</div>"""
H.append( H.append(
f""" f"""
<div> <div>