From b0e78b67eaa0470a35f5040d78ea020249248e62 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Wed, 29 Jun 2022 16:30:01 +0200 Subject: [PATCH] WIP: amelioration form jury BUT --- app/but/jury_but_recap.py | 13 +-- app/comp/res_common.py | 6 +- app/scodoc/sco_formsemestre_validation.py | 4 +- app/scodoc/sco_pvjury.py | 2 +- app/scodoc/sco_recapcomplet.py | 40 ++++---- app/scodoc/sco_utils.py | 4 + app/static/css/jury_but.css | 10 +- app/views/notes.py | 119 ++++++++++++++-------- 8 files changed, 125 insertions(+), 73 deletions(-) diff --git a/app/but/jury_but_recap.py b/app/but/jury_but_recap.py index 333fb13b..d735018f 100644 --- a/app/but/jury_but_recap.py +++ b/app/but/jury_but_recap.py @@ -36,7 +36,7 @@ from app.scodoc.sco_exceptions import ScoValueError def formsemestre_saisie_jury_but( formsemestre2: FormSemestre, - readonly: bool = False, + read_only: bool = False, selected_etudid: int = None, mode="jury", ) -> str: @@ -72,7 +72,7 @@ def formsemestre_saisie_jury_but( ) rows, titles, column_ids = get_table_jury_but( - formsemestre2, readonly=readonly, mode=mode + formsemestre2, read_only=read_only, mode=mode ) if not rows: return ( @@ -109,7 +109,7 @@ def formsemestre_saisie_jury_but( """ ) - if (mode == "recap") and not readonly: + if (mode == "recap") and not read_only: H.append( f"""

0 else ""), "col_rcue col_rcues_validables" + klass, ) + self["_rcues_validables_data"] = {"etudid": deca.etud.id} if len(deca.rcues_annee) > 0: # permet un tri par nb de niveaux validables + moyenne gen indicative S_pair if deca.res_pair and deca.etud.id in deca.res_pair.etud_moy_gen: @@ -353,7 +354,7 @@ class RowCollector: def get_table_jury_but( - formsemestre2: FormSemestre, readonly: bool = False, mode="jury" + formsemestre2: FormSemestre, read_only: bool = False, mode="jury" ) -> tuple[list[dict], list[str], list[str]]: """Construit la table des résultats annuels pour le jury BUT""" res2: ResultatsSemestreBUT = res_sem.load_formsemestre_results(formsemestre2) @@ -383,7 +384,7 @@ def get_table_jury_but( "col_code_annee", ) # --- Le lien de saisie - if not readonly and not mode == "recap": + if mode != "recap": row.add_cell( "lien_saisie", "", @@ -394,7 +395,7 @@ def get_table_jury_but( etudid=etud.id, formsemestre_id=formsemestre2.id, )}" class="stdlink"> - {"modif." if deca.code_valide else "saisie"} + {"voir" if read_only else ("modif." if deca.code_valide else "saisie")} décision """, "col_lien_saisie_but", diff --git a/app/comp/res_common.py b/app/comp/res_common.py index 0d06655c..04bd92d1 100644 --- a/app/comp/res_common.py +++ b/app/comp/res_common.py @@ -399,7 +399,7 @@ class ResultatsSemestre(ResultatsCache): # --- TABLEAU RECAP def get_table_recap( - self, convert_values=False, include_evaluations=False, modejury=False + self, convert_values=False, include_evaluations=False, mode_jury=False ): """Result: tuple avec - rows: liste de dicts { column_id : value } @@ -550,7 +550,7 @@ class ResultatsSemestre(ResultatsCache): titles_bot[ f"_{col_id}_target_attrs" ] = f"""title="{ue.titre} S{ue.semestre_idx or '?'}" """ - if modejury: + if mode_jury: # pas d'autre colonnes de résultats continue # Bonus (sport) dans cette UE ? @@ -650,7 +650,7 @@ class ResultatsSemestre(ResultatsCache): elif nb_ues_validables < len(ues_sans_bonus): row["_ues_validables_class"] += " moy_inf" row["_ues_validables_order"] = nb_ues_validables # pour tri - if modejury: + if mode_jury: dec_sem = self.validations.decisions_jury.get(etudid) jury_code_sem = dec_sem["code"] if dec_sem else "" idx = add_cell( diff --git a/app/scodoc/sco_formsemestre_validation.py b/app/scodoc/sco_formsemestre_validation.py index 1f22f536..907b01b5 100644 --- a/app/scodoc/sco_formsemestre_validation.py +++ b/app/scodoc/sco_formsemestre_validation.py @@ -111,7 +111,7 @@ def formsemestre_validation_etud_form( url_tableau = url_for( "notes.formsemestre_recapcomplet", scodoc_dept=g.scodoc_dept, - modejury=1, + mode_jury=1, formsemestre_id=formsemestre_id, selected_etudid=etudid, # va a la bonne ligne ) @@ -979,7 +979,7 @@ def do_formsemestre_validation_auto(formsemestre_id): H.append("") H.append( f"""continuer""" ) H.append(html_sco_header.sco_footer()) diff --git a/app/scodoc/sco_pvjury.py b/app/scodoc/sco_pvjury.py index ecbe19f2..17f4c2d5 100644 --- a/app/scodoc/sco_pvjury.py +++ b/app/scodoc/sco_pvjury.py @@ -501,7 +501,7 @@ def formsemestre_pvjury(formsemestre_id, format="html", publish=True): from app.but import jury_but_recap return jury_but_recap.formsemestre_saisie_jury_but( - formsemestre, readonly=True, mode="recap" + formsemestre, read_only=True, mode="recap" ) # /XXX footer = html_sco_header.sco_footer() diff --git a/app/scodoc/sco_recapcomplet.py b/app/scodoc/sco_recapcomplet.py index 1c5c19eb..aad0b96b 100644 --- a/app/scodoc/sco_recapcomplet.py +++ b/app/scodoc/sco_recapcomplet.py @@ -57,7 +57,7 @@ from app.scodoc import sco_preferences def formsemestre_recapcomplet( formsemestre_id=None, - modejury=False, + mode_jury=False, tabformat="html", sortcol=None, xml_with_decisions=False, @@ -78,7 +78,7 @@ def formsemestre_recapcomplet( xml, json : concaténation de tous les bulletins, au format demandé pdf : NON SUPPORTE (car tableau trop grand pour générer un pdf utilisable) - modejury: cache modules, affiche lien saisie decision jury + mode_jury: cache modules, affiche lien saisie decision jury xml_with_decisions: publie décisions de jury dans xml et json force_publishing: publie les xml et json même si bulletins non publiés selected_etudid: etudid sélectionné (pour scroller au bon endroit) @@ -91,14 +91,14 @@ def formsemestre_recapcomplet( if tabformat not in supported_formats: raise ScoValueError(f"Format non supporté: {tabformat}") is_file = tabformat in file_formats - modejury = int(modejury) + mode_jury = int(mode_jury) xml_with_decisions = int(xml_with_decisions) force_publishing = int(force_publishing) data = _do_formsemestre_recapcomplet( formsemestre_id, format=tabformat, - modejury=modejury, + mode_jury=mode_jury, sortcol=sortcol, xml_with_decisions=xml_with_decisions, force_publishing=force_publishing, @@ -123,9 +123,9 @@ def formsemestre_recapcomplet( """ ) - if modejury: + if mode_jury: H.append( - f'' + f'' ) H.append( ' + 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( - 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 ! - + f"""
+ - - - """ +
""" ) + # # --- Navigation + # prev = f"""précédent + # """ + # H.append( + # f""" + #
+ # + # + # + #
""" + # ) H.append("") # but_annee H.append( @@ -2425,7 +2462,7 @@ def _gen_but_select( def _gen_but_niveau_ue( - ue: UniteEns, moy_ue: float, dec_ue: jury_but.DecisionsProposeesUE + ue: UniteEns, moy_ue: float, dec_ue: jury_but.DecisionsProposeesUE, disabled=False ): return f"""
{ _gen_but_select("code_ue_"+str(ue.id), dec_ue.codes, - dec_ue.code_valide + dec_ue.code_valide, disabled=disabled ) }
""" @@ -2640,18 +2677,18 @@ def formsemestre_saisie_jury(formsemestre_id: int, selected_etudid: int = None): en semestres pairs de BUT, table spécifique avec l'année sinon, redirect vers page recap en mode jury """ - readonly = not sco_permissions_check.can_validate_sem(formsemestre_id) + read_only = 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, selected_etudid=selected_etudid + formsemestre, read_only, selected_etudid=selected_etudid ) return redirect( url_for( "notes.formsemestre_recapcomplet", scodoc_dept=g.scodoc_dept, formsemestre_id=formsemestre_id, - modejury=1, + mode_jury=1, ) ) @@ -2662,14 +2699,14 @@ def formsemestre_saisie_jury(formsemestre_id: int, selected_etudid: int = None): @scodoc7func def formsemestre_jury_but_recap(formsemestre_id: int, selected_etudid: int = None): """Tableau affichage des codes""" - readonly = not sco_permissions_check.can_validate_sem(formsemestre_id) + read_only = not sco_permissions_check.can_validate_sem(formsemestre_id) formsemestre = FormSemestre.query.get_or_404(formsemestre_id) if not (formsemestre.formation.is_apc() and formsemestre.semestre_id % 2 == 0): raise ScoValueError( "formsemestre_jury_but_recap: réservé aux semestres pairs de BUT" ) return jury_but_recap.formsemestre_saisie_jury_but( - formsemestre, readonly=readonly, selected_etudid=selected_etudid, mode="recap" + formsemestre, read_only=read_only, selected_etudid=selected_etudid, mode="recap" )