forked from ScoDoc/ScoDoc
API: modif résultat de /etudiant(s)
This commit is contained in:
parent
a27fb9f3ef
commit
bd718d456d
@ -71,34 +71,8 @@ def etudiants_courants(long=False):
|
|||||||
...
|
...
|
||||||
]
|
]
|
||||||
|
|
||||||
En format "long":
|
En format "long": voir documentation.
|
||||||
{
|
|
||||||
"boursier": True,
|
|
||||||
"civilite": "F",
|
|
||||||
"code_ine": "AP987654",
|
|
||||||
"code_nip": "1234567",
|
|
||||||
"codepostaldomicile": "92800",
|
|
||||||
"date_naissance": "21/06/2000",
|
|
||||||
"dept_acronym": "CJ",
|
|
||||||
"dept_id": 1,
|
|
||||||
"dept_naissance": "092",
|
|
||||||
"description": "infos portail",
|
|
||||||
"domicile": "Plaza Condell",
|
|
||||||
"email": "jeanne.dupont@xxx.fr",
|
|
||||||
"emailperso": "",
|
|
||||||
"etudid": 4853,
|
|
||||||
"id": 4863,
|
|
||||||
"lieu_naissance": "SEVRES",
|
|
||||||
"nationalite": "",
|
|
||||||
"nom": "DUPONT",
|
|
||||||
"nomprenom": "Mme Jeanne Dupont",
|
|
||||||
"paysdomicile": "FRANCE",
|
|
||||||
"prenom": "JEANNE",
|
|
||||||
"telephone": "0102030405",
|
|
||||||
"telephonemobile": "",
|
|
||||||
"typeadresse": "domicile",
|
|
||||||
"villedomicile": "VALPARAISO",
|
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
allowed_depts = current_user.get_depts_with_permission(Permission.ScoView)
|
allowed_depts = current_user.get_depts_with_permission(Permission.ScoView)
|
||||||
etuds = Identite.query.filter(
|
etuds = Identite.query.filter(
|
||||||
@ -113,7 +87,7 @@ def etudiants_courants(long=False):
|
|||||||
or_(Departement.acronym == acronym for acronym in allowed_depts)
|
or_(Departement.acronym == acronym for acronym in allowed_depts)
|
||||||
)
|
)
|
||||||
if long:
|
if long:
|
||||||
data = [etud.to_dict_bul(include_urls=False) for etud in etuds]
|
data = [etud.to_dict_api() for etud in etuds]
|
||||||
else:
|
else:
|
||||||
data = [etud.to_dict_short() for etud in etuds]
|
data = [etud.to_dict_short() for etud in etuds]
|
||||||
return jsonify(data)
|
return jsonify(data)
|
||||||
@ -138,34 +112,6 @@ def etudiant(etudid: int = None, nip: str = None, ine: str = None):
|
|||||||
|
|
||||||
Les codes INE et NIP sont uniques au sein d'un département.
|
Les codes INE et NIP sont uniques au sein d'un département.
|
||||||
Si plusieurs objets ont le même code, on ramène le plus récemment inscrit.
|
Si plusieurs objets ont le même code, on ramène le plus récemment inscrit.
|
||||||
|
|
||||||
Exemple de résultat :
|
|
||||||
{
|
|
||||||
"civilite": "X",
|
|
||||||
"code_ine": "1",
|
|
||||||
"code_nip": "1",
|
|
||||||
"date_naissance": "",
|
|
||||||
"email": "SACHA.COSTA@example.com",
|
|
||||||
"emailperso": "",
|
|
||||||
"etudid": 1,
|
|
||||||
"nom": "COSTA",
|
|
||||||
"prenom": "SACHA",
|
|
||||||
"nomprenom": "Sacha COSTA",
|
|
||||||
"lieu_naissance": "",
|
|
||||||
"dept_naissance": "",
|
|
||||||
"nationalite": "",
|
|
||||||
"boursier": "",
|
|
||||||
"id": 1,
|
|
||||||
"codepostaldomicile": "",
|
|
||||||
"paysdomicile": "",
|
|
||||||
"telephonemobile": "",
|
|
||||||
"typeadresse": "domicile",
|
|
||||||
"domicile": "",
|
|
||||||
"villedomicile": "",
|
|
||||||
"telephone": "",
|
|
||||||
"fax": "",
|
|
||||||
"description": ""
|
|
||||||
}
|
|
||||||
"""
|
"""
|
||||||
etud = tools.get_etud(etudid, nip, ine)
|
etud = tools.get_etud(etudid, nip, ine)
|
||||||
|
|
||||||
@ -175,7 +121,7 @@ def etudiant(etudid: int = None, nip: str = None, ine: str = None):
|
|||||||
message="étudiant inconnu",
|
message="étudiant inconnu",
|
||||||
)
|
)
|
||||||
|
|
||||||
return jsonify(etud.to_dict_bul(include_urls=False))
|
return jsonify(etud.to_dict_api())
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/etudiants/etudid/<int:etudid>", methods=["GET"])
|
@bp.route("/etudiants/etudid/<int:etudid>", methods=["GET"])
|
||||||
@ -211,7 +157,7 @@ def etudiants(etudid: int = None, nip: str = None, ine: str = None):
|
|||||||
etuds = etuds.join(Departement).filter(
|
etuds = etuds.join(Departement).filter(
|
||||||
or_(Departement.acronym == acronym for acronym in allowed_depts)
|
or_(Departement.acronym == acronym for acronym in allowed_depts)
|
||||||
)
|
)
|
||||||
return jsonify([etud.to_dict_bul(include_urls=False) for etud in query])
|
return jsonify([etud.to_dict_api() for etud in query])
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/etudiant/etudid/<int:etudid>/formsemestres")
|
@bp.route("/etudiant/etudid/<int:etudid>/formsemestres")
|
||||||
@ -231,38 +177,6 @@ def etudiant_formsemestres(etudid: int = None, nip: int = None, ine: int = None)
|
|||||||
différents (si l'étudiant a changé de département). L'id du département est `dept_id`.
|
différents (si l'étudiant a changé de département). L'id du département est `dept_id`.
|
||||||
|
|
||||||
Si accès par département, ne retourne que les formsemestre suivis dans le département.
|
Si accès par département, ne retourne que les formsemestre suivis dans le département.
|
||||||
|
|
||||||
Exemple de résultat :
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"block_moyennes": false,
|
|
||||||
"bul_bgcolor": "white",
|
|
||||||
"bul_hide_xml": false,
|
|
||||||
"date_debut_iso": "2021-09-01",
|
|
||||||
"date_debut": "01/09/2021",
|
|
||||||
"date_fin_iso": "2022-08-31",
|
|
||||||
"date_fin": "31/08/2022",
|
|
||||||
"dept_id": 1,
|
|
||||||
"elt_annee_apo": null,
|
|
||||||
"elt_sem_apo": null,
|
|
||||||
"ens_can_edit_eval": false,
|
|
||||||
"etat": true,
|
|
||||||
"formation_id": 1,
|
|
||||||
"formsemestre_id": 1,
|
|
||||||
"gestion_compensation": false,
|
|
||||||
"gestion_semestrielle": false,
|
|
||||||
"id": 1,
|
|
||||||
"modalite": "FI",
|
|
||||||
"resp_can_change_ens": true,
|
|
||||||
"resp_can_edit": false,
|
|
||||||
"responsables": []
|
|
||||||
"scodoc7_id": null,
|
|
||||||
"semestre_id": 1,
|
|
||||||
"titre_num": "Semestre test semestre 1",
|
|
||||||
"titre": "Semestre test",
|
|
||||||
},
|
|
||||||
...
|
|
||||||
]
|
|
||||||
"""
|
"""
|
||||||
if etudid is not None:
|
if etudid is not None:
|
||||||
q_etud = Identite.query.filter_by(id=etudid)
|
q_etud = Identite.query.filter_by(id=etudid)
|
||||||
|
@ -207,6 +207,17 @@ class Identite(db.Model):
|
|||||||
d["id"] = self.id # a été écrasé par l'id de adresse
|
d["id"] = self.id # a été écrasé par l'id de adresse
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
def to_dict_api(self) -> dict:
|
||||||
|
"""Représentation dictionnaire pour export API, avec adresses et admission."""
|
||||||
|
e = dict(self.__dict__)
|
||||||
|
e.pop("_sa_instance_state", None)
|
||||||
|
admission = self.admission.first()
|
||||||
|
e["admission"] = admission.to_dict() if admission is not None else None
|
||||||
|
e["adresses"] = [adr.to_dict() for adr in self.adresses]
|
||||||
|
e["dept_acronym"] = self.departement.acronym
|
||||||
|
e.pop("departement", None)
|
||||||
|
return e
|
||||||
|
|
||||||
def inscriptions(self) -> list["FormSemestreInscription"]:
|
def inscriptions(self) -> list["FormSemestreInscription"]:
|
||||||
"Liste des inscriptions à des formsemestres, triée, la plus récente en tête"
|
"Liste des inscriptions à des formsemestres, triée, la plus récente en tête"
|
||||||
from app.models.formsemestre import FormSemestre, FormSemestreInscription
|
from app.models.formsemestre import FormSemestre, FormSemestreInscription
|
||||||
|
@ -138,7 +138,6 @@ def test_etudiant(api_headers):
|
|||||||
)
|
)
|
||||||
assert r.status_code == 200
|
assert r.status_code == 200
|
||||||
etud_ine = r.json()
|
etud_ine = r.json()
|
||||||
assert len(etud) == 26
|
|
||||||
fields_ok = verify_fields(etud, ETUD_FIELDS)
|
fields_ok = verify_fields(etud, ETUD_FIELDS)
|
||||||
assert fields_ok is True
|
assert fields_ok is True
|
||||||
|
|
||||||
|
@ -45,31 +45,21 @@ DEPARTEMENT_FIELDS = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
ETUD_FIELDS = {
|
ETUD_FIELDS = {
|
||||||
|
"admission",
|
||||||
|
"adresses",
|
||||||
"boursier",
|
"boursier",
|
||||||
"civilite",
|
"civilite",
|
||||||
"code_ine",
|
"code_ine",
|
||||||
"code_nip",
|
"code_nip",
|
||||||
"codepostaldomicile",
|
|
||||||
"date_naissance",
|
"date_naissance",
|
||||||
"dept_acronym",
|
"dept_acronym",
|
||||||
"dept_id",
|
"dept_id",
|
||||||
"dept_naissance",
|
"dept_naissance",
|
||||||
"description",
|
|
||||||
"domicile",
|
|
||||||
"email",
|
|
||||||
"emailperso",
|
|
||||||
"etudid",
|
|
||||||
"id",
|
"id",
|
||||||
"lieu_naissance",
|
"lieu_naissance",
|
||||||
"nationalite",
|
"nationalite",
|
||||||
"nom",
|
"nom",
|
||||||
"nomprenom",
|
|
||||||
"paysdomicile",
|
|
||||||
"prenom",
|
"prenom",
|
||||||
"telephone",
|
|
||||||
"telephonemobile",
|
|
||||||
"typeadresse",
|
|
||||||
"villedomicile",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FORMATION_FIELDS = {
|
FORMATION_FIELDS = {
|
||||||
|
Loading…
Reference in New Issue
Block a user