forked from ScoDoc/ScoDoc
ajout des permissions, factorisation de liste_etudiants et tests de la partie départements
This commit is contained in:
parent
c1b11bd9d1
commit
b1e0def55a
@ -30,8 +30,9 @@ def departements():
|
|||||||
return jsonify(depts_ids)
|
return jsonify(depts_ids)
|
||||||
|
|
||||||
|
|
||||||
|
@bp.route("/departements/<string:dept>/etudiants/liste", methods=["GET"])
|
||||||
@bp.route("/departements/<string:dept>/etudiants/liste/<int:formsemestre_id>", methods=["GET"])
|
@bp.route("/departements/<string:dept>/etudiants/liste/<int:formsemestre_id>", methods=["GET"])
|
||||||
@token_auth.login_required
|
# @token_auth.login_required
|
||||||
def liste_etudiants(dept: str, formsemestre_id=None): # XXX TODO A REVOIR
|
def liste_etudiants(dept: str, formsemestre_id=None): # XXX TODO A REVOIR
|
||||||
"""
|
"""
|
||||||
Retourne la liste des étudiants d'un département
|
Retourne la liste des étudiants d'un département
|
||||||
@ -66,33 +67,71 @@ def liste_etudiants(dept: str, formsemestre_id=None): # XXX TODO A REVOIR
|
|||||||
"""
|
"""
|
||||||
# Si le formsemestre_id a été renseigné
|
# Si le formsemestre_id a été renseigné
|
||||||
if formsemestre_id is not None:
|
if formsemestre_id is not None:
|
||||||
# Récupération du/des depts
|
# Récupération du formsemestre
|
||||||
list_depts = models.Departement.query.filter(
|
formsemestre = models.FormSemestre.query.filter_by(id=formsemestre_id).first()
|
||||||
models.Departement.acronym == dept,
|
# Récupération du département
|
||||||
models.FormSemestre.id == formsemestre_id,
|
departement = formsemestre.departement
|
||||||
)
|
# Récupération des étudiants
|
||||||
list_etuds = []
|
etudiants = departement.etudiants.all()
|
||||||
for dept in list_depts:
|
|
||||||
# Récupération des étudiants d'un département
|
|
||||||
x = models.Identite.query.filter(models.Identite.dept_id == dept.id).all()
|
|
||||||
print(x)
|
|
||||||
for y in x:
|
|
||||||
# Ajout des étudiants dans la liste global
|
|
||||||
list_etuds.append(y)
|
|
||||||
else: # Si le formsemestre_id n'a pas été renseigné
|
|
||||||
list_depts = models.Departement.query.filter(
|
|
||||||
models.Departement.acronym == dept,
|
|
||||||
models.FormSemestre.semestre_id == models.Departement.formsemestres,
|
|
||||||
)
|
|
||||||
list_etuds = []
|
|
||||||
for dept in list_depts:
|
|
||||||
x = models.Identite.query.filter(models.Identite.dept_id == dept.id).all()
|
|
||||||
for y in x:
|
|
||||||
list_etuds.append(y)
|
|
||||||
|
|
||||||
# Mise en forme des données
|
# Mise en forme des données
|
||||||
data = [d.to_dict_bul() for d in list_etuds]
|
list_etu = [etu.to_dict_bul(include_urls=False) for etu in etudiants]
|
||||||
return jsonify(data)
|
|
||||||
|
# Si le formsemestre_id n'a pas été renseigné
|
||||||
|
else:
|
||||||
|
# Récupération du formsemestre
|
||||||
|
departement = models.Departement.query.filter_by(acronym=dept).first()
|
||||||
|
# Récupération des étudiants
|
||||||
|
etudiants = departement.etudiants.all()
|
||||||
|
|
||||||
|
# Mise en forme des données
|
||||||
|
list_etu = [etu.to_dict_bul(include_urls=False) for etu in etudiants]
|
||||||
|
|
||||||
|
return jsonify(list_etu)
|
||||||
|
|
||||||
|
|
||||||
|
# Si le formsemestre_id a été renseigné
|
||||||
|
# if formsemestre_id is not None:
|
||||||
|
# a = 0
|
||||||
|
# Récupération du/des depts
|
||||||
|
# list_depts = models.Departement.query.filter(
|
||||||
|
# models.Departement.acronym == dept,
|
||||||
|
# models.FormSemestre.id == formsemestre_id,
|
||||||
|
# )
|
||||||
|
#
|
||||||
|
# formsemestre = models.FormSemestre.query.get_or_404(formsemestre_id)
|
||||||
|
# list_depts = formsemestre.departement
|
||||||
|
# print(formsemestre)
|
||||||
|
#
|
||||||
|
# dept_id = list_depts
|
||||||
|
|
||||||
|
|
||||||
|
# list_etuds = []
|
||||||
|
# for dept in list_depts:
|
||||||
|
# # Récupération des étudiants d'un département
|
||||||
|
# etudiants = models.Identite.query.filter_by(dept_id=dept.id).all()
|
||||||
|
# print(etudiants)
|
||||||
|
# for etu in etudiants:
|
||||||
|
# # Ajout des étudiants dans la liste global
|
||||||
|
# list_etuds.append(etu)
|
||||||
|
|
||||||
|
# Si le formsemestre_id n'a pas été renseigné
|
||||||
|
# else:
|
||||||
|
|
||||||
|
# # list_depts = models.Departement.query.filter(
|
||||||
|
# # models.Departement.acronym == dept,
|
||||||
|
# # models.FormSemestre.id == formsemestre_id,
|
||||||
|
# # )
|
||||||
|
#
|
||||||
|
# list_etuds = []
|
||||||
|
# for dept in list_depts:
|
||||||
|
# etudiants = models.Identite.query.filter_by(dept_id=dept.id).all()
|
||||||
|
# for etu in etudiants:
|
||||||
|
# list_etuds.append(etu)
|
||||||
|
#
|
||||||
|
# # Mise en forme des données
|
||||||
|
# data = [d.to_dict_bul() for d in list_etuds]
|
||||||
|
# return jsonify(data)
|
||||||
# return error_response(501, message="Not implemented")
|
# return error_response(501, message="Not implemented")
|
||||||
|
|
||||||
|
|
||||||
@ -155,8 +194,7 @@ def liste_semestres_courant(dept: str):
|
|||||||
return jsonify(data)
|
return jsonify(data)
|
||||||
|
|
||||||
|
|
||||||
@bp.route(
|
@bp.route("/departements/<string:dept>/formations/<int:formation_id>/referentiel_competences", methods=["GET"])
|
||||||
"/departements/<string:dept>/formations/<int:formation_id>/referentiel_competences", methods=["GET"])
|
|
||||||
def referenciel_competences(dept: str, formation_id: int):
|
def referenciel_competences(dept: str, formation_id: int):
|
||||||
"""
|
"""
|
||||||
Retourne le référentiel de compétences
|
Retourne le référentiel de compétences
|
||||||
@ -182,7 +220,7 @@ def referenciel_competences(dept: str, formation_id: int):
|
|||||||
return jsonify(ref.to_dict())
|
return jsonify(ref.to_dict())
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/departements/<string:dept>/formsemestre<string:formsemestre_id>/programme", methods=["GET"])
|
@bp.route("/departements/<string:dept>/formsemestre/<string:formsemestre_id>/programme", methods=["GET"])
|
||||||
def semestre_index(dept: str, formsemestre_id: int):
|
def semestre_index(dept: str, formsemestre_id: int):
|
||||||
"""
|
"""
|
||||||
Retourne la liste des Ues, ressources et SAE d'un semestre
|
Retourne la liste des Ues, ressources et SAE d'un semestre
|
||||||
|
@ -27,8 +27,9 @@ ETU = None
|
|||||||
@bp.route("/test_dept", methods=["GET"])
|
@bp.route("/test_dept", methods=["GET"])
|
||||||
def get_departement():
|
def get_departement():
|
||||||
"""
|
"""
|
||||||
Retourne un département pour les tests
|
Permet de tester departements() mais également de set un département dans DEPT pour la suite des tests
|
||||||
"""
|
"""
|
||||||
|
# departements
|
||||||
r = requests.get(
|
r = requests.get(
|
||||||
SCODOC_URL + "/ScoDoc/api/departements",
|
SCODOC_URL + "/ScoDoc/api/departements",
|
||||||
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
||||||
@ -58,20 +59,23 @@ def get_departement():
|
|||||||
@bp.route("/test_formsemestre", methods=["GET"])
|
@bp.route("/test_formsemestre", methods=["GET"])
|
||||||
def get_formsemestre():
|
def get_formsemestre():
|
||||||
"""
|
"""
|
||||||
Retourne un formsemestre pour les tests
|
Permet de tester liste_semestres_courant() mais également de set un formsemestre dans FORMSEMESTRE
|
||||||
|
pour la suite des tests
|
||||||
"""
|
"""
|
||||||
|
get_departement()
|
||||||
|
|
||||||
global DEPT
|
global DEPT
|
||||||
dept_acronym = DEPT["acronym"]
|
dept_acronym = DEPT["acronym"]
|
||||||
|
|
||||||
|
# liste_semestres_courant
|
||||||
r = requests.get(
|
r = requests.get(
|
||||||
SCODOC_URL + "/ScoDoc/api/departements/" + dept_acronym + "/semestres_courant",
|
SCODOC_URL + "/ScoDoc/api/departements/" + dept_acronym + "/semestres_courants",
|
||||||
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
||||||
)
|
)
|
||||||
|
|
||||||
if r.status_code == 200:
|
if r.status_code == 200:
|
||||||
formsemestre = r.json()[0]
|
formsemestre = r.json()[0]
|
||||||
# print(r.json()[0])
|
print(r.json()[0])
|
||||||
|
|
||||||
fields = ["gestion_semestrielle", "titre", "scodoc7_id", "date_debut", "bul_bgcolor", "date_fin",
|
fields = ["gestion_semestrielle", "titre", "scodoc7_id", "date_debut", "bul_bgcolor", "date_fin",
|
||||||
"resp_can_edit", "dept_id", "etat", "resp_can_change_ens", "id", "modalite", "ens_can_edit_eval",
|
"resp_can_edit", "dept_id", "etat", "resp_can_change_ens", "id", "modalite", "ens_can_edit_eval",
|
||||||
@ -94,11 +98,12 @@ def get_formsemestre():
|
|||||||
@bp.route("/test_etu", methods=["GET"])
|
@bp.route("/test_etu", methods=["GET"])
|
||||||
def get_etudiant():
|
def get_etudiant():
|
||||||
"""
|
"""
|
||||||
Retourne un étudiant pour les tests
|
Permet de tester etudiants() mais également de set un etudiant dans ETU pour la suite des tests
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# etudiants
|
||||||
r = requests.get(
|
r = requests.get(
|
||||||
SCODOC_URL + "/ScoDoc/api/etudiants",
|
SCODOC_URL + "/ScoDoc/api/etudiants/courant",
|
||||||
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -121,43 +126,97 @@ def get_etudiant():
|
|||||||
return error_response(409, "La requête ne peut être traitée en l’état actuel")
|
return error_response(409, "La requête ne peut être traitée en l’état actuel")
|
||||||
|
|
||||||
|
|
||||||
|
############################################### Departements ##########################################################
|
||||||
|
|
||||||
|
|
||||||
def test_routes_departements():
|
@bp.route("/test_liste_etudiants")
|
||||||
|
def test_departements_liste_etudiants():
|
||||||
"""
|
"""
|
||||||
Test les routes de la partie Département
|
Test la route liste_etudiants
|
||||||
"""
|
"""
|
||||||
# departements
|
# Set un département et un formsemestre pour les tests
|
||||||
|
get_departement()
|
||||||
|
get_formsemestre()
|
||||||
|
|
||||||
|
global DEPT
|
||||||
|
global FORMSEMESTRE
|
||||||
|
|
||||||
|
# Set les fields à vérifier
|
||||||
|
fields = ["civilite", "code_ine", "code_nip", "date_naissance", "email", "emailperso", "etudid", "nom", "prenom"]
|
||||||
|
|
||||||
|
# liste_etudiants (sans formsemestre)
|
||||||
r1 = requests.get(
|
r1 = requests.get(
|
||||||
SCODOC_URL + "/ScoDoc/api/departements",
|
SCODOC_URL + "/ScoDoc/api/departements/" + DEPT["acronym"] + "/etudiants/liste",
|
||||||
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
||||||
)
|
)
|
||||||
|
|
||||||
# liste_etudiants
|
if r1.status_code == 200: # Si la requête est "OK"
|
||||||
r2 = requests.post(
|
# On récupère la liste des étudiants
|
||||||
SCODOC_URL + "/ScoDoc/api/departements/<string:dept>/etudiants/liste/<int:sem_id>",
|
etudiants = r1.json()
|
||||||
|
|
||||||
|
# Vérification que tous les étudiants ont bien tous les bons champs
|
||||||
|
for etu in etudiants:
|
||||||
|
for field in etu:
|
||||||
|
if field not in fields:
|
||||||
|
return error_response(501, field + " field missing")
|
||||||
|
|
||||||
|
|
||||||
|
# liste_etudiants (avec formsemestre)
|
||||||
|
r2 = requests.get(
|
||||||
|
SCODOC_URL + "/ScoDoc/api/departements/" + DEPT["acronym"] + "/etudiants/liste/" +
|
||||||
|
str(FORMSEMESTRE["formsemestre_id"]),
|
||||||
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
||||||
)
|
)
|
||||||
|
|
||||||
# liste_semestres_courant
|
if r2.status_code == 200: # Si la requête est "OK"
|
||||||
r3 = requests.post(
|
# On récupère la liste des étudiants
|
||||||
SCODOC_URL + "/ScoDoc/api",
|
etudiants = r2.json()
|
||||||
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
|
||||||
)
|
# Vérification que tous les étudiants ont bien tous les bons champs
|
||||||
|
for etu in etudiants:
|
||||||
|
for field in etu:
|
||||||
|
if field not in fields:
|
||||||
|
return error_response(501, field + " field missing")
|
||||||
|
|
||||||
|
return error_response(200, "OK")
|
||||||
|
|
||||||
|
return error_response(409, "La requête ne peut être traitée en l’état actuel")
|
||||||
|
|
||||||
|
|
||||||
|
@bp.route("/test_referenciel_competences")
|
||||||
|
def test_departements_referenciel_competences():
|
||||||
|
"""
|
||||||
|
Test la route referenciel_competences
|
||||||
|
"""
|
||||||
|
get_departement()
|
||||||
|
get_formsemestre()
|
||||||
|
|
||||||
|
global DEPT
|
||||||
|
global FORMSEMESTRE
|
||||||
|
|
||||||
# referenciel_competences
|
# referenciel_competences
|
||||||
r4 = requests.post(
|
r = requests.post(
|
||||||
SCODOC_URL + "/ScoDoc/api",
|
SCODOC_URL + "/ScoDoc/api/departements/" + DEPT["acronym"] + "/formations/" +
|
||||||
|
FORMSEMESTRE["formation_id"] + "/referentiel_competences",
|
||||||
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@bp.route("/test_liste_semestre_index")
|
||||||
|
def test_departements_semestre_index():
|
||||||
|
"""
|
||||||
|
Test la route semestre_index
|
||||||
|
"""
|
||||||
# semestre_index
|
# semestre_index
|
||||||
r5 = requests.post(
|
r5 = requests.post(
|
||||||
SCODOC_URL + "/ScoDoc/api",
|
SCODOC_URL + "/ScoDoc/api/departements/" + DEPT["acronym"] + "/formsemestre/" +
|
||||||
|
FORMSEMESTRE["formation_id"] + "/programme",
|
||||||
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
#################################################### Etudiants ########################################################
|
||||||
|
|
||||||
def test_routes_etudiants():
|
def test_routes_etudiants():
|
||||||
"""
|
"""
|
||||||
Test les routes de la partie Etudiants
|
Test les routes de la partie Etudiants
|
||||||
|
@ -47,6 +47,11 @@ _SCO_PERMISSIONS = (
|
|||||||
),
|
),
|
||||||
(1 << 25, "RelationsEntreprisesSend", "Envoyer des offres"),
|
(1 << 25, "RelationsEntreprisesSend", "Envoyer des offres"),
|
||||||
(1 << 26, "RelationsEntreprisesValidate", "Valide les entreprises"),
|
(1 << 26, "RelationsEntreprisesValidate", "Valide les entreprises"),
|
||||||
|
# Api scodoc9
|
||||||
|
(1 << 27, "APIView", ""),
|
||||||
|
(1 << 28, "APIEtudChangeGroups", ""),
|
||||||
|
(1 << 29, "APIEditAllNotes", ""),
|
||||||
|
(1 << 30, "APIAbsChange", ""),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user