Assiduite: fix JS bug + misc code review

This commit is contained in:
Emmanuel Viennet 2023-12-31 22:18:13 +01:00
parent 97ec0524c4
commit f7d16900b1
3 changed files with 24 additions and 22 deletions

View File

@ -646,8 +646,10 @@ function updateDate() {
); );
openAlertModal("Attention", div, "", "#eec660"); openAlertModal("Attention", div, "", "#eec660");
$(dateInput).datepicker("setDate", date_fra); /* BUG TODO MATHIAS
$(dateInput).datepicker("setDate", date_fra); // XXX ??? non définie
dateInput.value = date_fra; dateInput.value = date_fra;
*/
date = lastWorkDay; date = lastWorkDay;
dateStr = formatDate(lastWorkDay, { dateStr = formatDate(lastWorkDay, {

View File

@ -1,4 +1,9 @@
<h2>Signalement différé de l'assiduité {{gr |safe}}</h2> <h2>Signalement différé de l'assiduité {{gr |safe}}</h2>
<h3>{{sem | safe }}</h3>
{{diff | safe}}
<div class="help"> <div class="help">
<h3>Explication de la saisie différée</h3> <h3>Explication de la saisie différée</h3>
<p>Si la colonne n'est pas valide elle sera affichée en rouge, passez le curseur sur la colonne pour afficher <p>Si la colonne n'est pas valide elle sera affichée en rouge, passez le curseur sur la colonne pour afficher
@ -13,9 +18,6 @@
<p>Vous pouvez supprimer une colonne en appuyant sur la croix qui se situe dans le coin haut droit de la colonne. <p>Vous pouvez supprimer une colonne en appuyant sur la croix qui se situe dans le coin haut droit de la colonne.
</p> </p>
</div> </div>
<h3>{{sem | safe }}</h3>
{{diff | safe}}
<script> <script>
const etudsDefDem = {{ defdem | safe }} const etudsDefDem = {{ defdem | safe }}

View File

@ -876,7 +876,7 @@ def calendrier_assi_etud():
).build() ).build()
@bp.route("/SignalAssiduiteGr") @bp.route("/signal_assiduites_group")
@scodoc @scodoc
@permission_required(Permission.AbsChange) @permission_required(Permission.AbsChange)
def signal_assiduites_group(): def signal_assiduites_group():
@ -915,7 +915,10 @@ def signal_assiduites_group():
# Gestion des groupes # Gestion des groupes
groups_infos = sco_groups_view.DisplayedGroupsInfos( groups_infos = sco_groups_view.DisplayedGroupsInfos(
group_ids, moduleimpl_id=moduleimpl_id, formsemestre_id=formsemestre_id group_ids,
moduleimpl_id=moduleimpl_id,
formsemestre_id=formsemestre_id,
select_all_when_unspecified=True,
) )
if not groups_infos.members: if not groups_infos.members:
return ( return (
@ -1680,13 +1683,16 @@ def _preparer_objet(
return objet_prepare return objet_prepare
@bp.route("/SignalAssiduiteDifferee") @bp.route("/signal_assiduites_diff")
@scodoc @scodoc
@permission_required(Permission.AbsChange) @permission_required(Permission.AbsChange)
def signal_assiduites_diff(): def signal_assiduites_diff():
"""TODO documenter"""
# Récupération des paramètres de la requête # Récupération des paramètres de la requête
group_ids: list[int] = request.args.get("group_ids", None) group_ids: list[int] = request.args.get("group_ids", None)
formsemestre_id: int = request.args.get("formsemestre_id", -1) formsemestre_id: int = request.args.get("formsemestre_id", -1)
formsemestre: FormSemestre = FormSemestre.get_formsemestre(formsemestre_id)
date: str = request.args.get("jour", datetime.date.today().isoformat()) date: str = request.args.get("jour", datetime.date.today().isoformat())
date_deb: str = request.args.get("date_deb") date_deb: str = request.args.get("date_deb")
date_fin: str = request.args.get("date_fin") date_fin: str = request.args.get("date_fin")
@ -1705,18 +1711,8 @@ def signal_assiduites_diff():
date_fin: datetime.date = date_deb + datetime.timedelta(days=6) date_fin: datetime.date = date_deb + datetime.timedelta(days=6)
etudiants: list[dict] = [] etudiants: list[dict] = []
titre = None
# Vérification du formsemestre_id
try:
formsemestre_id = int(formsemestre_id)
except (TypeError, ValueError):
formsemestre_id = None
formsemestre: FormSemestre = FormSemestre.query.get_or_404(formsemestre_id)
# --- Vérification de la date --- # --- Vérification de la date ---
real_date = scu.is_iso_formated(date, True).date() real_date = scu.is_iso_formated(date, True).date()
if real_date < formsemestre.date_debut: if real_date < formsemestre.date_debut:
@ -1730,7 +1726,9 @@ def signal_assiduites_diff():
else: else:
group_ids = group_ids.split(",") group_ids = group_ids.split(",")
map(str, group_ids) map(str, group_ids)
groups_infos = sco_groups_view.DisplayedGroupsInfos(group_ids) groups_infos = sco_groups_view.DisplayedGroupsInfos(
group_ids, formsemestre_id=formsemestre.id, select_all_when_unspecified=True
)
if not groups_infos.members: if not groups_infos.members:
return ( return (
html_sco_header.sco_header(page_title="Assiduité: saisie différée") html_sco_header.sco_header(page_title="Assiduité: saisie différée")
@ -1745,7 +1743,9 @@ def signal_assiduites_diff():
for m in groups_infos.members for m in groups_infos.members
] ]
) )
# XXX utiliser des instances d'Identite et non des dict
# puis trier avec etud.sort_key
# afin de bien prendre en compte nom usuel etc
etudiants = list(sorted(etudiants, key=lambda x: x["nom"])) etudiants = list(sorted(etudiants, key=lambda x: x["nom"]))
# Génération de l'HTML # Génération de l'HTML
@ -1764,8 +1764,6 @@ def signal_assiduites_diff():
], ],
) )
sem = formsemestre.to_dict()
if groups_infos.tous_les_etuds_du_sem: if groups_infos.tous_les_etuds_du_sem:
gr_tit = "en" gr_tit = "en"
else: else:
@ -1793,7 +1791,7 @@ def signal_assiduites_diff():
}, },
), ),
gr=gr_tit, gr=gr_tit,
sem=sem["titre_num"], sem=formsemestre.titre_num(),
defdem=_get_etuds_dem_def(formsemestre), defdem=_get_etuds_dem_def(formsemestre),
timeMorning=ScoDocSiteConfig.get("assi_morning_time", "08:00:00"), timeMorning=ScoDocSiteConfig.get("assi_morning_time", "08:00:00"),
timeNoon=ScoDocSiteConfig.get("assi_lunch_time", "13:00:00"), timeNoon=ScoDocSiteConfig.get("assi_lunch_time", "13:00:00"),