This commit is contained in:
Emmanuel Viennet 2024-06-27 21:22:19 +02:00
parent 408c340525
commit 055bbf9f7f
2 changed files with 39 additions and 26 deletions

View File

@ -209,17 +209,15 @@
url.searchParams.set("order", order); url.searchParams.set("order", order);
url.searchParams.set("order_col", order_col.split(":")[1]); url.searchParams.set("order_col", order_col.split(":")[1]);
location.href = url.href location.href = url.href;
})); }));
const selecteur = document.querySelector("#moduleimpl_select"); const selecteur = document.querySelector("#moduleimpl_select");
console.log(selecteur); selecteur?.addEventListener('change', ()=>{
selecteur.addEventListener('change', ()=>{
console.log("selecteur", selecteur.value)
const url = new URL(location.href); const url = new URL(location.href);
url.searchParams.set("moduleimpl_id", selecteur.value); url.searchParams.set("moduleimpl_id", selecteur?.value);
location.href = url.href location.href = url.href;
}); });
}); });

View File

@ -429,9 +429,11 @@ def _get_dates_from_assi_form(
] ]
): ):
form.set_error( form.set_error(
(
"La date de début n'appartient à aucun semestre de l'étudiant" "La date de début n'appartient à aucun semestre de l'étudiant"
if formsemestre is None if formsemestre is None
else "La date de début n'appartient pas au semestre", else "La date de début n'appartient pas au semestre"
),
form.date_debut, form.date_debut,
) )
@ -443,9 +445,11 @@ def _get_dates_from_assi_form(
] ]
): ):
form.set_error( form.set_error(
(
"La date de fin n'appartient à aucun semestre de l'étudiant" "La date de fin n'appartient à aucun semestre de l'étudiant"
if not formsemestre if not formsemestre
else "La date de fin n'appartient pas au semestre", else "La date de fin n'appartient pas au semestre"
),
form.date_fin, form.date_fin,
) )
@ -619,9 +623,9 @@ def bilan_etud():
) )
# préparation du selecteur de moduleimpl # préparation du selecteur de moduleimpl
annee_sco = _get_anne_sco_from_request()
moduleimpl_select: str = _module_selector_multiple( moduleimpl_select: str = _module_selector_multiple(
etud, moduleimpl_id, no_default=True etud, moduleimpl_id, no_default=True, annee_sco=annee_sco
) )
# Préparation de la page # Préparation de la page
@ -1371,6 +1375,19 @@ def visu_assi_group():
) )
def _get_anne_sco_from_request() -> int | None:
"""La valeur du paramètreannee_sco de la requête GET,
ou None si absent"""
annee_sco: str | None = request.args.get("annee_sco", None)
# Vérification de l'année scolaire
if annee_sco is not None:
try:
return int(annee_sco)
except (ValueError, TypeError):
pass
return None
def _prepare_tableau( def _prepare_tableau(
data: liste_assi.AssiJustifData, data: liste_assi.AssiJustifData,
filename: str = "tableau-assiduites", filename: str = "tableau-assiduites",
@ -1382,12 +1399,16 @@ def _prepare_tableau(
titre="Évènements enregistrés pour cet étudiant", titre="Évènements enregistrés pour cet étudiant",
cache_key: str = "", cache_key: str = "",
force_options: dict[str, object] = None, force_options: dict[str, object] = None,
annee_sco: int | None = None,
) -> tuple[bool, Response | str]: ) -> tuple[bool, Response | str]:
""" """
Prépare un tableau d'assiduités / justificatifs Prépare un tableau d'assiduités / justificatifs
Cette fonction récupère dans la requête les arguments : Cette fonction récupère dans la requête les arguments :
annee_sco : int -> XXX
n_page : int -> XXX
page_number : int -> XXX
show_pres : bool -> Affiche les présences, par défaut False show_pres : bool -> Affiche les présences, par défaut False
show_reta : bool -> Affiche les retard, par défaut False show_reta : bool -> Affiche les retard, par défaut False
show_desc : bool -> Affiche les descriptions, par défaut False show_desc : bool -> Affiche les descriptions, par défaut False
@ -1401,7 +1422,7 @@ def _prepare_tableau(
show_pres: bool | str = request.args.get("show_pres", False) show_pres: bool | str = request.args.get("show_pres", False)
show_reta: bool | str = request.args.get("show_reta", False) show_reta: bool | str = request.args.get("show_reta", False)
show_desc: bool | str = request.args.get("show_desc", False) show_desc: bool | str = request.args.get("show_desc", False)
annee_sco = _get_anne_sco_from_request() if annee_sco is None else annee_sco
nb_ligne_page: int = request.args.get("nb_ligne_page") nb_ligne_page: int = request.args.get("nb_ligne_page")
# Vérification de nb_ligne_page # Vérification de nb_ligne_page
try: try:
@ -1418,15 +1439,6 @@ def _prepare_tableau(
fmt = request.args.get("fmt", "html") fmt = request.args.get("fmt", "html")
annee_sco: str | None = request.args.get("annee_sco", None)
# Vérification de l'année scolaire
if annee_sco is not None:
try:
annee_sco = int(annee_sco)
except (ValueError, TypeError):
annee_sco = None
# Ordre # Ordre
ordre: tuple[str, str | bool] = None ordre: tuple[str, str | bool] = None
ordre_col: str = request.args.get("order_col", None) ordre_col: str = request.args.get("order_col", None)
@ -2295,11 +2307,14 @@ def _module_selector_multiple(
moduleimpl_id: int = None, moduleimpl_id: int = None,
only_form: FormSemestre = None, only_form: FormSemestre = None,
no_default: bool = False, no_default: bool = False,
annee_sco: int | None = None,
) -> str: ) -> str:
"""menu HTML <select> pour choix moduleimpl """menu HTML <select> pour choix moduleimpl
Prend les semestres de l'année, sauf si only_form est indiqué. Prend les semestres de l'année indiquée, sauf si only_form est indiqué.
""" """
modimpls_by_formsemestre = etud.get_modimpls_by_formsemestre(scu.annee_scolaire()) modimpls_by_formsemestre = etud.get_modimpls_by_formsemestre(
scu.annee_scolaire() if annee_sco is None else annee_sco
)
choices = OrderedDict() choices = OrderedDict()
for formsemestre_id in modimpls_by_formsemestre: for formsemestre_id in modimpls_by_formsemestre:
formsemestre: FormSemestre = FormSemestre.query.get(formsemestre_id) formsemestre: FormSemestre = FormSemestre.query.get(formsemestre_id)