diff --git a/app/models/formsemestre.py b/app/models/formsemestre.py index ef321bb97..f8c4638d9 100644 --- a/app/models/formsemestre.py +++ b/app/models/formsemestre.py @@ -1221,7 +1221,7 @@ class FormSemestre(models.ScoDocModel): } @property - def etuds_inscriptions(self) -> dict: + def etuds_inscriptions(self) -> dict[int, "FormSemestreInscription"]: """Map { etudid : inscription } (incluant DEM et DEF)""" return {ins.etud.id: ins for ins in self.inscriptions} diff --git a/app/scodoc/sco_inscr_passage.py b/app/scodoc/sco_inscr_passage.py index d0d05cebb..fc07eacbe 100644 --- a/app/scodoc/sco_inscr_passage.py +++ b/app/scodoc/sco_inscr_passage.py @@ -50,22 +50,24 @@ from app.scodoc.sco_exceptions import ScoValueError def _list_authorized_etuds_by_sem( formsemestre: FormSemestre, ignore_jury=False -) -> tuple[dict[int, dict], list[dict], dict[int, Identite]]: +) -> tuple[dict[int, dict], dict[int, dict], dict[int, Identite]]: """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 comme autorisés, même s'ils n'ont pas de décision de jury. """ src_sems = _list_source_sems(formsemestre) - inscrits = list_inscrits(formsemestre.id) - r = {} + inscriptions = formsemestre.etuds_inscriptions + auth_etuds_by_sem = {} candidats = {} # etudid : etud (tous les etudiants candidats) nb = 0 # debug src_formsemestre: FormSemestre for src_formsemestre in src_sems: if ignore_jury: # liste de tous les inscrits au semestre (sans dems) - etud_list = list_inscrits(src_formsemestre.id).values() + etud_list = list_inscrits_edict( + src_formsemestre.id, with_dems=False + ).values() else: # liste des étudiants autorisés par le jury à s'inscrire ici etud_list = _list_etuds_from_sem(src_formsemestre, formsemestre) @@ -81,7 +83,7 @@ def _list_authorized_etuds_by_sem( candidats[e["etudid"]] = etud liste_filtree.append(e) nb += 1 - r[src_formsemestre.id] = { + auth_etuds_by_sem[src_formsemestre.id] = { "etuds": liste_filtree, "infos": { "id": src_formsemestre.id, @@ -94,15 +96,20 @@ def _list_authorized_etuds_by_sem( "filename": "etud_autorises", }, } - # ajoute attribut inscrit qui indique si l'étudiant est déjà inscrit dans le semestre dest. - for e in r[src_formsemestre.id]["etuds"]: - e["inscrit"] = e["etudid"] in inscrits + # ajoute attribut inscrit qui indique si l'étudiant est déjà inscrit dans le semestre cible + for e in auth_etuds_by_sem[src_formsemestre.id]["etuds"]: + e["inscrit"] = e["etudid"] in inscriptions - # Ajoute liste des etudiants actuellement inscrits - for e in inscrits.values(): + # Ajoute étudiants actuellement inscrits dans le semestre cible + inscrits_by_id_edict = { + ins.etudid: ins.etud.to_dict_scodoc7() for ins in inscriptions.values() + } + # ajoute état inscription pour afficher démissionnaires avec style + for e in inscrits_by_id_edict.values(): e["inscrit"] = True - r[formsemestre.id] = { - "etuds": list(inscrits.values()), + e["etat"] = inscriptions[e["etudid"]].etat + auth_etuds_by_sem[formsemestre.id] = { + "etuds": list(inscrits_by_id_edict.values()), "infos": { "id": formsemestre.id, "title": "Semestre cible: " + formsemestre.titre_annee(), @@ -112,16 +119,17 @@ def _list_authorized_etuds_by_sem( formsemestre_id=formsemestre.id, ), "comment": " actuellement inscrits dans ce semestre", - "help": "Ces étudiants sont actuellement inscrits dans ce semestre. Si vous les décochez, il seront désinscrits.", + "help": """Ces étudiants sont actuellement inscrits dans ce semestre. + Si vous les décochez, il seront désinscrits.""", "filename": "etud_inscrits", }, } - return r, inscrits, candidats + return auth_etuds_by_sem, inscrits_by_id_edict, candidats -def list_inscrits(formsemestre_id: int, with_dems=False) -> list[dict]: - """Étudiants déjà inscrits à ce semestre +def list_inscrits_edict(formsemestre_id: int, with_dems=False) -> list[dict]: + """Étudiants (as dict) déjà inscrits à ce semestre { etudid : etud } """ if not with_dems: @@ -663,9 +671,8 @@ def etuds_select_box( if help_txt: # bubble H.append(f'title="{help_txt}"') H.append( - """>%(title)s -