From 8d01135c4c7b4e499d3283f042042a7253bcc9a5 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Thu, 26 Jan 2023 14:29:16 -0300 Subject: [PATCH] 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