diff --git a/app/api/assiduites.py b/app/api/assiduites.py index 64b0e509..e6cf873c 100644 --- a/app/api/assiduites.py +++ b/app/api/assiduites.py @@ -14,7 +14,6 @@ from flask_login import current_user, login_required from app import db, log import app.scodoc.sco_assiduites as scass import app.scodoc.sco_utils as scu -from app.scodoc import sco_preferences from app.api import api_bp as bp from app.api import api_web_bp, get_model_api_object, tools from app.decorators import permission_required, scodoc @@ -24,7 +23,6 @@ from app.models import ( Identite, ModuleImpl, Scolog, - Justificatif, ) from flask_sqlalchemy.query import Query from app.models.assiduites import get_assiduites_justif, get_justifs_from_date @@ -50,6 +48,8 @@ def assiduite(assiduite_id: int = None): "etat": "retard", "desc": "une description", "user_id: 1 or null, + "user_name" : login scodoc or null + "user_nom_complet": "Marie Dupont" "est_just": False or True, } """ diff --git a/app/auth/models.py b/app/auth/models.py index d0e85e91..1330b9b7 100644 --- a/app/auth/models.py +++ b/app/auth/models.py @@ -207,7 +207,7 @@ class User(UserMixin, db.Model): @staticmethod def verify_reset_password_token(token): - "Vérification du token de reéinitialisation du mot de passe" + "Vérification du token de ré-initialisation du mot de passe" try: token = jwt.decode( token, current_app.config["SECRET_KEY"], algorithms=["HS256"] diff --git a/app/models/assiduites.py b/app/models/assiduites.py index 0435281a..3474318a 100644 --- a/app/models/assiduites.py +++ b/app/models/assiduites.py @@ -66,6 +66,14 @@ class Assiduite(db.Model): # Déclare la relation "joined" car on va très souvent vouloir récupérer # l'étudiant en même tant que l'assiduité (perf.: évite nouvelle requete SQL) etudiant = db.relationship("Identite", back_populates="assiduites", lazy="joined") + # En revanche, user est rarement accédé: + user = db.relationship( + "User", + backref=db.backref( + "assiduites", lazy="select", order_by="Assiduite.entry_date" + ), + lazy="select", + ) def to_dict(self, format_api=True) -> dict: """Retourne la représentation json de l'assiduité""" @@ -87,6 +95,9 @@ class Assiduite(db.Model): "entry_date": self.entry_date, "user_id": None if user is None else user.id, # l'uid "user_name": None if user is None else user.user_name, # le login + "user_nom_complet": None + if user is None + else user.get_nomcomplet(), # "Marie Dupont" "est_just": self.est_just, "external_data": self.external_data, } diff --git a/app/static/js/assiduites.js b/app/static/js/assiduites.js index ad3d52a1..b98a0296 100644 --- a/app/static/js/assiduites.js +++ b/app/static/js/assiduites.js @@ -1746,6 +1746,7 @@ function getModuleImpl(assiduite) { return moduleimpls[id]; } +// le nom de l'utilisateur à afficher function getUser(obj) { if ( obj.hasOwnProperty("external_data") && @@ -1755,5 +1756,5 @@ function getUser(obj) { return obj.external_data.enseignant; } - return obj.user_id; + return obj.user_nom_complet || obj.user_id; } diff --git a/app/templates/assiduites/widgets/conflict.j2 b/app/templates/assiduites/widgets/conflict.j2 index a976a98a..c3ed9e87 100644 --- a/app/templates/assiduites/widgets/conflict.j2 +++ b/app/templates/assiduites/widgets/conflict.j2 @@ -206,7 +206,7 @@ assiduite.assiduite_id; document.getElementById( "modal-assiduite-user" - ).textContent = `saisi le ${formatDateModal( + ).textContent = `saisie le ${formatDateModal( assiduite.entry_date, "à" )} \npar ${assiduite.user_id}`; @@ -438,7 +438,7 @@ const userIdDiv = document.createElement("div"); userIdDiv.className = "assiduite-user_id"; - userIdDiv.textContent = `saisi le ${formatDateModal( + userIdDiv.textContent = `saisie le ${formatDateModal( assiduite.entry_date, "à" )} \npar ${assiduite.user_id}`; diff --git a/app/templates/assiduites/widgets/minitimeline.j2 b/app/templates/assiduites/widgets/minitimeline.j2 index 835cb308..555e1915 100644 --- a/app/templates/assiduites/widgets/minitimeline.j2 +++ b/app/templates/assiduites/widgets/minitimeline.j2 @@ -164,13 +164,13 @@ const userIdDiv = document.createElement("div"); userIdDiv.className = "assiduite-user_id"; - userIdDiv.textContent = `saisi le ${formatDateModal( + userIdDiv.textContent = `saisie le ${formatDateModal( assiduite.entry_date, "à" )}`; if (assiduite.user_id != null) { - userIdDiv.textContent += `\npar ${assiduite.user_id}` + userIdDiv.textContent += `\npar ${assiduite.user_nom_complet}` } bubble.appendChild(userIdDiv); diff --git a/app/templates/assiduites/widgets/tableau_assi.j2 b/app/templates/assiduites/widgets/tableau_assi.j2 index 8457539b..8707d579 100644 --- a/app/templates/assiduites/widgets/tableau_assi.j2 +++ b/app/templates/assiduites/widgets/tableau_assi.j2 @@ -151,7 +151,7 @@ ${etat}
- Créée par + par ${user}
@@ -164,9 +164,7 @@ Description

${desc}

-
- Identifiant de l'assiduité - ${id} +