diff --git a/app/models/assiduites.py b/app/models/assiduites.py index db7a2587..745dfdbb 100644 --- a/app/models/assiduites.py +++ b/app/models/assiduites.py @@ -1,6 +1,6 @@ # -*- coding: UTF-8 -* -"""Gestion de l'assiduité (assiduités + justificatifs) -""" +"""Gestion de l'assiduité (assiduités + justificatifs)""" + from datetime import datetime from flask_login import current_user @@ -336,13 +336,19 @@ class Assiduite(ScoDocModel): """ return get_formsemestre_from_data(self.to_dict()) - def get_module(self, traduire: bool = False) -> int | str: - "TODO documenter" + def get_module(self, traduire: bool = False) -> Module | str: + """ + Retourne le module associé à l'assiduité + Si traduire est vrai, retourne le titre du module précédé du code + Sinon rentourne l'objet Module ou None + """ + if self.moduleimpl_id is not None: + modimpl: ModuleImpl = ModuleImpl.query.get(self.moduleimpl_id) + mod: Module = Module.query.get(modimpl.module_id) if traduire: - modimpl: ModuleImpl = ModuleImpl.query.get(self.moduleimpl_id) - mod: Module = Module.query.get(modimpl.module_id) return f"{mod.code} {mod.titre}" + return mod elif self.external_data is not None and "module" in self.external_data: return ( diff --git a/app/tables/liste_assiduites.py b/app/tables/liste_assiduites.py index 2441f101..819c3342 100644 --- a/app/tables/liste_assiduites.py +++ b/app/tables/liste_assiduites.py @@ -12,7 +12,7 @@ from sqlalchemy import desc, literal, union, asc from app import db, g from app.auth.models import User -from app.models import Assiduite, Identite, Justificatif +from app.models import Assiduite, Identite, Justificatif, Module from app.scodoc.sco_utils import ( EtatAssiduite, EtatJustificatif, @@ -534,10 +534,45 @@ class RowAssiJusti(tb.Row): if self.table.options.show_module: if self.ligne["type"] == "assiduite": assi: Assiduite = Assiduite.query.get(self.ligne["obj_id"]) - mod: str = assi.get_module(True) - self.add_cell("module", "Module", mod, data={"order": mod}) + if self.table.no_pagination: + mod: Module = assi.get_module(False) + code = mod.code if isinstance(mod, Module) else "" + titre = "" + if isinstance(mod, Module): + titre = mod.titre + elif isinstance(mod, str): + titre = mod + else: + titre = "Non Spécifié" + + self.add_cell( + "code_module", "Code Module", code, data={"order": code} + ) + self.add_cell( + "titre_module", + "Titre Module", + titre, + data={"order": titre}, + ) + else: + mod: Module = assi.get_module(True) + self.add_cell( + "module", + "Module", + mod, + data={"order": mod}, + ) else: - self.add_cell("module", "Module", "", data={"order": ""}) + if self.table.no_pagination: + self.add_cell("module", "Module", "", data={"order": ""}) + else: + self.add_cell("code_module", "Code Module", "", data={"order": ""}) + self.add_cell( + "titre_module", + "Titre Module", + "", + data={"order": ""}, + ) def _utilisateur(self) -> None: utilisateur: User = (