forked from ScoDoc/ScoDoc
formsemestre_inscr_passage: mentionne DEM inscrits. Close #1038
This commit is contained in:
parent
58784af94d
commit
431b0aa651
@ -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}
|
||||
|
||||
|
@ -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</a></div>
|
||||
<div class="pas_sembox_subtitle">(%(nbetuds)d étudiants%(comment)s)"""
|
||||
% infos
|
||||
f""">{infos['title']}</a></div>
|
||||
<div class="pas_sembox_subtitle">({infos['nbetuds']} étudiants{infos['comment']})"""
|
||||
)
|
||||
if with_checkbox:
|
||||
H.append(
|
||||
@ -707,6 +714,9 @@ def etuds_select_box(
|
||||
if is_inscrit
|
||||
else ("inscrit-ailleurs" if etud["etudid"] in inscrits_ailleurs else "")
|
||||
)
|
||||
if etud.get("etat") == scu.DEMISSION:
|
||||
extra_class += " etuddem"
|
||||
|
||||
H.append(
|
||||
_etud_row(
|
||||
etud,
|
||||
@ -748,6 +758,8 @@ def _etud_row(
|
||||
)
|
||||
}">{nomprenom}</a>
|
||||
"""
|
||||
if etud.get("etat") == scu.DEMISSION:
|
||||
elink += """<span class="etuddem">(DEM.)</span>"""
|
||||
else:
|
||||
# ce n'est pas un etudiant ScoDoc
|
||||
elink = nomprenom
|
||||
|
@ -388,7 +388,9 @@ def _build_page(
|
||||
|
||||
def list_synch(sem, annee_apogee=None):
|
||||
""""""
|
||||
inscrits = sco_inscr_passage.list_inscrits(sem["formsemestre_id"], with_dems=True)
|
||||
inscrits = sco_inscr_passage.list_inscrits_edict(
|
||||
sem["formsemestre_id"], with_dems=True
|
||||
)
|
||||
# Tous les ensembles d'etudiants sont ici des ensembles de codes NIP (voir EKEY_SCO)
|
||||
# (sauf inscrits_without_key)
|
||||
inscrits_set = set()
|
||||
|
@ -3809,6 +3809,11 @@ span.sp_etape {
|
||||
color: red !important;
|
||||
}
|
||||
|
||||
.etuds-box .etuddem {
|
||||
color: red !important;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.etuds_select_boxes {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
"Infos sur version ScoDoc"
|
||||
|
||||
SCOVERSION = "9.7.61"
|
||||
SCOVERSION = "9.7.62"
|
||||
|
||||
SCONAME = "ScoDoc"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user