diff --git a/app/scodoc/sco_inscr_passage.py b/app/scodoc/sco_inscr_passage.py index ab27ecda..7a60b67a 100644 --- a/app/scodoc/sco_inscr_passage.py +++ b/app/scodoc/sco_inscr_passage.py @@ -49,9 +49,11 @@ from app.scodoc import sco_etud from app.scodoc.sco_exceptions import ScoValueError -def list_authorized_etuds_by_sem(sem, delai=274): +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 + s'ils n'ont pas de décision de jury. """ src_sems = list_source_sems(sem, delai=delai) inscrits = list_inscrits(sem["formsemestre_id"]) @@ -59,7 +61,12 @@ def list_authorized_etuds_by_sem(sem, delai=274): candidats = {} # etudid : etud (tous les etudiants candidats) nb = 0 # debug for src in src_sems: - liste = list_etuds_from_sem(src, sem) + if ignore_jury: + # liste de tous les inscrits au semestre (sans dems) + liste = list_inscrits(src["formsemestre_id"]).values() + else: + # liste des étudiants autorisés par le jury à s'inscrire ici + liste = list_etuds_from_sem(src, sem) liste_filtree = [] for e in liste: # Filtre ceux qui se sont déjà inscrit dans un semestre APRES le semestre src @@ -125,7 +132,7 @@ def list_inscrits(formsemestre_id, with_dems=False): return inscr -def list_etuds_from_sem(src, dst): +def list_etuds_from_sem(src, dst) -> list[dict]: """Liste des etudiants du semestre src qui sont autorisés à passer dans le semestre dst.""" target = dst["semestre_id"] dpv = sco_pvjury.dict_pvjury(src["formsemestre_id"]) @@ -224,7 +231,7 @@ def do_desinscrit(sem, etudids): ) -def list_source_sems(sem, delai=None): +def list_source_sems(sem, delai=None) -> list[dict]: """Liste des semestres sources sem est le semestre destination """ @@ -265,6 +272,7 @@ def formsemestre_inscr_passage( inscrit_groupes=False, submitted=False, dialog_confirmed=False, + ignore_jury=False, ): """Form. pour inscription des etudiants d'un semestre dans un autre (donné par formsemestre_id). @@ -280,6 +288,7 @@ def formsemestre_inscr_passage( """ inscrit_groupes = int(inscrit_groupes) + ignore_jury = int(ignore_jury) sem = sco_formsemestre.get_formsemestre(formsemestre_id) # -- check lock if not sem["etat"]: @@ -295,7 +304,9 @@ def formsemestre_inscr_passage( elif etuds and isinstance(etuds[0], str): etuds = [int(x) for x in etuds] - auth_etuds_by_sem, inscrits, candidats = list_authorized_etuds_by_sem(sem) + auth_etuds_by_sem, inscrits, candidats = list_authorized_etuds_by_sem( + sem, ignore_jury=ignore_jury + ) etuds_set = set(etuds) candidats_set = set(candidats) inscrits_set = set(inscrits) @@ -323,6 +334,7 @@ def formsemestre_inscr_passage( candidats_non_inscrits, inscrits_ailleurs, inscrit_groupes=inscrit_groupes, + ignore_jury=ignore_jury, ) else: if not dialog_confirmed: @@ -411,18 +423,23 @@ def build_page( candidats_non_inscrits, inscrits_ailleurs, inscrit_groupes=False, + ignore_jury=False, ): inscrit_groupes = int(inscrit_groupes) + ignore_jury = int(ignore_jury) if inscrit_groupes: inscrit_groupes_checked = " checked" else: inscrit_groupes_checked = "" - + if ignore_jury: + ignore_jury_checked = " checked" + else: + ignore_jury_checked = "" H = [ html_sco_header.html_sem_header( "Passages dans le semestre", sem, with_page_header=False ), - """
""" % request.base_url, + """""" % request.base_url, """  aide @@ -430,6 +447,8 @@ def build_page( % 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
"""