Assiduité : fusion liste_etud bilan_etud

This commit is contained in:
Iziram 2024-05-24 10:26:47 +02:00
parent 75ce1ccd31
commit 2ed4516a97
5 changed files with 20 additions and 105 deletions

View File

@ -28,6 +28,7 @@
""" """
Génération de la "sidebar" (marge gauche des pages HTML) Génération de la "sidebar" (marge gauche des pages HTML)
""" """
from flask import render_template, url_for from flask import render_template, url_for
from flask import g, request from flask import g, request
from flask_login import current_user from flask_login import current_user
@ -193,7 +194,7 @@ def sidebar(etudid: int = None):
formsemestre.date_debut.strftime(scu.DATE_FMT) formsemestre.date_debut.strftime(scu.DATE_FMT)
} au { } au {
formsemestre.date_fin.strftime(scu.DATE_FMT) formsemestre.date_fin.strftime(scu.DATE_FMT)
}">({ }" data-tooltip>({
sco_preferences.get_preference("assi_metrique", None)}) sco_preferences.get_preference("assi_metrique", None)})
<br>{nbabsjust:1g} J., {nbabsnj:1g} N.J.</span>""" <br>{nbabsjust:1g} J., {nbabsnj:1g} N.J.</span>"""
) )
@ -227,12 +228,9 @@ def sidebar(etudid: int = None):
<li><a href="{ url_for('assiduites.calendrier_assi_etud', <li><a href="{ url_for('assiduites.calendrier_assi_etud',
scodoc_dept=g.scodoc_dept, etudid=etudid) scodoc_dept=g.scodoc_dept, etudid=etudid)
}">Calendrier</a></li> }">Calendrier</a></li>
<li><a href="{ url_for('assiduites.liste_assiduites_etud',
scodoc_dept=g.scodoc_dept, etudid=etudid)
}">Liste</a></li>
<li><a href="{ url_for('assiduites.bilan_etud', <li><a href="{ url_for('assiduites.bilan_etud',
scodoc_dept=g.scodoc_dept, etudid=etudid) scodoc_dept=g.scodoc_dept, etudid=etudid)
}">Bilan</a></li> }" title="Les pages bilan et liste ont été fusionnées">Liste/Bilan</a></li>
</ul> </ul>
""" """
) )

View File

@ -86,9 +86,6 @@ Bilan assiduité de {{sco.etud.nomprenom}}
<div class="scobox"> <div class="scobox">
<section class="nonvalide"> <section class="nonvalide">
<div class="help">Le tableau n'affiche que les assiduités non justifiées
et les justificatifs soumis / modifiés
</div>
{{tableau | safe }} {{tableau | safe }}
</section> </section>
</div> </div>
@ -99,6 +96,9 @@ Bilan assiduité de {{sco.etud.nomprenom}}
département)</p> département)</p>
<p>Les statistiques sont calculées entre les deux dates sélectionnées. Après modification des dates, <p>Les statistiques sont calculées entre les deux dates sélectionnées. Après modification des dates,
appuyer sur le bouton "Actualiser"</p> appuyer sur le bouton "Actualiser"</p>
{% include "assiduites/explication_etats_justifs.j2" %}
</div> </div>
</div> </div>

View File

@ -1,27 +0,0 @@
{% extends "sco_page.j2" %}
{% block title %}
Assiduité de {{etud.nomprenom}}
{% endblock title %}
{% block styles %}
{{ super() }}
<link rel="stylesheet" href="{{scu.STATIC_DIR}}/css/assiduites.css">
{% endblock styles %}
{% block scripts %}
{{ super() }}
<script src="{{scu.STATIC_DIR}}/js/date_utils.js"></script>
{% endblock %}
{% block app_content %}
<div class="pageContent">
<h2>Liste de l'assiduité et des justificatifs de {{sco.etud.html_link_fiche()|safe}}</h2>
{{tableau | safe }}
</div>
{% include "assiduites/explication_etats_justifs.j2" %}
{% endblock app_content %}

View File

@ -57,7 +57,7 @@
<b>Absences</b> <b>Absences</b>
{% if sco.etud_cur_sem %} {% if sco.etud_cur_sem %}
<span title="absences du {{ sco.etud_cur_sem['date_debut'].strftime('%d/%m/%Y') }} <span title="absences du {{ sco.etud_cur_sem['date_debut'].strftime('%d/%m/%Y') }}
au {{ sco.etud_cur_sem['date_fin'].strftime('%d/%m/%Y') }}">({{sco.prefs["assi_metrique"]}}) au {{ sco.etud_cur_sem['date_fin'].strftime('%d/%m/%Y') }}" data-tooltip>({{sco.prefs["assi_metrique"]}})
<br />{{'%1g'|format(sco.nb_abs_just)}} J., {{'%1g'|format(sco.nb_abs_nj)}} N.J.</span> <br />{{'%1g'|format(sco.nb_abs_just)}} J., {{'%1g'|format(sco.nb_abs_nj)}} N.J.</span>
{% endif %} {% endif %}
<ul> <ul>
@ -73,10 +73,8 @@
{% endif %} {% endif %}
<li><a href="{{ url_for('assiduites.calendrier_assi_etud', scodoc_dept=g.scodoc_dept, <li><a href="{{ url_for('assiduites.calendrier_assi_etud', scodoc_dept=g.scodoc_dept,
etudid=sco.etud.id) }}">Calendrier</a></li> etudid=sco.etud.id) }}">Calendrier</a></li>
<li><a href="{{ url_for('assiduites.liste_assiduites_etud', scodoc_dept=g.scodoc_dept,
etudid=sco.etud.id) }}">Liste</a></li>
<li><a href="{{ url_for('assiduites.bilan_etud', scodoc_dept=g.scodoc_dept, <li><a href="{{ url_for('assiduites.bilan_etud', scodoc_dept=g.scodoc_dept,
etudid=sco.etud.id) }}">Bilan</a></li> etudid=sco.etud.id) }}" title="Les pages bilan et liste ont été fusionnées">Liste/Bilan</a></li>
</ul> </ul>
{% endif %} {% endif %}
</div> {# /etud-insidebar #} </div> {# /etud-insidebar #}

View File

@ -511,51 +511,6 @@ def _record_assiduite_etud(
return False return False
@bp.route("/liste_assiduites_etud")
@scodoc
@permission_required(Permission.ScoView)
def liste_assiduites_etud():
"""
liste_assiduites_etud Affichage de toutes les assiduites et justificatifs d'un etudiant
Args:
etudid (int): l'identifiant de l'étudiant
Returns:
str: l'html généré
"""
# Récupération de l'étudiant concerné
etudid = request.args.get("etudid", -1)
etud: Identite = Identite.query.get_or_404(etudid)
if etud.dept_id != g.scodoc_dept_id:
abort(404, "étudiant inexistant dans ce département")
# Gestion d'une assiduité unique (redirigé depuis le calendrier) TODO-Assiduites
assiduite_id: int = request.args.get("assiduite_id", -1)
# Préparation de la page
tableau = _prepare_tableau(
liste_assi.AssiJustifData.from_etudiants(
etud,
),
filename=f"assiduites-justificatifs-{etud.id}",
afficher_etu=False,
filtre=liste_assi.AssiFiltre(type_obj=0),
options=liste_assi.AssiDisplayOptions(show_module=True),
cache_key=f"tableau-etud-{etud.id}",
)
if not tableau[0]:
return tableau[1]
# Page HTML:
return render_template(
"assiduites/pages/liste_assiduites.j2",
assi_id=assiduite_id,
etud=etud,
tableau=tableau[1],
sco=ScoData(etud),
)
@bp.route("/bilan_etud") @bp.route("/bilan_etud")
@scodoc @scodoc
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@ -583,28 +538,19 @@ def bilan_etud():
sco_preferences.get_preference("assi_metrique", dept_id=g.scodoc_dept_id), sco_preferences.get_preference("assi_metrique", dept_id=g.scodoc_dept_id),
) )
# Récupération des assiduités et justificatifs de l'étudiant # Préparation de la page
data = liste_assi.AssiJustifData( tableau = _prepare_tableau(
etud.assiduites.filter( liste_assi.AssiJustifData.from_etudiants(
Assiduite.etat != scu.EtatAssiduite.PRESENT, Assiduite.est_just == False etud,
), ),
etud.justificatifs.filter( filename=f"assiduites-justificatifs-{etud.id}",
Justificatif.etat.in_(
[scu.EtatJustificatif.ATTENTE, scu.EtatJustificatif.MODIFIE]
)
),
)
table = _prepare_tableau(
data,
afficher_etu=False, afficher_etu=False,
filename=f"Bilan assiduité {etud.nomprenom}", filtre=liste_assi.AssiFiltre(type_obj=0),
titre="Bilan de l'assiduité de l'étudiant", options=liste_assi.AssiDisplayOptions(show_module=True),
cache_key=f"tableau-etud-{etud.id}-bilan", cache_key=f"tableau-etud-{etud.id}",
) )
if not tableau[0]:
if not table[0]: return tableau[1]
return table[1]
# Génération de la page HTML # Génération de la page HTML
return render_template( return render_template(
@ -614,7 +560,7 @@ def bilan_etud():
date_debut=date_debut, date_debut=date_debut,
date_fin=date_fin, date_fin=date_fin,
sco=ScoData(etud), sco=ScoData(etud),
tableau=table[1], tableau=tableau[1],
) )
@ -654,7 +600,7 @@ def edit_justificatif_etud(justif_id: int):
back_url = request.args.get("back_url", None) back_url = request.args.get("back_url", None)
redirect_url = back_url or url_for( redirect_url = back_url or url_for(
"assiduites.liste_assiduites_etud", "assiduites.bilan_etud",
scodoc_dept=g.scodoc_dept, scodoc_dept=g.scodoc_dept,
etudid=justif.etudiant.id, etudid=justif.etudiant.id,
) )