forked from ScoDoc/ScoDoc
Fix: tri noms étudiants accentués sur form saisie notes
This commit is contained in:
parent
3e285659f2
commit
8c95b9458b
@ -1560,11 +1560,14 @@ def create_etapes_partition(formsemestre_id, partition_name="apo_etapes"):
|
|||||||
|
|
||||||
|
|
||||||
def do_evaluation_listeetuds_groups(
|
def do_evaluation_listeetuds_groups(
|
||||||
evaluation_id, groups=None, getallstudents=False, include_demdef=False
|
evaluation_id: int,
|
||||||
):
|
groups=None,
|
||||||
"""Donne la liste des etudids inscrits a cette evaluation dans les
|
getallstudents: bool = False,
|
||||||
|
include_demdef: bool = False,
|
||||||
|
) -> list[tuple[int, str]]:
|
||||||
|
"""Donne la liste non triée des etudids inscrits à cette évaluation dans les
|
||||||
groupes indiqués.
|
groupes indiqués.
|
||||||
Si getallstudents==True, donne tous les etudiants inscrits a cette
|
Si getallstudents==True, donne tous les étudiants inscrits à cette
|
||||||
evaluation.
|
evaluation.
|
||||||
Si include_demdef, compte aussi les etudiants démissionnaires et défaillants
|
Si include_demdef, compte aussi les etudiants démissionnaires et défaillants
|
||||||
(sinon, par défaut, seulement les 'I')
|
(sinon, par défaut, seulement les 'I')
|
||||||
|
@ -967,31 +967,35 @@ def has_existing_decision(M, E, etudid):
|
|||||||
# Nouveau formulaire saisie notes (2016)
|
# Nouveau formulaire saisie notes (2016)
|
||||||
|
|
||||||
|
|
||||||
def saisie_notes(evaluation_id, group_ids=[]):
|
def saisie_notes(evaluation_id: int, group_ids: list = None):
|
||||||
"""Formulaire saisie notes d'une évaluation pour un groupe"""
|
"""Formulaire saisie notes d'une évaluation pour un groupe"""
|
||||||
if not isinstance(evaluation_id, int):
|
if not isinstance(evaluation_id, int):
|
||||||
raise ScoInvalidParamError()
|
raise ScoInvalidParamError()
|
||||||
group_ids = [int(group_id) for group_id in group_ids]
|
group_ids = [int(group_id) for group_id in (group_ids or [])]
|
||||||
evals = sco_evaluation_db.do_evaluation_list({"evaluation_id": evaluation_id})
|
evals = sco_evaluation_db.do_evaluation_list({"evaluation_id": evaluation_id})
|
||||||
if not evals:
|
if not evals:
|
||||||
raise ScoValueError("évaluation inexistante")
|
raise ScoValueError("évaluation inexistante")
|
||||||
E = evals[0]
|
E = evals[0]
|
||||||
M = sco_moduleimpl.moduleimpl_withmodule_list(moduleimpl_id=E["moduleimpl_id"])[0]
|
M = sco_moduleimpl.moduleimpl_withmodule_list(moduleimpl_id=E["moduleimpl_id"])[0]
|
||||||
formsemestre_id = M["formsemestre_id"]
|
formsemestre_id = M["formsemestre_id"]
|
||||||
|
moduleimpl_status_url = url_for(
|
||||||
|
"notes.moduleimpl_status",
|
||||||
|
scodoc_dept=g.scodoc_dept,
|
||||||
|
moduleimpl_id=E["moduleimpl_id"],
|
||||||
|
)
|
||||||
# Check access
|
# Check access
|
||||||
# (admin, respformation, and responsable_id)
|
# (admin, respformation, and responsable_id)
|
||||||
if not sco_permissions_check.can_edit_notes(current_user, E["moduleimpl_id"]):
|
if not sco_permissions_check.can_edit_notes(current_user, E["moduleimpl_id"]):
|
||||||
return (
|
return f"""
|
||||||
html_sco_header.sco_header()
|
{html_sco_header.sco_header()}
|
||||||
+ "<h2>Modification des notes impossible pour %s</h2>"
|
<h2>Modification des notes impossible pour {current_user.user_name}</h2>
|
||||||
% current_user.user_name
|
|
||||||
+ """<p>(vérifiez que le semestre n'est pas verrouillé et que vous
|
<p>(vérifiez que le semestre n'est pas verrouillé et que vous
|
||||||
avez l'autorisation d'effectuer cette opération)</p>
|
avez l'autorisation d'effectuer cette opération)</p>
|
||||||
<p><a href="moduleimpl_status?moduleimpl_id=%s">Continuer</a></p>
|
<p><a href="{ moduleimpl_status_url }">Continuer</a>
|
||||||
|
</p>
|
||||||
|
{html_sco_header.sco_footer()}
|
||||||
"""
|
"""
|
||||||
% E["moduleimpl_id"]
|
|
||||||
+ html_sco_header.sco_footer()
|
|
||||||
)
|
|
||||||
|
|
||||||
# Informations sur les groupes à afficher:
|
# Informations sur les groupes à afficher:
|
||||||
groups_infos = sco_groups_view.DisplayedGroupsInfos(
|
groups_infos = sco_groups_view.DisplayedGroupsInfos(
|
||||||
@ -1049,8 +1053,14 @@ def saisie_notes(evaluation_id, group_ids=[]):
|
|||||||
alone=True,
|
alone=True,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
H.append("""</td><td style="padding-left: 35px;"><button class="btn_masquer_DEM">Masquer les DEM</button></td></tr></table></div>""")
|
H.append(
|
||||||
H.append("""<style>
|
"""
|
||||||
|
</td>
|
||||||
|
<td style="padding-left: 35px;"><button class="btn_masquer_DEM">Masquer les DEM</button></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<style>
|
||||||
.btn_masquer_DEM{
|
.btn_masquer_DEM{
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
@ -1061,19 +1071,14 @@ def saisie_notes(evaluation_id, group_ids=[]):
|
|||||||
body.masquer_DEM .etud_dem{
|
body.masquer_DEM .etud_dem{
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
</style>""")
|
</style>
|
||||||
|
"""
|
||||||
# Le formulaire de saisie des notes:
|
|
||||||
destination = url_for(
|
|
||||||
"notes.moduleimpl_status",
|
|
||||||
scodoc_dept=g.scodoc_dept,
|
|
||||||
moduleimpl_id=E["moduleimpl_id"],
|
|
||||||
)
|
)
|
||||||
|
|
||||||
form = _form_saisie_notes(E, M, groups_infos, destination=destination)
|
# Le formulaire de saisie des notes:
|
||||||
|
form = _form_saisie_notes(E, M, groups_infos, destination=moduleimpl_status_url)
|
||||||
if form is None:
|
if form is None:
|
||||||
log(f"redirecting to {destination}")
|
return flask.redirect(moduleimpl_status_url)
|
||||||
return flask.redirect(destination)
|
|
||||||
H.append(form)
|
H.append(form)
|
||||||
#
|
#
|
||||||
H.append("</div>") # /saisie_notes
|
H.append("</div>") # /saisie_notes
|
||||||
@ -1104,6 +1109,9 @@ def _get_sorted_etuds(eval_dict: dict, etudids: list, formsemestre_id: int):
|
|||||||
for etudid in etudids:
|
for etudid in etudids:
|
||||||
# infos identite etudiant
|
# infos identite etudiant
|
||||||
e = sco_etud.etudident_list(cnx, {"etudid": etudid})[0]
|
e = sco_etud.etudident_list(cnx, {"etudid": etudid})[0]
|
||||||
|
etud: Identite = Identite.query.get(etudid)
|
||||||
|
# TODO: refactor et eliminer etudident_list.
|
||||||
|
e["etud"] = etud # utilisé seulement pour le tri -- a refactorer
|
||||||
sco_etud.format_etud_ident(e)
|
sco_etud.format_etud_ident(e)
|
||||||
etuds.append(e)
|
etuds.append(e)
|
||||||
# infos inscription dans ce semestre
|
# infos inscription dans ce semestre
|
||||||
@ -1155,7 +1163,7 @@ def _get_sorted_etuds(eval_dict: dict, etudids: list, formsemestre_id: int):
|
|||||||
e["val"] = "DEM"
|
e["val"] = "DEM"
|
||||||
e["explanation"] = "Démission"
|
e["explanation"] = "Démission"
|
||||||
|
|
||||||
etuds.sort(key=lambda x: (x["nom"], x["prenom"]))
|
etuds.sort(key=lambda x: x["etud"].sort_key)
|
||||||
|
|
||||||
return etuds
|
return etuds
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ FormSemestres:
|
|||||||
|
|
||||||
|
|
||||||
Etudiants:
|
Etudiants:
|
||||||
Aaaaa:
|
Aïaaa: # avec un i trema
|
||||||
prenom: Étudiant_SEE
|
prenom: Étudiant_SEE
|
||||||
civilite: M
|
civilite: M
|
||||||
formsemestres:
|
formsemestres:
|
||||||
@ -196,7 +196,7 @@ Etudiants:
|
|||||||
|
|
||||||
S3:
|
S3:
|
||||||
parcours: SEE
|
parcours: SEE
|
||||||
Bbbbb:
|
Azbbbb: # Az devrait être trié après Aï.
|
||||||
prenom: Étudiante_BMB
|
prenom: Étudiante_BMB
|
||||||
civilite: F
|
civilite: F
|
||||||
formsemestres:
|
formsemestres:
|
||||||
|
Loading…
Reference in New Issue
Block a user