From 85005419aea4e0f4f9a592097485f7a261483311 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet <emmanuel.viennet@gmail.com> Date: Thu, 19 Oct 2023 21:07:03 +0200 Subject: [PATCH] Clarifie explications validation manuelle RCUE. Commente code. Petits nettoyages. --- app/but/jury_but.py | 2 -- app/comp/res_compat.py | 13 ++++++-- app/comp/res_sem.py | 2 +- app/scodoc/codes_cursus.py | 4 +-- app/scodoc/sco_formsemestre_validation.py | 22 ++++++++----- app/templates/but/validation_rcues.j2 | 40 ++++++++++++++--------- tools/build_release.sh | 2 +- 7 files changed, 51 insertions(+), 34 deletions(-) diff --git a/app/but/jury_but.py b/app/but/jury_but.py index 4309342b2..bc3b7285c 100644 --- a/app/but/jury_but.py +++ b/app/but/jury_but.py @@ -83,7 +83,6 @@ from app.models.but_validations import ( ApcValidationRCUE, ) from app.models.etudiants import Identite -from app.models.formations import Formation from app.models.formsemestre import FormSemestre from app.models.ues import UniteEns from app.models.validations import ScolarFormSemestreValidation @@ -93,7 +92,6 @@ from app.scodoc.codes_cursus import ( code_rcue_validant, BUT_CODES_ORDER, CODES_RCUE_VALIDES, - CODES_UE_CAPITALISANTS, CODES_UE_VALIDES, RED, UE_STANDARD, diff --git a/app/comp/res_compat.py b/app/comp/res_compat.py index fe4116309..2934f1e93 100644 --- a/app/comp/res_compat.py +++ b/app/comp/res_compat.py @@ -304,9 +304,16 @@ class NotesTableCompat(ResultatsSemestre): ) def get_etud_decisions_ue(self, etudid: int) -> dict: - """Decisions du jury pour les UE de cet etudiant, ou None s'il n'y en pas eu. - Ne tient pas compte des UE capitalisées. - { ue_id : { 'code' : ADM|CMP|AJ, 'event_date' : "d/m/y", 'ects' : x } + """Decisions du jury pour les UE de cet etudiant dans ce formsemestre, + ou None s'il n'y en pas eu. + Ne tient pas compte des UE capitalisées ou externes. + { ue_id : { + 'code' : ADM|CMP|AJ|ADSUP|..., + 'event_date' : "d/m/y", + 'ects' : float, nb d'ects validées dans l'UE de ce semestre. + } + ... + } Ne renvoie aucune decision d'UE pour les défaillants """ if self.get_etud_etat(etudid) == DEF: diff --git a/app/comp/res_sem.py b/app/comp/res_sem.py index 35affb5c1..212f97102 100644 --- a/app/comp/res_sem.py +++ b/app/comp/res_sem.py @@ -50,7 +50,7 @@ def load_formsemestre_validations(formsemestre: FormSemestre) -> ValidationsSeme If not in cache, build it and cache it (in g). """ if not hasattr(g, "formsemestre_validation_cache"): - g.formsemestre_validations_cache = {} # pylint: disable=C0237 + g.formsemestre_validations_cache = {} else: if formsemestre.id in g.formsemestre_validations_cache: return g.formsemestre_validations_cache[formsemestre.id] diff --git a/app/scodoc/codes_cursus.py b/app/scodoc/codes_cursus.py index d214b3502..b11c7b6b6 100644 --- a/app/scodoc/codes_cursus.py +++ b/app/scodoc/codes_cursus.py @@ -201,8 +201,8 @@ CODES_SEM_REO = {NAR} # reorientation CODES_JURY_UE = {ADM, CMP, ADJ, ADJR, ADSUP, AJ, ATJ, RAT, DEF, ABAN, DEM, UEBSL} CODES_UE_VALIDES_DE_DROIT = {ADM, CMP} # validation "de droit" CODES_UE_VALIDES = CODES_UE_VALIDES_DE_DROIT | {ADJ, ADJR, ADSUP} -"UE validée" -CODES_UE_CAPITALISANTS = {ADM} +"UE validée (attribution des ECTS)" +CODES_UE_CAPITALISANTS = {ADM} # XXX non utilisé "UE capitalisée" CODES_JURY_RCUE = {ADM, ADJ, ADSUP, CMP, AJ, ATJ, RAT, DEF, ABAN} diff --git a/app/scodoc/sco_formsemestre_validation.py b/app/scodoc/sco_formsemestre_validation.py index 76ce5c29a..26d9e6c16 100644 --- a/app/scodoc/sco_formsemestre_validation.py +++ b/app/scodoc/sco_formsemestre_validation.py @@ -367,7 +367,7 @@ def formsemestre_validation_etud_form( H.append( f"""<div class="link_defaillance">Ou <a class="stdlink" href="{ - url_for("scolar.form_def", scodoc_dept=g.scodoc_dept, etudid=etudid, + url_for("scolar.form_def", scodoc_dept=g.scodoc_dept, etudid=etudid, formsemestre_id=formsemestre_id) }">déclarer l'étudiant comme défaillant dans ce semestre</a></div>""" ) @@ -683,7 +683,7 @@ def formsemestre_recap_parcours_table( # 2eme ligne: notes H.append(f"""<tr class="{class_sem} rcp_l2 sem_{sem["formsemestre_id"]}">""") H.append( - f"""<td class="rcp_type_sem" + f"""<td class="rcp_type_sem" style="background-color:{bgcolor};"> </td>""" ) if is_prev: @@ -808,7 +808,7 @@ def form_decision_manuelle(Se, formsemestre_id, etudid, desturl="", sortcol=None return true; } </script> - + <form method="get" action="formsemestre_validation_etud_manu" name="formvalidmanu" id="formvalidmanu" class="sfv_decisions sfv_decisions_manuelles" onsubmit="return check_sfv_form()"> <input type="hidden" name="etudid" value="%s"/> <input type="hidden" name="formsemestre_id" value="%s"/> @@ -1028,7 +1028,7 @@ def do_formsemestre_validation_auto(formsemestre_id): ] if conflicts: H.append( - f"""<p><b>Attention:</b> {len(conflicts)} étudiants non modifiés + f"""<p><b>Attention:</b> {len(conflicts)} étudiants non modifiés car décisions différentes déja saisies : <ul>""" ) @@ -1190,12 +1190,16 @@ def formsemestre_validate_previous_ue(formsemestre: FormSemestre, etud: Identite <p class="help">Utiliser cette page pour enregistrer des UEs validées antérieurement, <em>dans un semestre hors ScoDoc</em>.</p> - <p class="expl"><b>Les UE validées dans ScoDoc sont - automatiquement prises en compte</b>. + <p class="expl"><b>Les UE validées dans ScoDoc sont + automatiquement prises en compte</b>. </p> <p>Cette page est surtout utile pour les étudiants ayant - suivi un début de cursus dans <b>un autre établissement</b>, ou qui + suivi un début de cursus dans <b>un autre établissement</b>, ou qui ont suivi une UE à l'étranger ou dans un semestre géré <b>sans ScoDoc</b>. + </> + <p>Il est aussi nécessaire de valider les UEs antérieures en cas de changement + de référentiel de compétence en cours de cursus (par exemple si un étudiant redouble et + que le programme change de référentiel entre temps). </p> <p>Pour les semestres précédents gérés avec ScoDoc, passer par la page jury normale. </p> @@ -1277,7 +1281,7 @@ def _get_etud_ue_cap_html(etud: Identite, formsemestre: FormSemestre) -> str: H = [ f"""<div class="sco_box sco_lightgreen_bg ue_list_etud_validations"> <div class="sco_box_title">Validations d'UEs dans cette formation</div> - <div class="help">Liste de toutes les UEs validées par {etud.html_link_fiche()}, + <div class="help">Liste de toutes les UEs validées par {etud.html_link_fiche()}, sur des semestres ou déclarées comme "antérieures" (externes). </div> <ul class="liste_validations">""" @@ -1296,7 +1300,7 @@ def _get_etud_ue_cap_html(etud: Identite, formsemestre: FormSemestre) -> str: H.append( f""" <form class="inline-form"> - <button + <button data-v_id="{validation.id}" data-type="validation_ue" data-etudid="{etud.id}" >effacer</button> </form> diff --git a/app/templates/but/validation_rcues.j2 b/app/templates/but/validation_rcues.j2 index a40194ba4..4c30123ea 100644 --- a/app/templates/but/validation_rcues.j2 +++ b/app/templates/but/validation_rcues.j2 @@ -23,7 +23,7 @@ <div class="scoplement"> {% if validation %} <div>Validation de {{niv['ue_'+sem].acronyme}}</div> - <div>Jury de {{validation.formsemestre.titre_annee() + <div>Jury de {{validation.formsemestre.titre_annee() if validation.formsemestre else "-"}}</div> <div>enregistrée le {{ validation.event_date.strftime("%d/%m/%Y à %H:%M") @@ -48,9 +48,9 @@ <div class="parcour_formation"> <div class="titre_parcours"> - Validations de {{sco.etud.html_link_fiche()|safe}} + Validations de {{sco.etud.html_link_fiche()|safe}} {% if parcour %} - parcours {{parcour.code}} « {{parcour.libelle}} » + parcours {{parcour.code}} « {{parcour.libelle}} » {% else %} non inscrit{{sco.etud.e}} à un parcours de la spécialité {% endif %} @@ -64,7 +64,7 @@ </div> <div class="niveaux"> {% for annee, niv in comp['niveaux'].items() %} - <div class="niveau comp-c{{color_idx}}-{{annee}}" + <div class="niveau comp-c{{color_idx}}-{{annee}}" style="--color: var(--col-c{{color_idx}}-{{annee}});"> <div class="titre_niveau n{{annee}}"> <span class="parcs"> @@ -120,10 +120,10 @@ if validation.date else "-" }} </div> - <div>par le jury de {{validation.formsemestre.titre_annee() + <div>par le jury de {{validation.formsemestre.titre_annee() if validation.formsemestre else "-"}} </div> - </div> + </div> {% endif %} </div> </div> @@ -164,7 +164,7 @@ </div> {% endif %} -<div class="help"> +<div class="help"> <p>Cette page montre les validations d'UEs et de niveaux de compétences (RCUEs) de {{sco.etud.html_link_fiche()|safe}} @@ -182,18 +182,26 @@ du référentiel de compétence <a class="stdlink" href="{{ </p> <p>Seuls les UEs et niveaux de ce référentiel sont montrés. Si le référentiel a -changé, enregistrer des validations "antérieures". +changé, <a class="stdlink" href="{{ + url_for( 'notes.formsemestre_validate_previous_ue', + scodoc_dept=g.scodoc_dept, + etudid=sco.etud.id, + formsemestre_id=sco.formsemestre.id) +}}">enregistrer des validations "antérieures"</a>. </p> <p>Le symbole <span class="parc">TC</span> désigne un niveau du tronc commun -(c'est à dire présent dans tous les parcours de la spécialité). </p> +(c'est à dire présent dans tous les parcours de la spécialité). </p> {% if edit %} -<p>Les validations sont enregistrées au fur et à mesure. -Attention, cette page permet une saisie "manuelle", la cohérence des décisions -n'est pas vérifiée (ni avec les notes, ni avec les décisions d'UEs, ni entre -années), et les <tt>ADSUP</tt> ne sont pas automatiquement générés. Privilégiez -lorsque c'est possible la saisie par +<p>Les validations sont enregistrées au fur et à mesure.</p> +<p> +⚠️ Attention, cette page permet une saisie "manuelle", la cohérence des décisions +n'est pas vérifiée: ni avec les notes, ni avec les décisions d'UEs +(qu'il vous faudra probablement saisir aussi), ni entre années. +Les <tt>ADSUP</tt> ne sont pas automatiquement générés. +<br> +Privilégiez lorsque c'est possible la saisie par <a class="stdlink" href="{{url_for('notes.formsemestre_validation_but', scodoc_dept=g.scodoc_dept, etudid=sco.etud.id, @@ -216,7 +224,7 @@ function record_rcue_validation(event, niveau_id) { etudid=sco.etud.id ) }}'; - + fetch(record_url, { method: 'POST', headers: { @@ -244,4 +252,4 @@ function record_rcue_validation(event, niveau_id) { } </script> -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/tools/build_release.sh b/tools/build_release.sh index f182dab4f..c320abd4f 100755 --- a/tools/build_release.sh +++ b/tools/build_release.sh @@ -129,7 +129,7 @@ cp -p "$SCODOC_DIR"/tools/etc/scodoc9.service "$slash"/etc/systemd/system/ || di # Répertoire DEBIAN mv "$SCODOC_DIR"/tools/debian "$slash"/DEBIAN || die "can't install DEBIAN dir" -chmod 755 "$slash"/DEBIAN/*inst || die "can't chmod debian scripts" +chmod 750 "$slash"/DEBIAN/*inst || die "can't chmod debian scripts" # ------------ CREATION DU VIRTUALENV #echo "Creating python3 virtualenv..." -- GitLab