diff --git a/app/api/justificatifs.py b/app/api/justificatifs.py
index 7017ca1b4..6228bcf86 100644
--- a/app/api/justificatifs.py
+++ b/app/api/justificatifs.py
@@ -341,6 +341,7 @@ def justif_delete():
else:
output["success"][f"{i}"] = {"OK": True}
db.session.commit()
+
return jsonify(output)
@@ -356,8 +357,12 @@ def _delete_singular(justif_id: int, database):
if archive_name is not None:
archiver: JustificatifArchiver = JustificatifArchiver()
archiver.delete_justificatif(justificatif_unique.etudid, archive_name)
-
database.session.delete(justificatif_unique)
+
+ compute_assiduites_justified(
+ Justificatif.query.filter_by(etudid=justificatif_unique.etudid), True
+ )
+
return (200, "OK")
diff --git a/app/scodoc/html_sidebar.py b/app/scodoc/html_sidebar.py
index 5403b4d96..b0d4a2348 100755
--- a/app/scodoc/html_sidebar.py
+++ b/app/scodoc/html_sidebar.py
@@ -138,7 +138,7 @@ def sidebar(etudid: int = None):
H.append(
f"""
Calendrier
- Liste
+ Liste
"""
)
diff --git a/app/static/css/assiduites.css b/app/static/css/assiduites.css
index be487a7e3..1301044f4 100644
--- a/app/static/css/assiduites.css
+++ b/app/static/css/assiduites.css
@@ -482,4 +482,8 @@
#page-assiduite-content>* {
margin: 1.5% 0;
+}
+
+.rouge {
+ color: crimson;
}
\ No newline at end of file
diff --git a/app/static/js/assiduites.js b/app/static/js/assiduites.js
index bd004f427..94efe5f92 100644
--- a/app/static/js/assiduites.js
+++ b/app/static/js/assiduites.js
@@ -856,6 +856,23 @@ function actualizeEtudAssiduite(etudid, has_formsemestre = true) {
});
}
+function getAllAssiduitesFromEtud(etudid, action) {
+ const url_api = getUrl() + `/api/assiduites/${etudid}`;
+
+ $.ajax({
+ async: true,
+ type: "GET",
+ url: url_api,
+ success: (data, status) => {
+ if (status === "success") {
+ assiduites[etudid] = data;
+ action(data);
+ }
+ },
+ error: () => {},
+ });
+}
+
/**
* Déclenchement d'une action après appuie sur un bouton d'assiduité
* @param {HTMLInputElement} element Bouton d'assiduité appuyé
@@ -1100,10 +1117,6 @@ function createMiniTimeline(assiduitesArray) {
}
//ajouter affichage assiduites on over
setupAssiduiteBuble(block, assiduité);
-
- if (assiduité.est_just) {
- block.classList.add("justified");
- }
}
const action = (justificatifs) => {
@@ -1675,7 +1688,7 @@ window.onload = () => {
splitAssiduiteModal(selectedAssiduite);
}
});
- editBtn.addEventListener("click", () => {
+ editBtn?.addEventListener("click", () => {
if (selectedAssiduite) {
editAssiduiteModal(selectedAssiduite);
}
@@ -1934,3 +1947,35 @@ function createJustificatif(justif) {
}
);
}
+
+function getAllJustificatifsFromEtud(etudid, action) {
+ const url_api = getUrl() + `/api/justificatifs/${etudid}`;
+ $.ajax({
+ async: true,
+ type: "GET",
+ url: url_api,
+ success: (data, status) => {
+ if (status === "success") {
+ action(data);
+ }
+ },
+ error: () => {},
+ });
+}
+
+function deleteJustificatif(justif_id) {
+ const path = getUrl() + `/api/justificatif/delete`;
+ sync_post(
+ path,
+ [justif_id],
+ (data, status) => {
+ //success
+ if (data.success.length > 0) {
+ }
+ },
+ (data, status) => {
+ //error
+ console.error(data, status);
+ }
+ );
+}
diff --git a/app/templates/assiduites/liste_assiduites.j2 b/app/templates/assiduites/liste_assiduites.j2
new file mode 100644
index 000000000..0f60c91d4
--- /dev/null
+++ b/app/templates/assiduites/liste_assiduites.j2
@@ -0,0 +1,330 @@
+{% include "assiduites/alert.j2" %}
+{% include "assiduites/prompt.j2" %}
+{% block app_content %}
+
+
+
+
Liste de l'assiduité et des justificatifs de {{sco.etud.nomprenom}}
+
+
Assiduités :
+
+
+
+ Début |
+ Fin |
+ État |
+ Module |
+ Justifiée |
+
+
+
+
+
+
+
Justificatifs :
+
+
+
+ Début |
+ Fin |
+ État |
+ Raison |
+
+
+
+
+
+
+
+
+
+{% endblock app_content %}
+
+
+
+
\ No newline at end of file
diff --git a/app/templates/sidebar.j2 b/app/templates/sidebar.j2
index d04138076..b579a1f03 100755
--- a/app/templates/sidebar.j2
+++ b/app/templates/sidebar.j2
@@ -73,7 +73,7 @@
{% endif %}
Calendrier
- Liste
{% endif %}
diff --git a/app/views/assiduites.py b/app/views/assiduites.py
index 83bf22b57..d622ebb12 100644
--- a/app/views/assiduites.py
+++ b/app/views/assiduites.py
@@ -201,6 +201,48 @@ def signal_assiduites_etud():
).build()
+@bp.route("/ListeAssiduitesEtud")
+@scodoc
+@permission_required(Permission.ScoAbsChange)
+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é
+ """
+
+ 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")
+
+ header: str = html_sco_header.sco_header(
+ page_title="Liste des assiduités",
+ init_qtip=True,
+ javascripts=[
+ "js/assiduites.js",
+ "libjs/moment.new.min.js",
+ "libjs/moment-timezone.js",
+ ],
+ cssstyles=CSSSTYLES
+ + [
+ "css/assiduites.css",
+ ],
+ )
+
+ return HTMLBuilder(
+ header,
+ render_template(
+ "assiduites/liste_assiduites.j2",
+ sco=ScoData(etud),
+ date=datetime.date.today().isoformat(),
+ ),
+ ).build()
+
+
@bp.route("/SignalAssiduiteGr")
@scodoc
@permission_required(Permission.ScoAbsChange)