From 8ded16b94f69d56bcc97cbe334a0293dadc22c90 Mon Sep 17 00:00:00 2001 From: Iziram Date: Tue, 19 Mar 2024 16:27:09 +0100 Subject: [PATCH] =?UTF-8?q?Assiduit=C3=A9=20:=20liste=5Fassi=20:=20colonne?= =?UTF-8?q?=20code=20et=20titre=20module=20closes=20#865?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/assiduites.py | 18 +++++++++----- app/tables/liste_assiduites.py | 43 ++++++++++++++++++++++++++++++---- 2 files changed, 51 insertions(+), 10 deletions(-) diff --git a/app/models/assiduites.py b/app/models/assiduites.py index db7a25872..745dfdbb6 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 2441f1016..819c33422 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 = (