1
0
forked from ScoDoc/ScoDoc

Assiduité : liste_assi : colonne code et titre module closes #865

This commit is contained in:
Iziram 2024-03-19 16:27:09 +01:00
parent 5d10ee467e
commit 8ded16b94f
2 changed files with 51 additions and 10 deletions

View File

@ -1,6 +1,6 @@
# -*- coding: UTF-8 -* # -*- coding: UTF-8 -*
"""Gestion de l'assiduité (assiduités + justificatifs) """Gestion de l'assiduité (assiduités + justificatifs)"""
"""
from datetime import datetime from datetime import datetime
from flask_login import current_user from flask_login import current_user
@ -336,13 +336,19 @@ class Assiduite(ScoDocModel):
""" """
return get_formsemestre_from_data(self.to_dict()) return get_formsemestre_from_data(self.to_dict())
def get_module(self, traduire: bool = False) -> int | str: def get_module(self, traduire: bool = False) -> Module | str:
"TODO documenter" """
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: if self.moduleimpl_id is not None:
if traduire:
modimpl: ModuleImpl = ModuleImpl.query.get(self.moduleimpl_id) modimpl: ModuleImpl = ModuleImpl.query.get(self.moduleimpl_id)
mod: Module = Module.query.get(modimpl.module_id) mod: Module = Module.query.get(modimpl.module_id)
if traduire:
return f"{mod.code} {mod.titre}" return f"{mod.code} {mod.titre}"
return mod
elif self.external_data is not None and "module" in self.external_data: elif self.external_data is not None and "module" in self.external_data:
return ( return (

View File

@ -12,7 +12,7 @@ from sqlalchemy import desc, literal, union, asc
from app import db, g from app import db, g
from app.auth.models import User 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 ( from app.scodoc.sco_utils import (
EtatAssiduite, EtatAssiduite,
EtatJustificatif, EtatJustificatif,
@ -534,10 +534,45 @@ class RowAssiJusti(tb.Row):
if self.table.options.show_module: if self.table.options.show_module:
if self.ligne["type"] == "assiduite": if self.ligne["type"] == "assiduite":
assi: Assiduite = Assiduite.query.get(self.ligne["obj_id"]) assi: Assiduite = Assiduite.query.get(self.ligne["obj_id"])
mod: str = assi.get_module(True) if self.table.no_pagination:
self.add_cell("module", "Module", mod, data={"order": mod}) 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: 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:
if self.table.no_pagination:
self.add_cell("module", "Module", "", data={"order": ""}) 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: def _utilisateur(self) -> None:
utilisateur: User = ( utilisateur: User = (