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)
|
||||
|
||||
|
||||
@bp.route("/departements/<string:dept>/etudiants/liste", 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
|
||||
"""
|
||||
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é
|
||||
if formsemestre_id is not None:
|
||||
# Récupération du/des depts
|
||||
list_depts = models.Departement.query.filter(
|
||||
models.Departement.acronym == dept,
|
||||
models.FormSemestre.id == formsemestre_id,
|
||||
)
|
||||
list_etuds = []
|
||||
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)
|
||||
# Récupération du formsemestre
|
||||
formsemestre = models.FormSemestre.query.filter_by(id=formsemestre_id).first()
|
||||
# Récupération du département
|
||||
departement = formsemestre.departement
|
||||
# Récupération des étudiants
|
||||
etudiants = departement.etudiants.all()
|
||||
|
||||
# Mise en forme des données
|
||||
data = [d.to_dict_bul() for d in list_etuds]
|
||||
return jsonify(data)
|
||||
list_etu = [etu.to_dict_bul(include_urls=False) for etu in etudiants]
|
||||
|
||||
# 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")
|
||||
|
||||
|
||||
@ -155,8 +194,7 @@ def liste_semestres_courant(dept: str):
|
||||
return jsonify(data)
|
||||
|
||||
|
||||
@bp.route(
|
||||
"/departements/<string:dept>/formations/<int:formation_id>/referentiel_competences", methods=["GET"])
|
||||
@bp.route("/departements/<string:dept>/formations/<int:formation_id>/referentiel_competences", methods=["GET"])
|
||||
def referenciel_competences(dept: str, formation_id: int):
|
||||
"""
|
||||
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())
|
||||
|
||||
|
||||
@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):
|
||||
"""
|
||||
Retourne la liste des Ues, ressources et SAE d'un semestre
|
||||
|
@ -27,8 +27,9 @@ ETU = None
|
||||
@bp.route("/test_dept", methods=["GET"])
|
||||
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(
|
||||
SCODOC_URL + "/ScoDoc/api/departements",
|
||||
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
||||
@ -58,20 +59,23 @@ def get_departement():
|
||||
@bp.route("/test_formsemestre", methods=["GET"])
|
||||
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
|
||||
dept_acronym = DEPT["acronym"]
|
||||
|
||||
# liste_semestres_courant
|
||||
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)
|
||||
)
|
||||
|
||||
if r.status_code == 200:
|
||||
formsemestre = r.json()[0]
|
||||
# print(r.json()[0])
|
||||
print(r.json()[0])
|
||||
|
||||
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",
|
||||
@ -94,11 +98,12 @@ def get_formsemestre():
|
||||
@bp.route("/test_etu", methods=["GET"])
|
||||
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(
|
||||
SCODOC_URL + "/ScoDoc/api/etudiants",
|
||||
SCODOC_URL + "/ScoDoc/api/etudiants/courant",
|
||||
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")
|
||||
|
||||
|
||||
############################################### 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(
|
||||
SCODOC_URL + "/ScoDoc/api/departements",
|
||||
SCODOC_URL + "/ScoDoc/api/departements/" + DEPT["acronym"] + "/etudiants/liste",
|
||||
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
||||
)
|
||||
|
||||
# liste_etudiants
|
||||
r2 = requests.post(
|
||||
SCODOC_URL + "/ScoDoc/api/departements/<string:dept>/etudiants/liste/<int:sem_id>",
|
||||
if r1.status_code == 200: # Si la requête est "OK"
|
||||
# On récupère la liste des étudiants
|
||||
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)
|
||||
)
|
||||
|
||||
# liste_semestres_courant
|
||||
r3 = requests.post(
|
||||
SCODOC_URL + "/ScoDoc/api",
|
||||
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
||||
)
|
||||
if r2.status_code == 200: # Si la requête est "OK"
|
||||
# On récupère la liste des étudiants
|
||||
etudiants = r2.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")
|
||||
|
||||
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
|
||||
r4 = requests.post(
|
||||
SCODOC_URL + "/ScoDoc/api",
|
||||
r = requests.post(
|
||||
SCODOC_URL + "/ScoDoc/api/departements/" + DEPT["acronym"] + "/formations/" +
|
||||
FORMSEMESTRE["formation_id"] + "/referentiel_competences",
|
||||
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
||||
)
|
||||
|
||||
|
||||
@bp.route("/test_liste_semestre_index")
|
||||
def test_departements_semestre_index():
|
||||
"""
|
||||
Test la route semestre_index
|
||||
"""
|
||||
# semestre_index
|
||||
r5 = requests.post(
|
||||
SCODOC_URL + "/ScoDoc/api",
|
||||
SCODOC_URL + "/ScoDoc/api/departements/" + DEPT["acronym"] + "/formsemestre/" +
|
||||
FORMSEMESTRE["formation_id"] + "/programme",
|
||||
auth=(SCODOC_USER, SCODOC_PASSWORD)
|
||||
)
|
||||
|
||||
|
||||
#################################################### Etudiants ########################################################
|
||||
|
||||
def test_routes_etudiants():
|
||||
"""
|
||||
Test les routes de la partie Etudiants
|
||||
|
@ -47,6 +47,11 @@ _SCO_PERMISSIONS = (
|
||||
),
|
||||
(1 << 25, "RelationsEntreprisesSend", "Envoyer des offres"),
|
||||
(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