From cab72caebeff6e5022d931ef37b8ac426c7821c0 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Sat, 29 Jul 2023 18:32:29 +0200 Subject: [PATCH] API assiduite: ajoute NIP aux assiduites. + modifie relations Assuiduite/Identite. --- app/models/assiduites.py | 8 ++++++++ app/models/etudiants.py | 6 ++++-- tests/api/test_api_assiduites.py | 1 + tests/api/test_api_formsemestre.py | 2 -- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/models/assiduites.py b/app/models/assiduites.py index 9405627f75..085387c454 100644 --- a/app/models/assiduites.py +++ b/app/models/assiduites.py @@ -59,6 +59,10 @@ class Assiduite(db.Model): est_just = db.Column(db.Boolean, server_default="false", nullable=False) + # 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") + def to_dict(self, format_api=True) -> dict: """Retourne la représentation json de l'assiduité""" etat = self.etat @@ -75,6 +79,7 @@ class Assiduite(db.Model): data = { "assiduite_id": self.id, "etudid": self.etudid, + "nip": self.etudiant.code_nip, "moduleimpl_id": self.moduleimpl_id, "date_debut": self.date_debut, "date_fin": self.date_fin, @@ -202,6 +207,9 @@ class Justificatif(db.Model): # Archive_id -> sco_archives_justificatifs.py fichier = db.Column(db.Text()) + # XXX Faudrait-il le déclarer "joined" comme dans Assiduite ? + etudiant = db.relationship("Identite", back_populates="justificatifs") + def to_dict(self, format_api: bool = False) -> dict: """transformation de l'objet en dictionnaire sérialisable""" diff --git a/app/models/etudiants.py b/app/models/etudiants.py index 9156bd1824..5c4ea31e79 100644 --- a/app/models/etudiants.py +++ b/app/models/etudiants.py @@ -74,8 +74,10 @@ class Identite(db.Model): ) # Relations avec les assiduites et les justificatifs - assiduites = db.relationship("Assiduite", backref="etudiant", lazy="dynamic") - justificatifs = db.relationship("Justificatif", backref="etudiant", lazy="dynamic") + assiduites = db.relationship("Assiduite", back_populates="etudiant", lazy="dynamic") + justificatifs = db.relationship( + "Justificatif", back_populates="etudiant", lazy="dynamic" + ) def __repr__(self): return ( diff --git a/tests/api/test_api_assiduites.py b/tests/api/test_api_assiduites.py index 33a151cedc..4f92e55e25 100644 --- a/tests/api/test_api_assiduites.py +++ b/tests/api/test_api_assiduites.py @@ -24,6 +24,7 @@ MODULE = 1 ASSIDUITES_FIELDS = { "assiduite_id": int, "etudid": int, + "nip": str, "moduleimpl_id": int, "date_debut": str, "date_fin": str, diff --git a/tests/api/test_api_formsemestre.py b/tests/api/test_api_formsemestre.py index 918b7eeb0b..3c15a12322 100644 --- a/tests/api/test_api_formsemestre.py +++ b/tests/api/test_api_formsemestre.py @@ -36,9 +36,7 @@ from tests.api.tools_test_api import ( SAISIE_NOTES_FIELDS, FORMSEMESTRE_ETUD_FIELDS, FSEM_FIELDS, - FSEM_FIELDS, UE_FIELDS, - MODULE_FIELDS, FORMSEMESTRE_BULLETINS_FIELDS, FORMSEMESTRE_BULLETINS_ETU_FIELDS, FORMSEMESTRE_BULLETINS_FORMATION_FIELDS,