diff --git a/app/models/evaluations.py b/app/models/evaluations.py index 9a237c5c..e0733fb7 100644 --- a/app/models/evaluations.py +++ b/app/models/evaluations.py @@ -76,11 +76,11 @@ class Evaluation(db.Model): db.session.add(copy) return copy - def set_ue_poids(self, ue, poids: float): + def set_ue_poids(self, ue, poids: float) -> None: """Set poids évaluation vers cette UE""" self.update_ue_poids_dict({ue.id: poids}) - def set_ue_poids_dict(self, ue_poids_dict: dict): + def set_ue_poids_dict(self, ue_poids_dict: dict) -> None: """set poids vers les UE (remplace existants) ue_poids_dict = { ue_id : poids } """ @@ -91,16 +91,23 @@ class Evaluation(db.Model): self.ue_poids = L self.moduleimpl.invalidate_evaluations_poids() # inval cache - def update_ue_poids_dict(self, ue_poids_dict: dict): + def update_ue_poids_dict(self, ue_poids_dict: dict) -> None: """update poids vers UE (ajoute aux existants)""" current = self.get_ue_poids_dict() current.update(ue_poids_dict) self.set_ue_poids_dict(current) - def get_ue_poids_dict(self): + def get_ue_poids_dict(self) -> dict: """returns { ue_id : poids }""" return {p.ue.id: p.poids for p in self.ue_poids} + def get_ue_poids_str(self) -> str: + """string describing poids, for excel cells and pdfs + Note: si les poids ne sont pas initialisés (poids par défaut), + ils ne sont pas affichés. + """ + return ", ".join([f"{p.ue.acronyme}: {p.poids}" for p in self.ue_poids]) + class EvaluationUEPoids(db.Model): """Poids des évaluations (BUT) diff --git a/app/scodoc/sco_liste_notes.py b/app/scodoc/sco_liste_notes.py index 517d172d..09e5480f 100644 --- a/app/scodoc/sco_liste_notes.py +++ b/app/scodoc/sco_liste_notes.py @@ -32,6 +32,7 @@ import flask from flask import url_for, g, request from app import models +from app.models.evaluations import Evaluation from app.models.moduleimpls import ModuleImpl import app.scodoc.sco_utils as scu import app.scodoc.notesdb as ndb @@ -395,6 +396,7 @@ def _make_table_notes( key_mgr, note_sur_20, keep_numeric, + format=format, ) columns_ids.append(e["evaluation_id"]) # @@ -408,7 +410,7 @@ def _make_table_notes( # Si module, ajoute la (les) "moyenne(s) du module: if mode == "module": if len(evals) > 1: - # Moyenne de l'étudant dans le module + # Moyenne de l'étudiant dans le module # Affichée même en APC à titre indicatif _add_moymod_column( sem["formsemestre_id"], @@ -637,6 +639,7 @@ def _add_eval_columns( K, note_sur_20, keep_numeric, + format="html", ): """Add eval e""" nb_notes = 0 @@ -645,6 +648,7 @@ def _add_eval_columns( sum_notes = 0 notes = [] # liste des notes numeriques, pour calcul histogramme uniquement evaluation_id = e["evaluation_id"] + e_o = Evaluation.query.get(evaluation_id) # XXX en attendant ré-écriture NotesDB = sco_evaluation_db.do_evaluation_get_all_notes(evaluation_id) for row in rows: etudid = row["etudid"] @@ -706,9 +710,12 @@ def _add_eval_columns( row_coefs[evaluation_id] = "coef. %s" % e["coefficient"] if is_apc: - row_poids[evaluation_id] = _mini_table_eval_ue_poids( - evaluation_id, evals_poids, ues - ) + if format == "html": + row_poids[evaluation_id] = _mini_table_eval_ue_poids( + evaluation_id, evals_poids, ues + ) + else: + row_poids[evaluation_id] = e_o.get_ue_poids_str() if note_sur_20: nmax = 20.0 else: diff --git a/app/scodoc/sco_moduleimpl_status.py b/app/scodoc/sco_moduleimpl_status.py index 921fbd11..c9f5aaa2 100644 --- a/app/scodoc/sco_moduleimpl_status.py +++ b/app/scodoc/sco_moduleimpl_status.py @@ -31,9 +31,10 @@ import time from flask import g, url_for from flask_login import current_user -from app.auth.models import User +from app.auth.models import User from app.models import ModuleImpl +from app.models.evaluations import Evaluation import app.scodoc.sco_utils as scu from app.scodoc.sco_permissions import Permission @@ -391,8 +392,9 @@ def moduleimpl_status(moduleimpl_id=None, partition_id=None): ) H.append("""
""" % tr_class_1) @@ -586,19 +586,35 @@ def moduleimpl_status(moduleimpl_id=None, partition_id=None): H.append(""" | ||||||||||||||||||
""" % tr_class) - H.append(""" | ||||||||||||||||||
""" % tr_class) + if modimpl.module.is_apc(): + H.append( + f""" | { + evaluation.get_ue_poids_str()} | """ + ) + else: + H.append('') + H.append(""" | ||||||||||||||||
""") + H.append(""" | """) + if first_group and modimpl.module.is_apc(): + H.append( + f""" | { + evaluation.get_ue_poids_str()} | """ + ) + else: + H.append("""""") + first_group = False if gr_moyenne["group_name"] is None: name = "Tous" # tous else: name = "Groupe %s" % gr_moyenne["group_name"] H.append( - """ | %s | """ % name + """ | %s | """ % name ) if gr_moyenne["gr_nb_notes"] > 0: H.append("%(gr_moy)s" % gr_moyenne) @@ -637,6 +653,7 @@ def moduleimpl_status(moduleimpl_id=None, partition_id=None): H.append("""""") H.append("") H.append(""" |