Tri date table opérations sur évaluation

This commit is contained in:
Emmanuel Viennet 2024-06-30 00:26:17 +02:00
parent 9a289d5956
commit 8f12c452df

View File

@ -68,17 +68,18 @@ class NotesOperation(dict):
Keys: evaluation_id, date, uid, notes
"""
def get_comment(self):
def get_comment(self) -> str:
"le commentaire ou une chaine vide"
if self["notes"]:
return self["notes"][0]["comment"]
else:
return ""
return ""
def comp_values(self):
"compute keys: comment, nb_notes"
self["comment"] = self.get_comment()
self["nb_notes"] = len(self["notes"])
self["datestr"] = self["date"].strftime("%a %d/%m/%y %Hh%M")
self["date_str"] = self["date"].strftime("%a %d/%m/%y %Hh%M")
self["_date_str_order"] = self["date"].isoformat()
def undo(self):
"undo operation"
@ -113,12 +114,12 @@ def list_operations(evaluation_id):
).values()
)
dt = OPERATION_DATE_TOLERANCE
NotesDates = {} # { uid : intervalmap }
notes_dates = {} # { uid : intervalmap }
for note in notes + notes_log:
if note["uid"] not in NotesDates:
NotesDates[note["uid"]] = intervalmap()
nd = NotesDates[note["uid"]]
if note["uid"] not in notes_dates:
notes_dates[note["uid"]] = intervalmap()
nd = notes_dates[note["uid"]]
if nd[note["date"]] is None:
nd[note["date"] - dt : note["date"] + dt] = [note]
else:
@ -128,32 +129,32 @@ def list_operations(evaluation_id):
for note in notes:
current_notes_by_etud[note["etudid"]] = note
Ops = []
for uid in NotesDates.keys():
operations = []
for uid, note_date in notes_dates.items():
user_name = "{prenomnom} ({user_name})".format(**sco_users.user_info(uid))
for (t0, _), notes in NotesDates[uid].items():
Op = NotesOperation(
for (t0, _), notes in note_date.items():
operation = NotesOperation(
evaluation_id=evaluation_id,
date=t0,
uid=uid,
user_name=user_name,
notes=NotesDates[uid][t0],
notes=note_date[t0],
current_notes_by_etud=current_notes_by_etud,
)
Op.comp_values()
Ops.append(Op)
operation.comp_values()
operations.append(operation)
return Ops
return operations
def evaluation_list_operations(evaluation_id):
def evaluation_list_operations(evaluation_id: int):
"""Page listing operations on evaluation"""
evaluation = Evaluation.get_evaluation(evaluation_id)
operations = list_operations(evaluation_id)
columns_ids = ("datestr", "user_name", "nb_notes", "comment")
columns_ids = ("date_str", "user_name", "nb_notes", "comment")
titles = {
"datestr": "Date",
"date_str": "Date",
"user_name": "Enseignant",
"nb_notes": "Nb de notes",
"comment": "Commentaire",