Améliore édition assiduité (TableauAssiduiteActions)

This commit is contained in:
Emmanuel Viennet 2023-12-06 14:42:10 +01:00
parent ea4706e535
commit 9f6b865a33
4 changed files with 29 additions and 15 deletions

View File

@ -591,9 +591,9 @@ def get_justifs_from_date(
def get_formsemestre_from_data(data: dict[str, datetime | int]) -> FormSemestre:
"""
get_formsemestre_from_data récupère un formsemestre en fonction des données passées
Si l'étudiant est inscrit à plusieurs formsemestre, prend le premier.
Args:
data (dict[str, datetime | int]): Une réprésentation simplifiée d'une assiduité ou d'un justificatif
data (dict[str, datetime | int]): Une représentation simplifiée d'une assiduité ou d'un justificatif
data = {
"etudid" : int,

View File

@ -1,4 +1,8 @@
<h1>Modifier {{type}} </h1>
<h2>Modifier {{objet_name}} de {{ etud.html_link_fiche() | safe }}</h2>
<div>
Actuellement noté{{etud.e}} en <b>{{objet_name|lower()}}</b> du {{objet.date_debut}} au {{objet.date_fin}}
</div>
<form action="" method="post" enctype="multipart/form-data">
<input type="hidden" name="obj_id" value="{{obj_id}}">

View File

@ -1256,30 +1256,37 @@ def _prepare_tableau(
@scodoc
@permission_required(Permission.AbsChange)
def tableau_assiduite_actions():
"""Edition/suppression/information sur une assiduité ou un justificatif
type = "assiduite" | "justificatif"
action = "supprimer" | "
"""
obj_type: str = request.args.get("type", "assiduite")
action: str = request.args.get("action", "details")
obj_id: str = int(request.args.get("obj_id", -1))
objet: Assiduite | Justificatif
objet_name = ""
if obj_type == "assiduite":
objet: Assiduite = Assiduite.query.get_or_404(obj_id)
objet_name = scu.EtatAssiduite(objet.etat).version_lisible()
else:
objet: Justificatif = Justificatif.query.get_or_404(obj_id)
objet_name = "Justificatif"
# Suppression : attention, POST ou GET !
if action == "supprimer":
objet.supprimer()
if obj_type == "assiduite":
flash("L'assiduité a bien été supprimée")
else:
flash("Le justificatif a bien été supprimé")
flash(f"{objet_name} supprimé")
return redirect(request.referrer)
if request.method == "GET":
module = ""
module: str | int = "" # moduleimpl_id ou chaine libre
if obj_type == "assiduite":
# Construction du menu module
# XXX ca ne va pas car cela ne prend qu'un semestre
# TODO reprendre le menu de la page ajout_assiduite_etud
formsemestre = objet.get_formsemestre()
if objet.moduleimpl_id is not None:
module = objet.moduleimpl_id
@ -1291,13 +1298,16 @@ def tableau_assiduite_actions():
return render_template(
"assiduites/pages/tableau_actions.j2",
sco=ScoData(etud=objet.etudiant),
# XXX type semble être utilisé qq part, ne pas changer
type="Justificatif" if obj_type == "justificatif" else "Assiduité",
action=action,
etud=objet.etudiant,
objet=_preparer_objet(obj_type, objet),
objet_name=objet_name,
obj_id=obj_id,
moduleimpl=module,
)
# Cas des POSTS
# ----- Cas POST
if obj_type == "assiduite":
try:
_action_modifier_assiduite(objet)
@ -1396,7 +1406,7 @@ def _action_modifier_justificatif(justi: Justificatif):
def _preparer_objet(
obj_type: str, objet: Assiduite | Justificatif, sans_gros_objet: bool = False
) -> dict:
# Préparation d'un objet pour simplifier l'affichage jinja
"Préparation d'un objet pour simplifier l'affichage jinja"
objet_prepare: dict = objet.to_dict()
if obj_type == "assiduite":
objet_prepare["etat"] = (