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
|
@property
|
||||||
def etuds_inscriptions(self) -> dict:
|
def etuds_inscriptions(self) -> dict[int, "FormSemestreInscription"]:
|
||||||
"""Map { etudid : inscription } (incluant DEM et DEF)"""
|
"""Map { etudid : inscription } (incluant DEM et DEF)"""
|
||||||
return {ins.etud.id: ins for ins in self.inscriptions}
|
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(
|
def _list_authorized_etuds_by_sem(
|
||||||
formsemestre: FormSemestre, ignore_jury=False
|
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.
|
"""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.
|
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
|
ignore_jury: si vrai, considère tous les étudiants comme autorisés, même
|
||||||
s'ils n'ont pas de décision de jury.
|
s'ils n'ont pas de décision de jury.
|
||||||
"""
|
"""
|
||||||
src_sems = _list_source_sems(formsemestre)
|
src_sems = _list_source_sems(formsemestre)
|
||||||
inscrits = list_inscrits(formsemestre.id)
|
inscriptions = formsemestre.etuds_inscriptions
|
||||||
r = {}
|
auth_etuds_by_sem = {}
|
||||||
candidats = {} # etudid : etud (tous les etudiants candidats)
|
candidats = {} # etudid : etud (tous les etudiants candidats)
|
||||||
nb = 0 # debug
|
nb = 0 # debug
|
||||||
src_formsemestre: FormSemestre
|
src_formsemestre: FormSemestre
|
||||||
for src_formsemestre in src_sems:
|
for src_formsemestre in src_sems:
|
||||||
if ignore_jury:
|
if ignore_jury:
|
||||||
# liste de tous les inscrits au semestre (sans dems)
|
# 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:
|
else:
|
||||||
# liste des étudiants autorisés par le jury à s'inscrire ici
|
# liste des étudiants autorisés par le jury à s'inscrire ici
|
||||||
etud_list = _list_etuds_from_sem(src_formsemestre, formsemestre)
|
etud_list = _list_etuds_from_sem(src_formsemestre, formsemestre)
|
||||||
@ -81,7 +83,7 @@ def _list_authorized_etuds_by_sem(
|
|||||||
candidats[e["etudid"]] = etud
|
candidats[e["etudid"]] = etud
|
||||||
liste_filtree.append(e)
|
liste_filtree.append(e)
|
||||||
nb += 1
|
nb += 1
|
||||||
r[src_formsemestre.id] = {
|
auth_etuds_by_sem[src_formsemestre.id] = {
|
||||||
"etuds": liste_filtree,
|
"etuds": liste_filtree,
|
||||||
"infos": {
|
"infos": {
|
||||||
"id": src_formsemestre.id,
|
"id": src_formsemestre.id,
|
||||||
@ -94,15 +96,20 @@ def _list_authorized_etuds_by_sem(
|
|||||||
"filename": "etud_autorises",
|
"filename": "etud_autorises",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
# ajoute attribut inscrit qui indique si l'étudiant est déjà inscrit dans le semestre dest.
|
# ajoute attribut inscrit qui indique si l'étudiant est déjà inscrit dans le semestre cible
|
||||||
for e in r[src_formsemestre.id]["etuds"]:
|
for e in auth_etuds_by_sem[src_formsemestre.id]["etuds"]:
|
||||||
e["inscrit"] = e["etudid"] in inscrits
|
e["inscrit"] = e["etudid"] in inscriptions
|
||||||
|
|
||||||
# Ajoute liste des etudiants actuellement inscrits
|
# Ajoute étudiants actuellement inscrits dans le semestre cible
|
||||||
for e in inscrits.values():
|
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
|
e["inscrit"] = True
|
||||||
r[formsemestre.id] = {
|
e["etat"] = inscriptions[e["etudid"]].etat
|
||||||
"etuds": list(inscrits.values()),
|
auth_etuds_by_sem[formsemestre.id] = {
|
||||||
|
"etuds": list(inscrits_by_id_edict.values()),
|
||||||
"infos": {
|
"infos": {
|
||||||
"id": formsemestre.id,
|
"id": formsemestre.id,
|
||||||
"title": "Semestre cible: " + formsemestre.titre_annee(),
|
"title": "Semestre cible: " + formsemestre.titre_annee(),
|
||||||
@ -112,16 +119,17 @@ def _list_authorized_etuds_by_sem(
|
|||||||
formsemestre_id=formsemestre.id,
|
formsemestre_id=formsemestre.id,
|
||||||
),
|
),
|
||||||
"comment": " actuellement inscrits dans ce semestre",
|
"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",
|
"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]:
|
def list_inscrits_edict(formsemestre_id: int, with_dems=False) -> list[dict]:
|
||||||
"""Étudiants déjà inscrits à ce semestre
|
"""Étudiants (as dict) déjà inscrits à ce semestre
|
||||||
{ etudid : etud }
|
{ etudid : etud }
|
||||||
"""
|
"""
|
||||||
if not with_dems:
|
if not with_dems:
|
||||||
@ -663,9 +671,8 @@ def etuds_select_box(
|
|||||||
if help_txt: # bubble
|
if help_txt: # bubble
|
||||||
H.append(f'title="{help_txt}"')
|
H.append(f'title="{help_txt}"')
|
||||||
H.append(
|
H.append(
|
||||||
""">%(title)s</a></div>
|
f""">{infos['title']}</a></div>
|
||||||
<div class="pas_sembox_subtitle">(%(nbetuds)d étudiants%(comment)s)"""
|
<div class="pas_sembox_subtitle">({infos['nbetuds']} étudiants{infos['comment']})"""
|
||||||
% infos
|
|
||||||
)
|
)
|
||||||
if with_checkbox:
|
if with_checkbox:
|
||||||
H.append(
|
H.append(
|
||||||
@ -707,6 +714,9 @@ def etuds_select_box(
|
|||||||
if is_inscrit
|
if is_inscrit
|
||||||
else ("inscrit-ailleurs" if etud["etudid"] in inscrits_ailleurs else "")
|
else ("inscrit-ailleurs" if etud["etudid"] in inscrits_ailleurs else "")
|
||||||
)
|
)
|
||||||
|
if etud.get("etat") == scu.DEMISSION:
|
||||||
|
extra_class += " etuddem"
|
||||||
|
|
||||||
H.append(
|
H.append(
|
||||||
_etud_row(
|
_etud_row(
|
||||||
etud,
|
etud,
|
||||||
@ -748,6 +758,8 @@ def _etud_row(
|
|||||||
)
|
)
|
||||||
}">{nomprenom}</a>
|
}">{nomprenom}</a>
|
||||||
"""
|
"""
|
||||||
|
if etud.get("etat") == scu.DEMISSION:
|
||||||
|
elink += """<span class="etuddem">(DEM.)</span>"""
|
||||||
else:
|
else:
|
||||||
# ce n'est pas un etudiant ScoDoc
|
# ce n'est pas un etudiant ScoDoc
|
||||||
elink = nomprenom
|
elink = nomprenom
|
||||||
|
@ -388,7 +388,9 @@ def _build_page(
|
|||||||
|
|
||||||
def list_synch(sem, annee_apogee=None):
|
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)
|
# Tous les ensembles d'etudiants sont ici des ensembles de codes NIP (voir EKEY_SCO)
|
||||||
# (sauf inscrits_without_key)
|
# (sauf inscrits_without_key)
|
||||||
inscrits_set = set()
|
inscrits_set = set()
|
||||||
|
@ -3809,6 +3809,11 @@ span.sp_etape {
|
|||||||
color: red !important;
|
color: red !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.etuds-box .etuddem {
|
||||||
|
color: red !important;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
div.etuds_select_boxes {
|
div.etuds_select_boxes {
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
"Infos sur version ScoDoc"
|
"Infos sur version ScoDoc"
|
||||||
|
|
||||||
SCOVERSION = "9.7.61"
|
SCOVERSION = "9.7.62"
|
||||||
|
|
||||||
SCONAME = "ScoDoc"
|
SCONAME = "ScoDoc"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user