1
0
forked from ScoDoc/ScoDoc

ajout des permissions, factorisation de liste_etudiants et tests de la partie départements

This commit is contained in:
leonard_montalbano 2022-03-03 16:25:29 +01:00
parent c1b11bd9d1
commit b1e0def55a
3 changed files with 154 additions and 52 deletions

View File

@ -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

View File

@ -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

View File

@ -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", ""),
) )