Assiduite: supprime lien saisie différée + lien choix semaine

This commit is contained in:
Emmanuel Viennet 2024-06-02 10:05:15 +02:00
parent 912a213dcd
commit dcdf6a8012
3 changed files with 27 additions and 29 deletions

View File

@ -884,21 +884,6 @@ def _make_listes_sem(formsemestre: FormSemestre) -> str:
""" """
) )
if can_edit_abs:
H.append(
f"""
<div>
<a class="stdlink" href="{
url_for("assiduites.signal_assiduites_diff",
scodoc_dept=g.scodoc_dept,
formsemestre_id=formsemestre.id,
group_ids=group.id,
)}" title="Page en cours de fusion et sera prochainement supprimée. Veuillez utiliser la page `Saisir l'assiduité`">
(Saisie différée)</a>
</div>
"""
)
H.append("</div>") # /sem-groups-assi H.append("</div>") # /sem-groups-assi
if partition_is_empty: if partition_is_empty:
H.append( H.append(

View File

@ -214,7 +214,7 @@
] // [0]=Lundi ... [6]=Dimanche -> à 00h00 ] // [0]=Lundi ... [6]=Dimanche -> à 00h00
//Une fonction d'action quand un bouton est cliqué //Une fonction d'action quand un bouton est cliqué
// 3 possibilités : // 3 possibilités :
// - assiduite_id = null -> créer nv assi avec état du bouton // - assiduite_id = null -> créer nv assi avec état du bouton
// - assiduite_id non null et bouton coché == etat assi -> suppression de l'assiduité // - assiduite_id non null et bouton coché == etat assi -> suppression de l'assiduité
// - assiduite_id non null et bouton coché != etat assi -> modification de l'assiduité // - assiduite_id non null et bouton coché != etat assi -> modification de l'assiduité
@ -418,14 +418,14 @@
// Peuplement des boutons en fonction des assiduités // Peuplement des boutons en fonction des assiduités
let boutons = ` let boutons = `
<input type="checkbox" name="matin-${etudid}" id="matin-${etudid}" <input type="checkbox" name="matin-${etudid}" id="matin-${etudid}"
class="rbtn retard" value="retard"> class="rbtn retard" value="retard">
<input type="checkbox" name="matin-${etudid}" id="matin-${etudid}" <input type="checkbox" name="matin-${etudid}" id="matin-${etudid}"
class="rbtn absent" value="absent"> class="rbtn absent" value="absent">
` `
if (!non_present) { if (!non_present) {
boutons = `<input type="checkbox" name="matin-${etudid}" id="matin-${etudid}" boutons = `<input type="checkbox" name="matin-${etudid}" id="matin-${etudid}"
class="rbtn present" value="present">`+boutons; class="rbtn present" value="present">`+boutons;
} }
@ -437,8 +437,8 @@
const deb = new Date(assi.date_debut); const deb = new Date(assi.date_debut);
const fin = new Date(assi.date_fin); const fin = new Date(assi.date_fin);
// si dates == periode -> cocher bouton correspondant // si dates == periode -> cocher bouton correspondant
// Sinon supprimer boutons et mettre case "rouge" + tooltip // Sinon supprimer boutons et mettre case "rouge" + tooltip
if (deb.isSame(morningPeriod.deb, "minutes") && fin.isSame(morningPeriod.fin, "minutes")) { if (deb.isSame(morningPeriod.deb, "minutes") && fin.isSame(morningPeriod.fin, "minutes")) {
let etat = assi.etat.toLowerCase(); let etat = assi.etat.toLowerCase();
@ -468,7 +468,7 @@
const deb = new Date(assi.date_debut); const deb = new Date(assi.date_debut);
const fin = new Date(assi.date_fin); const fin = new Date(assi.date_fin);
// si dates == periode -> cocher bouton correspondant // si dates == periode -> cocher bouton correspondant
// Sinon supprimer boutons et mettre case "rouge" + tooltip // Sinon supprimer boutons et mettre case "rouge" + tooltip
if (deb.isSame(afternoonPeriod.deb, "minutes") && fin.isSame(afternoonPeriod.fin, "minutes")) { if (deb.isSame(afternoonPeriod.deb, "minutes") && fin.isSame(afternoonPeriod.fin, "minutes")) {
@ -504,7 +504,7 @@
let target = e.target; let target = e.target;
let parent = target.parentElement; let parent = target.parentElement;
let isCancelled = await actionButton(target, !target.checked); let isCancelled = await actionButton(target, !target.checked);
if (isCancelled) { if (isCancelled) {
e.preventDefault(); e.preventDefault();
@ -690,7 +690,7 @@
} }
} }
document.getElementById("text-matin").addEventListener("click", (e)=>{ document.getElementById("text-matin").addEventListener("click", (e)=>{
e.preventDefault(); e.preventDefault();
@ -801,6 +801,7 @@ document.addEventListener("DOMContentLoaded", ()=>{
{{moduleimpl_select | safe}} {{moduleimpl_select | safe}}
</label> </label>
<button onclick="changeWeek(false)">Semaine suivante</button> <button onclick="changeWeek(false)">Semaine suivante</button>
<span><a href="{{url_choix_semaine}}" class="stdlink">autre semaine<a></span>
</div> </div>
<h3 id="tableau-dates"> <h3 id="tableau-dates">

View File

@ -1980,7 +1980,7 @@ def signal_assiduites_hebdo():
# Vérification semaine dans format iso 8601 et formsemestre # Vérification semaine dans format iso 8601 et formsemestre
regex_iso8601 = r"^\d{4}-W\d{2}$" regex_iso8601 = r"^\d{4}-W\d{2}$"
if not re.match(regex_iso8601, week): if week and not re.match(regex_iso8601, week):
raise ScoValueError("Semaine invalide", dest_url=request.referrer) raise ScoValueError("Semaine invalide", dest_url=request.referrer)
fs_deb_iso8601 = formsemestre.date_debut.strftime("%Y-W%W") fs_deb_iso8601 = formsemestre.date_debut.strftime("%Y-W%W")
@ -1989,10 +1989,12 @@ def signal_assiduites_hebdo():
# Utilisation de la propriété de la norme iso 8601 # Utilisation de la propriété de la norme iso 8601
# les chaines sont triables par ordre alphanumérique croissant # les chaines sont triables par ordre alphanumérique croissant
# et produiront le même ordre que les dates par ordre chronologique croissant # et produiront le même ordre que les dates par ordre chronologique croissant
if week < fs_deb_iso8601 or week > fs_fin_iso8601: if (not week) or week < fs_deb_iso8601 or week > fs_fin_iso8601:
flash( if week:
"La semaine n'est pas dans le semestre, choisissez la semaine sur laquelle saisir l'assiduité" flash(
) """La semaine n'est pas dans le semestre,
choisissez la semaine sur laquelle saisir l'assiduité"""
)
return sco_gen_cal.calendrier_choix_date( return sco_gen_cal.calendrier_choix_date(
date_debut=formsemestre.date_debut, date_debut=formsemestre.date_debut,
date_fin=formsemestre.date_fin, date_fin=formsemestre.date_fin,
@ -2076,6 +2078,15 @@ def signal_assiduites_hebdo():
for key, val in jours.items(): for key, val in jours.items():
hebdo_jours.append((key in non_travail, val)) hebdo_jours.append((key in non_travail, val))
url_choix_semaine = url_for(
"assiduites.signal_assiduites_hebdo",
group_ids=",".join(map(str, groups_infos.group_ids)),
week="",
scodoc_dept=g.scodoc_dept,
formsemestre_id=groups_infos.formsemestre_id,
moduleimpl_id=moduleimpl_id,
)
return render_template( return render_template(
"assiduites/pages/signal_assiduites_hebdo.j2", "assiduites/pages/signal_assiduites_hebdo.j2",
title="Assiduité: saisie hebdomadaire", title="Assiduité: saisie hebdomadaire",
@ -2091,6 +2102,7 @@ def signal_assiduites_hebdo():
formsemestre_id=formsemestre_id, formsemestre_id=formsemestre_id,
dept_id=g.scodoc_dept_id, dept_id=g.scodoc_dept_id,
), ),
url_choix_semaine=url_choix_semaine,
) )