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: 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 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: 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 = { data = {
"etudid" : int, "etudid" : int,

View File

@ -9,9 +9,9 @@
{% block app_content %} {% block app_content %}
{% if action == "modifier" %} {% if action == "modifier" %}
{% include "assiduites/widgets/tableau_actions/modifier.j2" %} {% include "assiduites/widgets/tableau_actions/modifier.j2" %}
{% else%} {% else%}
{% include "assiduites/widgets/tableau_actions/details.j2" %} {% include "assiduites/widgets/tableau_actions/details.j2" %}
{% endif %} {% endif %}
<br> <br>
<hr> <hr>

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"> <form action="" method="post" enctype="multipart/form-data">
<input type="hidden" name="obj_id" value="{{obj_id}}"> <input type="hidden" name="obj_id" value="{{obj_id}}">

View File

@ -1256,30 +1256,37 @@ def _prepare_tableau(
@scodoc @scodoc
@permission_required(Permission.AbsChange) @permission_required(Permission.AbsChange)
def tableau_assiduite_actions(): 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") obj_type: str = request.args.get("type", "assiduite")
action: str = request.args.get("action", "details") action: str = request.args.get("action", "details")
obj_id: str = int(request.args.get("obj_id", -1)) obj_id: str = int(request.args.get("obj_id", -1))
objet: Assiduite | Justificatif objet: Assiduite | Justificatif
objet_name = ""
if obj_type == "assiduite": if obj_type == "assiduite":
objet: Assiduite = Assiduite.query.get_or_404(obj_id) objet: Assiduite = Assiduite.query.get_or_404(obj_id)
objet_name = scu.EtatAssiduite(objet.etat).version_lisible()
else: else:
objet: Justificatif = Justificatif.query.get_or_404(obj_id) objet: Justificatif = Justificatif.query.get_or_404(obj_id)
objet_name = "Justificatif"
# Suppression : attention, POST ou GET !
if action == "supprimer": if action == "supprimer":
objet.supprimer() objet.supprimer()
if obj_type == "assiduite": flash(f"{objet_name} supprimé")
flash("L'assiduité a bien été supprimée")
else:
flash("Le justificatif a bien été supprimé")
return redirect(request.referrer) return redirect(request.referrer)
if request.method == "GET": if request.method == "GET":
module = "" module: str | int = "" # moduleimpl_id ou chaine libre
if obj_type == "assiduite": 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() formsemestre = objet.get_formsemestre()
if objet.moduleimpl_id is not None: if objet.moduleimpl_id is not None:
module = objet.moduleimpl_id module = objet.moduleimpl_id
@ -1291,13 +1298,16 @@ def tableau_assiduite_actions():
return render_template( return render_template(
"assiduites/pages/tableau_actions.j2", "assiduites/pages/tableau_actions.j2",
sco=ScoData(etud=objet.etudiant), sco=ScoData(etud=objet.etudiant),
# XXX type semble être utilisé qq part, ne pas changer
type="Justificatif" if obj_type == "justificatif" else "Assiduité", type="Justificatif" if obj_type == "justificatif" else "Assiduité",
action=action, action=action,
etud=objet.etudiant,
objet=_preparer_objet(obj_type, objet), objet=_preparer_objet(obj_type, objet),
objet_name=objet_name,
obj_id=obj_id, obj_id=obj_id,
moduleimpl=module, moduleimpl=module,
) )
# Cas des POSTS # ----- Cas POST
if obj_type == "assiduite": if obj_type == "assiduite":
try: try:
_action_modifier_assiduite(objet) _action_modifier_assiduite(objet)
@ -1396,7 +1406,7 @@ def _action_modifier_justificatif(justi: Justificatif):
def _preparer_objet( def _preparer_objet(
obj_type: str, objet: Assiduite | Justificatif, sans_gros_objet: bool = False obj_type: str, objet: Assiduite | Justificatif, sans_gros_objet: bool = False
) -> dict: ) -> 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() objet_prepare: dict = objet.to_dict()
if obj_type == "assiduite": if obj_type == "assiduite":
objet_prepare["etat"] = ( objet_prepare["etat"] = (