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" (
if formsemestre is None "La date de début n'appartient à aucun semestre de l'étudiant"
else "La date de début n'appartient pas au semestre", if formsemestre is None
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" (
if not formsemestre "La date de fin n'appartient à aucun semestre de l'étudiant"
else "La date de fin n'appartient pas au semestre", if not formsemestre
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)