From 3ba553c090c05011f3cb0a5d8f86128687c2c342 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Tue, 24 Jan 2023 11:45:46 -0300 Subject: [PATCH 1/6] typo --- app/scodoc/sco_saisie_notes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/scodoc/sco_saisie_notes.py b/app/scodoc/sco_saisie_notes.py index c7eb2cc2..bf8d8c29 100644 --- a/app/scodoc/sco_saisie_notes.py +++ b/app/scodoc/sco_saisie_notes.py @@ -1309,7 +1309,7 @@ def _form_saisie_notes(E, M, groups_infos, destination=""): H = [] if nb_decisions > 0: H.append( - """
+ f"""
diff --git a/app/views/notes.py b/app/views/notes.py index ce4b1472..969233d0 100644 --- a/app/views/notes.py +++ b/app/views/notes.py @@ -2508,15 +2508,20 @@ def formsemestre_validation_but(
""" if autorisations_idx - else """
pas d'autorisations de passage enregistrées.
""" + else """
+ pas d'autorisations de passage enregistrées. +
+ """ ) H.append(div_autorisations_passage) if read_only: H.append( - """ + f"""
- Vous n'avez pas la permission de modifier ces décisions. + {"Vous n'avez pas la permission de modifier ces décisions." + if formsemestre.etat + else "Semestre verrouillé."} Les champs entourés en vert sont enregistrés.
""" ) From bf6dfe38d27bafcc4633a3d7c77136ca2ad1dd57 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Thu, 26 Jan 2023 13:28:36 -0300 Subject: [PATCH 5/6] =?UTF-8?q?Am=C3=A9liore=20qq=20explications?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scodoc/sco_formsemestre_edit.py | 7 ++++--- app/static/css/jury_but.css | 6 ++++++ app/views/notes.py | 10 +++++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/scodoc/sco_formsemestre_edit.py b/app/scodoc/sco_formsemestre_edit.py index a584aa08..16ed01c7 100644 --- a/app/scodoc/sco_formsemestre_edit.py +++ b/app/scodoc/sco_formsemestre_edit.py @@ -556,9 +556,10 @@ def do_formsemestre_createwithmodules(edit=False, formsemestre: FormSemestre = N str(parcour.id) for parcour in ref_comp.parcours ], "explanation": """Parcours proposés dans ce semestre. - S'il s'agit d'un semestre de "tronc commun", ne pas indiquer de parcours. - Attention, si aucun parcours n'est coché, toutes les UEs du - programme seront considérées, quel que soit leur parcours. + Cocher tous les parcours est exactement équivalent à n'en cocher aucun: + par exemple, pour un semestre de "tronc commun", on peut ne pas indiquer de parcours. + Si aucun parcours n'est coché, toutes les UEs du + programme seront donc considérées, quel que soit leur parcours. """, }, ) diff --git a/app/static/css/jury_but.css b/app/static/css/jury_but.css index a0fd87bd..61f8db77 100644 --- a/app/static/css/jury_but.css +++ b/app/static/css/jury_but.css @@ -189,6 +189,12 @@ div.but_buttons span { margin-right: 16px; } +div.but_doc_codes.but_warning_rcue_cap { + padding-top: 8px; + font-size: 100%; + font-style: italic; +} + div.but_doc_codes { margin: 16px; min-width: var(--sco-content-min-width); diff --git a/app/views/notes.py b/app/views/notes.py index 969233d0..da26f9b2 100644 --- a/app/views/notes.py +++ b/app/views/notes.py @@ -2549,7 +2549,15 @@ def formsemestre_validation_but( ) H.append(navigation_div) H.append("") - + if deca.a_cheval: + H.append( + f"""
+ {scu.EMO_WARNING} Rappel: pour les redoublants, seules les UE capitalisées (note > 10) + lors d'une année précédente peuvent être prise en compte pour former + un RCUE (associé à un niveau de compétence du BUT). +
+ """ + ) H.append( render_template( "but/documentation_codes_jury.html", From 8d01135c4c7b4e499d3283f042042a7253bcc9a5 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Thu, 26 Jan 2023 14:29:16 -0300 Subject: [PATCH 6/6] Form. passage: # 566 --- app/scodoc/sco_inscr_passage.py | 118 +++++++++++++++++++------------- 1 file changed, 69 insertions(+), 49 deletions(-) diff --git a/app/scodoc/sco_inscr_passage.py b/app/scodoc/sco_inscr_passage.py index d9a562f4..58b5a0d9 100644 --- a/app/scodoc/sco_inscr_passage.py +++ b/app/scodoc/sco_inscr_passage.py @@ -39,21 +39,22 @@ from app import log from app.models import FormSemestre from app.scodoc.gen_tables import GenTable from app.scodoc import html_sco_header +from app.scodoc import sco_cache from app.scodoc import sco_codes_parcours -from app.scodoc import sco_preferences -from app.scodoc import sco_pvjury +from app.scodoc import sco_etud +from app.scodoc import sco_formations from app.scodoc import sco_formsemestre from app.scodoc import sco_formsemestre_inscriptions -from app.scodoc import sco_formations from app.scodoc import sco_groups -from app.scodoc import sco_etud +from app.scodoc import sco_preferences +from app.scodoc import sco_pvjury from app.scodoc.sco_exceptions import ScoValueError def list_authorized_etuds_by_sem(sem, delai=274, ignore_jury=False): """Liste des etudiants autorisés à s'inscrire dans sem. delai = nb de jours max entre la date de l'autorisation et celle de debut du semestre cible. - ignore_jury: si vrai, considère tous les étudiants comem autorisés, même + ignore_jury: si vrai, considère tous les étudiants comme autorisés, même s'ils n'ont pas de décision de jury. """ src_sems = list_source_sems(sem, delai=delai) @@ -276,8 +277,8 @@ def formsemestre_inscr_passage( submitted=False, dialog_confirmed=False, ignore_jury=False, -): - """Form. pour inscription des etudiants d'un semestre dans un autre +) -> str: + """Page Form. pour inscription des etudiants d'un semestre dans un autre (donné par formsemestre_id). Permet de selectionner parmi les etudiants autorisés à s'inscrire. Principe: @@ -285,8 +286,8 @@ def formsemestre_inscr_passage( - afficher chaque semestre "boites" avec cases à cocher - si l'étudiant est déjà inscrit, le signaler (gras, nom de groupes): il peut être désinscrit - on peut choisir les groupes TD, TP, TA - - seuls les etudiants non inscrits changent (de groupe) - - les etudiants inscrit qui se trouvent décochés sont désinscrits + - seuls les étudiants non inscrits changent (de groupe) + - les étudiants inscrit qui se trouvent décochés sont désinscrits - Confirmation: indiquer les étudiants inscrits et ceux désinscrits, le total courant. """ @@ -326,11 +327,9 @@ def formsemestre_inscr_passage( a_desinscrire = inscrits_set - etuds_set else: a_inscrire = a_desinscrire = [] - # log('formsemestre_inscr_passage: a_inscrire=%s' % str(a_inscrire) ) - # log('formsemestre_inscr_passage: a_desinscrire=%s' % str(a_desinscrire) ) if not submitted: - H += build_page( + H += _build_page( sem, auth_etuds_by_sem, inscrits, @@ -343,7 +342,7 @@ def formsemestre_inscr_passage( if not dialog_confirmed: # Confirmation if a_inscrire: - H.append("

Etudiants à inscrire

    ") + H.append("

    Étudiants à inscrire

      ") for etud in set_to_sorted_etud_list(a_inscrire): H.append("
    1. %(nomprenom)s
    2. " % etud) H.append("
    ") @@ -354,7 +353,7 @@ def formsemestre_inscr_passage( H.append('
  1. %(nomprenom)s
  2. ' % etud) H.append("") if a_desinscrire: - H.append("

    Etudiants à désinscrire

      ") + H.append("

      Étudiants à désinscrire

        ") for etudid in a_desinscrire: H.append( '
      1. %(nomprenom)s
      2. ' @@ -384,21 +383,29 @@ def formsemestre_inscr_passage( ) ) else: - # Inscription des étudiants au nouveau semestre: - do_inscrit( - sem, - a_inscrire, - inscrit_groupes=inscrit_groupes, - ) - - # Desincriptions: - do_desinscrit(sem, a_desinscrire) + with sco_cache.DeferredSemCacheManager(): + # Inscription des étudiants au nouveau semestre: + do_inscrit( + sem, + a_inscrire, + inscrit_groupes=inscrit_groupes, + ) + # Désinscriptions: + do_desinscrit(sem, a_desinscrire) H.append( - """

        Opération effectuée

        -
        • Continuer les inscriptions
        • -
        • Tableau de bord du semestre
        • """ - % (formsemestre_id, formsemestre_id) + f"""

          Opération effectuée

          +
            +
          • Continuer les inscriptions +
          • +
          • Tableau de bord du semestre +
          • """ ) partition = sco_groups.formsemestre_get_main_partition(formsemestre_id) if ( @@ -410,7 +417,7 @@ def formsemestre_inscr_passage( H.append( f"""
          • Répartir les groupes de {partition["partition_name"]}
          • """ ) @@ -420,7 +427,7 @@ def formsemestre_inscr_passage( return "\n".join(H) -def build_page( +def _build_page( sem, auth_etuds_by_sem, inscrits, @@ -429,6 +436,7 @@ def build_page( inscrit_groupes=False, ignore_jury=False, ): + formsemestre: FormSemestre = FormSemestre.query.get(sem["formsemestre_id"]) inscrit_groupes = int(inscrit_groupes) ignore_jury = int(ignore_jury) if inscrit_groupes: @@ -443,27 +451,36 @@ def build_page( html_sco_header.html_sem_header( "Passages dans le semestre", with_page_header=False ), - """
            """ % request.base_url, - """ - -  aide - """ - % sem, # " - """inscrire aux mêmes groupes""" - % inscrit_groupes_checked, - """inclure tous les étudiants (même sans décision de jury)""" - % ignore_jury_checked, - """
            Actuellement %s inscrits - et %d candidats supplémentaires -
            """ - % (len(inscrits), len(candidats_non_inscrits)), - etuds_select_boxes(auth_etuds_by_sem, inscrits_ailleurs), - """

            """, - formsemestre_inscr_passage_help(sem), - """

            """, + f"""
            + + + + +  aide + + inscrire aux mêmes groupes + + inclure tous les étudiants (même sans décision de jury) + +
            Actuellement {len(inscrits)} inscrits + et {len(candidats_non_inscrits)} candidats supplémentaires +
            + +
            {scu.EMO_WARNING} Seuls les semestres dont la date de fin est antérieure à la date de début + de ce semestre ({formsemestre.date_debut.strftime("%d/%m/%Y")}) sont pris en compte.
            + {etuds_select_boxes(auth_etuds_by_sem, inscrits_ailleurs)} + + + + {formsemestre_inscr_passage_help(sem)} + +
            + """, ] - # Semestres sans etudiants autorisés + # Semestres sans étudiants autorisés empty_sems = [] for formsemestre_id in auth_etuds_by_sem.keys(): if not auth_etuds_by_sem[formsemestre_id]["etuds"]: @@ -473,7 +490,10 @@ def build_page( """

            Autres semestres sans candidats :

              """ ) for infos in empty_sems: - H.append("""
            • %(title)s
            • """ % infos) + H.append( + """
            • %(title)s
            • """ + % infos + ) H.append("""
            """) return H