diff --git a/app/but/jury_but.py b/app/but/jury_but.py
index f81dab4fd3..9b1c5e8c9d 100644
--- a/app/but/jury_but.py
+++ b/app/but/jury_but.py
@@ -269,7 +269,11 @@ class DecisionsProposeesAnnee(DecisionsProposees):
self.explanation = expl_rcues + f" et {self.nb_rcues_under_8} < 8"
else:
self.codes = [sco_codes.RED, sco_codes.NAR, sco_codes.ADJ] + self.codes
- self.explanation = expl_rcues + f" et {self.nb_rcues_under_8} niveau < 8"
+ self.explanation = (
+ expl_rcues
+ + f""" et {self.nb_rcues_under_8}
+ niveau{'x' if self.nb_rcues_under_8 > 1 else ''} < 8"""
+ )
#
def infos(self) -> str:
diff --git a/app/but/jury_but_recap.py b/app/but/jury_but_recap.py
index 672603d228..e19d5fc3fe 100644
--- a/app/but/jury_but_recap.py
+++ b/app/but/jury_but_recap.py
@@ -9,7 +9,6 @@
import time
from flask import g, url_for
-from app import db
from app.but import jury_but
from app.comp.res_but import ResultatsSemestreBUT
@@ -28,11 +27,11 @@ from app.scodoc.sco_codes_parcours import (
from app.scodoc import sco_formsemestre_status
from app.scodoc import html_sco_header
from app.scodoc import sco_utils as scu
-from app.scodoc.sco_exceptions import ScoException, ScoValueError
+from app.scodoc.sco_exceptions import ScoValueError
def formsemestre_saisie_jury_but(
- formsemestre2: FormSemestre, readonly: bool = False
+ formsemestre2: FormSemestre, readonly: bool = False, selected_etudid: int = None
) -> str:
"""formsemestre est un semestre PAIR
Si readonly, ne montre pas le lien "saisir la décision"
@@ -61,7 +60,9 @@ def formsemestre_saisie_jury_but(
filename = scu.sanitize_filename(
f"""jury-but-{formsemestre2.titre_num()}-{time.strftime("%Y-%m-%d")}"""
)
- table_html = build_table_jury_but_html(filename, rows, titles, column_ids)
+ table_html = build_table_jury_but_html(
+ filename, rows, titles, column_ids, selected_etudid=selected_etudid
+ )
H = [
html_sco_header.sco_header(
page_title=f"{formsemestre2.sem_modalite()}: moyennes",
@@ -78,10 +79,11 @@ def formsemestre_saisie_jury_but(
return "\n".join(H)
-def build_table_jury_but_html(filename: str, rows, titles, column_ids) -> str:
+def build_table_jury_but_html(
+ filename: str, rows, titles, column_ids, selected_etudid: int = None
+) -> str:
"""assemble la table html"""
footer_rows = [] # inutile pour l'instant, à voir XXX
- selected_etudid = None # inutile pour l'instant, à voir XXX
H = [
f"""
"""
@@ -225,17 +227,27 @@ def get_table_jury_but(
row.add_ue_cell(rcue.ue_1, rcue.moy_ue_1)
row.add_ue_cell(rcue.ue_2, rcue.moy_ue_2)
row.add_rcue_cell(rcue)
+ # --- Le code annuel existant
+ row.add_cell(
+ "code_annee",
+ "Année",
+ f"""{deca.code_valide or ''}""",
+ "col_code_annee",
+ )
# --- Le lien de saisie
if not readonly:
row.add_cell(
"lien_saisie",
"",
- f"""saisie décision
+ )}" class="stdlink">
+ {"modif." if deca.code_valide else "saisie"}
+ décision
""",
)
rows.append(row.row)
diff --git a/app/static/css/jury_but.css b/app/static/css/jury_but.css
index 642fab4c6a..f3266bc63e 100644
--- a/app/static/css/jury_but.css
+++ b/app/static/css/jury_but.css
@@ -100,4 +100,12 @@ div.but_niveau_rcue.recorded {
div.but_niveau_ue.modified {
background-color: rgb(255, 214, 254);
+}
+
+div.but_buttons {
+ margin-top: 16px;
+}
+
+div.but_buttons span {
+ margin-right: 16px;
}
\ No newline at end of file
diff --git a/app/static/css/scodoc.css b/app/static/css/scodoc.css
index 062c69c6dd..95e76fb2b0 100644
--- a/app/static/css/scodoc.css
+++ b/app/static/css/scodoc.css
@@ -3799,6 +3799,12 @@ table.table_recap a:visited {
color: black;
}
+table.table_recap a.stdlink:link,
+table.table_recap a.stdlink:visited {
+ color: blue;
+ text-decoration: underline;
+}
+
table.table_recap tfoot th,
table.table_recap thead th {
text-align: left;
diff --git a/app/views/notes.py b/app/views/notes.py
index b13b2667fd..04fe1da350 100644
--- a/app/views/notes.py
+++ b/app/views/notes.py
@@ -2280,7 +2280,7 @@ def formsemestre_validation_but(formsemestre_id: int, etudid: int):
{deca.explanation}
- Niveaux de compétences et unités d'enseignement :
+ Niveaux de compétences et unités d'enseignement :
S{1}
@@ -2330,15 +2330,21 @@ def formsemestre_validation_but(formsemestre_id: int, etudid: int):
H.append("
") # but_annee
H.append(
- """
+ f"""
permettre la saisie manuelles des codes d'année et de niveaux.
Dans ce cas, il vous revient de vous assurer de la cohérence entre
vos codes d'UE/RCUE/Année !
-
-
+
+
"""
)
H.append("") # but_annee
@@ -2543,7 +2549,7 @@ sco_publish("/formsemestre_pvjury", sco_pvjury.formsemestre_pvjury, Permission.S
@scodoc
@permission_required(Permission.ScoView)
@scodoc7func
-def formsemestre_saisie_jury(formsemestre_id: int):
+def formsemestre_saisie_jury(formsemestre_id: int, selected_etudid: int = None):
"""Page de saisie: liste des étudiants et lien vers page jury
en semestres pairs de BUT, table spécifique avec l'année
sinon, redirect vers page recap en mode jury
@@ -2551,7 +2557,9 @@ def formsemestre_saisie_jury(formsemestre_id: int):
readonly = not sco_permissions_check.can_validate_sem(formsemestre_id)
formsemestre = FormSemestre.query.get_or_404(formsemestre_id)
if formsemestre.formation.is_apc() and formsemestre.semestre_id % 2 == 0:
- return jury_but_recap.formsemestre_saisie_jury_but(formsemestre, readonly)
+ return jury_but_recap.formsemestre_saisie_jury_but(
+ formsemestre, readonly, selected_etudid=selected_etudid
+ )
return redirect(
url_for(
"notes.formsemestre_recapcomplet",