From ba1089e8a922e1b0a9e132f07b6b509cdbb1a79c Mon Sep 17 00:00:00 2001
From: Emmanuel Viennet
Date: Thu, 16 Nov 2023 12:31:53 +0100
Subject: [PATCH] =?UTF-8?q?Retire=20message=20d'avertissement=20sur=20sais?=
=?UTF-8?q?ie=20note=20s'il=20y=20a=20un=20RCUE=20d=C3=A9j=C3=A0=20valid?=
=?UTF-8?q?=C3=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/comp/res_but.py | 11 +++++++----
app/comp/res_compat.py | 3 ++-
app/models/but_validations.py | 1 -
app/scodoc/sco_saisie_notes.py | 18 +++++++++++-------
4 files changed, 20 insertions(+), 13 deletions(-)
diff --git a/app/comp/res_but.py b/app/comp/res_but.py
index 238f38d5a8..1d7b3ad7f9 100644
--- a/app/comp/res_but.py
+++ b/app/comp/res_but.py
@@ -307,7 +307,7 @@ class ResultatsSemestreBUT(NotesTableCompat):
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
émanant de ce formsemestre pour cet étudiant.
prend aussi en compte les autorisations de passage.
@@ -318,9 +318,12 @@ class ResultatsSemestreBUT(NotesTableCompat):
or ApcValidationAnnee.query.filter_by(
formsemestre_id=self.formsemestre.id, etudid=etudid
).count()
- or ApcValidationRCUE.query.filter_by(
- formsemestre_id=self.formsemestre.id, etudid=etudid
- ).count()
+ or (
+ include_rcues
+ and ApcValidationRCUE.query.filter_by(
+ formsemestre_id=self.formsemestre.id, etudid=etudid
+ ).count()
+ )
)
def get_validations_annee(self) -> dict[int, ApcValidationAnnee]:
diff --git a/app/comp/res_compat.py b/app/comp/res_compat.py
index 2934f1e93d..0e6cf75718 100644
--- a/app/comp/res_compat.py
+++ b/app/comp/res_compat.py
@@ -290,9 +290,10 @@ class NotesTableCompat(ResultatsSemestre):
]
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.
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.
"""
return bool(
diff --git a/app/models/but_validations.py b/app/models/but_validations.py
index 7efd3069e5..9a6953b942 100644
--- a/app/models/but_validations.py
+++ b/app/models/but_validations.py
@@ -7,7 +7,6 @@ from app import db
from app.models import CODE_STR_LEN
from app.models.but_refcomp import ApcNiveau
from app.models.etudiants import Identite
-from app.models.formations import Formation
from app.models.formsemestre import FormSemestre
from app.models.ues import UniteEns
diff --git a/app/scodoc/sco_saisie_notes.py b/app/scodoc/sco_saisie_notes.py
index 489165bd01..e67ebea569 100644
--- a/app/scodoc/sco_saisie_notes.py
+++ b/app/scodoc/sco_saisie_notes.py
@@ -294,7 +294,7 @@ def do_evaluation_upload_xls():
len(absents)} absents, {nb_suppress} note supprimées)
"""
if etudids_with_decisions:
- msg += """Important: il y avait déjà des décisions de jury
+ msg += """
Important: il y avait déjà des décisions de jury
enregistrées, qui sont peut-être à revoir suite à cette modification !
"""
return 1, msg
@@ -642,7 +642,7 @@ def notes_add(
)
cursor.execute(
"""DELETE FROM notes_notes
- WHERE etudid = %(etudid)s
+ WHERE etudid = %(etudid)s
AND evaluation_id = %(evaluation_id)s
""",
args,
@@ -660,7 +660,7 @@ def notes_add(
nb_suppress += 1
if changed:
etudids_changed.append(etudid)
- if res.etud_has_decision(etudid):
+ if res.etud_has_decision(etudid, include_rcues=False):
etudids_with_decision.append(etudid)
except Exception as exc:
log("*** exception in notes_add")
@@ -691,7 +691,7 @@ def saisie_notes_tableur(evaluation_id, group_ids=()):
avez l'autorisation d'effectuer cette opération)
Continuer
"""
@@ -740,7 +740,7 @@ def saisie_notes_tableur(evaluation_id, group_ids=()):
"""
@@ -1168,7 +1168,11 @@ def _form_saisie_notes(
return 'Aucun étudiant sélectionné !
'
# 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_decisions = sum(decisions_jury.values())
@@ -1308,7 +1312,7 @@ def _form_saisie_notes(
)
H.append(tf.getform()) # check and init
H.append(
- f"""Terminer
"""