forked from ScoDoc/ScoDoc
Update opolka/ScoDoc from ScoDoc/ScoDoc #2
@ -401,9 +401,11 @@ class RowAssiJusti(tb.Row):
|
||||
self.add_cell(
|
||||
"entry_date",
|
||||
"Saisie le",
|
||||
self.ligne["entry_date"].strftime("%d/%m/%y à %H:%M")
|
||||
if self.ligne["entry_date"]
|
||||
else "?",
|
||||
(
|
||||
self.ligne["entry_date"].strftime("%d/%m/%y à %H:%M")
|
||||
if self.ligne["entry_date"]
|
||||
else "?"
|
||||
),
|
||||
data={"order": self.ligne["entry_date"] or ""},
|
||||
raw_content=self.ligne["entry_date"],
|
||||
classes=["small-font"],
|
||||
|
@ -19,6 +19,8 @@ from app.scodoc import sco_utils as scu
|
||||
class TableAssi(tb.Table):
|
||||
"""Table listant les statistiques d'assiduité des étudiants
|
||||
L'id de la ligne est etuid, et le row stocke etud.
|
||||
|
||||
Si convert_values, transforme les nombre en chaines ("12.34"), pour le html.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
@ -26,12 +28,17 @@ class TableAssi(tb.Table):
|
||||
etuds: list[Identite] = None,
|
||||
dates: tuple[str, str] = None,
|
||||
formsemestre: FormSemestre = None,
|
||||
convert_values=False,
|
||||
**kwargs,
|
||||
):
|
||||
self.rows: list["RowEtud"] = [] # juste pour que VSCode nous aide sur .rows
|
||||
classes = ["gt_table"]
|
||||
self.dates = [str(dates[0]) + "T00:00", str(dates[1]) + "T23:59"]
|
||||
self.formsemestre = formsemestre
|
||||
if convert_values:
|
||||
self.fmt_num = lambda x: f"{x:2.3g}"
|
||||
else:
|
||||
self.fmt_num = lambda x: x
|
||||
super().__init__(
|
||||
row_class=RowAssi,
|
||||
classes=classes,
|
||||
@ -71,6 +78,7 @@ class RowAssi(tb.Row):
|
||||
def add_etud_cols(self):
|
||||
"""Ajoute les colonnes"""
|
||||
etud = self.etud
|
||||
fmt_num = self.table.fmt_num
|
||||
self.table.group_titles.update(
|
||||
{
|
||||
"etud_codes": "Codes",
|
||||
@ -104,12 +112,12 @@ class RowAssi(tb.Row):
|
||||
)
|
||||
stats = self._get_etud_stats(etud)
|
||||
for key, value in stats.items():
|
||||
self.add_cell(key, value[0], f"{value[1] - value[2]}", "assi_stats")
|
||||
self.add_cell(key, value[0], fmt_num(value[1] - value[2]), "assi_stats")
|
||||
if key != "present":
|
||||
self.add_cell(
|
||||
key + "_justi",
|
||||
value[0] + " Justifiées",
|
||||
f"{value[2]}",
|
||||
fmt_num(value[2]),
|
||||
"assi_stats",
|
||||
)
|
||||
|
||||
@ -122,15 +130,16 @@ class RowAssi(tb.Row):
|
||||
self.add_cell(
|
||||
"justificatifs_att",
|
||||
"Justificatifs en Attente",
|
||||
f"{compte_justificatifs_att.count()}",
|
||||
fmt_num(compte_justificatifs_att.count()),
|
||||
)
|
||||
self.add_cell(
|
||||
"justificatifs", "Justificatifs", f"{compte_justificatifs.count()}"
|
||||
"justificatifs", "Justificatifs", fmt_num(compte_justificatifs.count())
|
||||
)
|
||||
|
||||
def _get_etud_stats(self, etud: Identite) -> dict[str, list[str, float, float]]:
|
||||
"""
|
||||
Renvoie le comptage (dans la métrique du département) des différents états d'assiduité d'un étudiant
|
||||
Renvoie le comptage (dans la métrique du département) des différents états
|
||||
d'assiduité d'un étudiant.
|
||||
|
||||
Returns :
|
||||
{
|
||||
|
@ -874,9 +874,11 @@ def choix_date() -> str:
|
||||
if ok:
|
||||
return redirect(
|
||||
url_for(
|
||||
"assiduites.signal_assiduites_group"
|
||||
if request.args.get("readonly") is None
|
||||
else "assiduites.visu_assiduites_group",
|
||||
(
|
||||
"assiduites.signal_assiduites_group"
|
||||
if request.args.get("readonly") is None
|
||||
else "assiduites.visu_assiduites_group"
|
||||
),
|
||||
scodoc_dept=g.scodoc_dept,
|
||||
formsemestre_id=formsemestre_id,
|
||||
group_ids=group_ids,
|
||||
@ -1294,7 +1296,12 @@ def etat_abs_date():
|
||||
@scodoc
|
||||
@permission_required(Permission.ScoView)
|
||||
def visu_assi_group():
|
||||
"""Visualisation de l'assiduité d'un groupe entre deux dates"""
|
||||
"""Visualisation de l'assiduité d'un groupe entre deux dates.
|
||||
Paramètres:
|
||||
- date_debut, date_fin (format ISO)
|
||||
- fmt : format d'export, html (défaut) ou xls
|
||||
- group_ids : liste des groupes
|
||||
"""
|
||||
|
||||
# Récupération des paramètres de la requête
|
||||
dates = {
|
||||
@ -1317,7 +1324,10 @@ def visu_assi_group():
|
||||
|
||||
# Génération du tableau des assiduités
|
||||
table: TableAssi = TableAssi(
|
||||
etuds=etuds, dates=list(dates.values()), formsemestre=formsemestre
|
||||
etuds=etuds,
|
||||
dates=list(dates.values()),
|
||||
formsemestre=formsemestre,
|
||||
convert_values=fmt == "html",
|
||||
)
|
||||
|
||||
# Export en XLS
|
||||
@ -2150,9 +2160,9 @@ def _module_selector_multiple(
|
||||
return render_template(
|
||||
"assiduites/widgets/moduleimpl_selector_multiple.j2",
|
||||
choices=choices,
|
||||
formsemestre_id=only_form.id
|
||||
if only_form
|
||||
else list(modimpls_by_formsemestre.keys())[0],
|
||||
formsemestre_id=(
|
||||
only_form.id if only_form else list(modimpls_by_formsemestre.keys())[0]
|
||||
),
|
||||
moduleimpl_id=moduleimpl_id,
|
||||
)
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
# -*- mode: python -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
SCOVERSION = "9.6.936"
|
||||
SCOVERSION = "9.6.937"
|
||||
|
||||
SCONAME = "ScoDoc"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user