From 7d0f21c9c3b45d23cbecb040b83cb495fb6b6d6a Mon Sep 17 00:00:00 2001 From: leonard_montalbano Date: Wed, 22 Dec 2021 08:19:39 +0100 Subject: [PATCH 1/4] changement du model du token en db. De db.String(32) en db.Text() --- app/auth/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/auth/models.py b/app/auth/models.py index f243f0e7..f3e406f7 100644 --- a/app/auth/models.py +++ b/app/auth/models.py @@ -65,7 +65,7 @@ class User(UserMixin, db.Model): date_created = db.Column(db.DateTime, default=datetime.utcnow) date_expiration = db.Column(db.DateTime, default=None) passwd_temp = db.Column(db.Boolean, default=False) - token = db.Column(db.String(32), index=True, unique=True) + token = db.Column(db.Text(), index=True, unique=True) token_expiration = db.Column(db.DateTime) roles = db.relationship("Role", secondary="user_role", viewonly=True) -- 2.45.1 From ea4d27dffcfd4924750b83963011938cd616da4c Mon Sep 17 00:00:00 2001 From: leonard_montalbano Date: Fri, 24 Dec 2021 16:25:17 +0100 Subject: [PATCH 2/4] commencement code api scodoc9 --- app/api/sco_api.py | 166 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 165 insertions(+), 1 deletion(-) diff --git a/app/api/sco_api.py b/app/api/sco_api.py index 6aa488c2..d824132b 100644 --- a/app/api/sco_api.py +++ b/app/api/sco_api.py @@ -52,7 +52,7 @@ from app.models import FormSemestre, FormSemestreInscription, Identite from app.scodoc.sco_permissions import Permission -@bp.route("list_depts", methods=["GET"]) +@bp.route("/list_depts", methods=["GET"]) @token_auth.login_required def list_depts(): depts = models.Departement.query.filter_by(visible=True).all() @@ -78,3 +78,167 @@ def etudiants(): FormSemestre.date_fin >= func.now(), ) return jsonify([e.to_dict_bul(include_urls=False) for e in query]) + + +######################## Departements ################################## + + +@bp.route("/departements", methods=["GET"]) +@token_auth.login_required +def departements(): + """ + Liste des id de départements + """ + depts = models.Departement.query.filter_by(visible=True).all() + data = [d.to_dict() for d in depts] + return jsonify(data) + + +@bp.route("/departements//etudiants/liste/", methods=["GET"]) +@token_auth.login_required +def liste_etudiants(dept, *args, sem_id): + """ + Liste des étudiants d'un département + """ + if sem_id is not None: + list_etu = models.Departement.query.filter( + models.Departement.acronym == dept, + models.FormSemestre.semestre_id == sem_id, + ) + else: + list_etu = models.Departement.query.filter( + models.Departement.acronym == dept, + models.FormSemestre.semestre_id == models.Departement.formsemestres, + ) + data = [d.to_dict() for d in list_etu] + return jsonify(data) + + +@bp.route("/departements//semestres_actifs", methods=["GET"]) +@token_auth.login_required +def liste_semestres_actifs(dept): + """ + Liste des semestres actifs d'un départements donné + """ + dept_id = models.Departement.query.filter(models.Departement.acronym == dept) + depts_actifs = models.FormSemestre.query.filter_by( + etat=True, + dept_id=dept_id, + ) + data = [da.to_dict() for da in depts_actifs] + + return jsonify(data) + + +@bp.route("/departements//formations//referentiel_competences") +@token_auth.login_required +def referenciel_competences(dept, formation): + """ + Le référenciel de compétences d'une formation donnée + """ + ref_comp = models.Formation.query.filter( + models.Departement.acronym == dept, + models.Formation.referentiel_competence_id == formation, + ) + data = [rc.to_dict() for rc in ref_comp] + + return jsonify(data) + + +####################### Etudiants ################################## + +@bp.route("/etudiant/", methods=["GET"]) +@token_auth.login_required +def etudiant(etudid): + """ + Un dictionnaire avec les informations de l'étudiant correspondant à l'id passé en paramètres. + """ + return jsonify(models.Identite.query.filter_by(etudid=etudid)) + + +@bp.route("/etudiant//semestre//bulletin", methods=["GET"]) +@token_auth.login_required +def etudiant_bulletin_semestre(etudid, sem_id): + """ + Le bulletin d'un étudiant en fonction de son id et d'un semestre donné + """ + return jsonify(models.BulAppreciations.query.filter_by(etudid=etudid, formsemestre_id=sem_id)) + + +@bp.route("/formsemestre//departements//etudiant/nip//releve") +@bp.route("/formsemestre//departements//etudiant/id//releve") +@bp.route("/formsemestre//departements//etudiant/ine//semestre//groups") +@token_auth.login_required +def etudiant_groups(etudid : int, fromsemestre_id : int): + """ + Liste des groupes auxquels appartient l'étudiant dans le semestre indiqué + """ + pass + +#######################" Programmes de formations ######################### + +@bp.route("/formations") +@bp.route("/formations/") +@token_auth.login_required +def formation_export(formation_id : int, export_ids=False): + """ + La formation, avec UE, matières, modules + """ + pass + +###################### UE ####################################### + +@bp.route("/departements//formations/programme/string:sem_id>") +@token_auth.login_required +def eus(dept : str, sem_id : int): + """ + Liste des UES, ressources et SAE d'un semestre + """ + pass + + +######## Semestres de formation ############### + + + + +############ Modules de formation ############## + + +########### Groupes et partitions ############### + + +####### Bulletins de notes ########### + + +############## Absences ############# + + +################ Logos ################ -- 2.45.1 From d7516293d591a8552d2fef1862983e861f4574ed Mon Sep 17 00:00:00 2001 From: leonard_montalbano Date: Wed, 29 Dec 2021 11:59:22 +0100 Subject: [PATCH 3/4] mini correction route --- app/api/sco_api.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/api/sco_api.py b/app/api/sco_api.py index d824132b..93c1a997 100644 --- a/app/api/sco_api.py +++ b/app/api/sco_api.py @@ -167,7 +167,7 @@ def etudiant_bulletin_semestre(etudid, sem_id): @bp.route("/formsemestre//departements//etudiant/nip//releve") @bp.route("/formsemestre//departements//etudiant/id//releve") -@bp.route("/formsemestre//departements//etudiant/ine//departements//etudiant/ine//releve") @token_auth.login_required def etudiant_bulletin(formsemestre_id, dept, etudid, format="json", *args, size): """ @@ -197,7 +197,7 @@ def etudiant_groups(etudid : int, fromsemestre_id : int): #######################" Programmes de formations ######################### @bp.route("/formations") -@bp.route("/formations/") @token_auth.login_required def formations(formation_id : int): """ @@ -215,7 +215,7 @@ def formation_export(formation_id : int, export_ids=False): ###################### UE ####################################### -@bp.route("/departements//formations/programme/string:sem_id>") +@bp.route("/departements//formations/programme/") @token_auth.login_required def eus(dept : str, sem_id : int): """ -- 2.45.1 From 6b36d9b07e0202de87f79df946ca70f2030773d0 Mon Sep 17 00:00:00 2001 From: leonard_montalbano Date: Wed, 29 Dec 2021 15:53:50 +0100 Subject: [PATCH 4/4] =?UTF-8?q?routing=20termin=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/sco_api.py | 218 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 192 insertions(+), 26 deletions(-) diff --git a/app/api/sco_api.py b/app/api/sco_api.py index 93c1a997..ddf63736 100644 --- a/app/api/sco_api.py +++ b/app/api/sco_api.py @@ -57,7 +57,8 @@ from app.scodoc.sco_permissions import Permission def list_depts(): depts = models.Departement.query.filter_by(visible=True).all() data = [d.to_dict() for d in depts] - return jsonify(data) + # return jsonify(data) + return error_response(501, message="Not implemented") @bp.route("/etudiants/courant", methods=["GET"]) @@ -77,7 +78,8 @@ def etudiants(): FormSemestre.date_debut <= func.now(), FormSemestre.date_fin >= func.now(), ) - return jsonify([e.to_dict_bul(include_urls=False) for e in query]) + # return jsonify([e.to_dict_bul(include_urls=False) for e in query]) + return error_response(501, message="Not implemented") ######################## Departements ################################## @@ -91,7 +93,8 @@ def departements(): """ depts = models.Departement.query.filter_by(visible=True).all() data = [d.to_dict() for d in depts] - return jsonify(data) + # return jsonify(data) + return error_response(501, message="Not implemented") @bp.route("/departements//etudiants/liste/", methods=["GET"]) @@ -111,7 +114,8 @@ def liste_etudiants(dept, *args, sem_id): models.FormSemestre.semestre_id == models.Departement.formsemestres, ) data = [d.to_dict() for d in list_etu] - return jsonify(data) + # return jsonify(data) + return error_response(501, message="Not implemented") @bp.route("/departements//semestres_actifs", methods=["GET"]) @@ -127,7 +131,8 @@ def liste_semestres_actifs(dept): ) data = [da.to_dict() for da in depts_actifs] - return jsonify(data) + # return jsonify(data) + return error_response(501, message="Not implemented") @bp.route("/departements//formations//referentiel_competences") @@ -142,7 +147,8 @@ def referenciel_competences(dept, formation): ) data = [rc.to_dict() for rc in ref_comp] - return jsonify(data) + # return jsonify(data) + return error_response(501, message="Not implemented") ####################### Etudiants ################################## @@ -153,7 +159,8 @@ def etudiant(etudid): """ Un dictionnaire avec les informations de l'étudiant correspondant à l'id passé en paramètres. """ - return jsonify(models.Identite.query.filter_by(etudid=etudid)) + # return jsonify(models.Identite.query.filter_by(etudid=etudid)) + return error_response(501, message="Not implemented") @bp.route("/etudiant//semestre//bulletin", methods=["GET"]) @@ -162,12 +169,16 @@ def etudiant_bulletin_semestre(etudid, sem_id): """ Le bulletin d'un étudiant en fonction de son id et d'un semestre donné """ - return jsonify(models.BulAppreciations.query.filter_by(etudid=etudid, formsemestre_id=sem_id)) + # return jsonify(models.BulAppreciations.query.filter_by(etudid=etudid, formsemestre_id=sem_id)) + return error_response(501, message="Not implemented") -@bp.route("/formsemestre//departements//etudiant/nip//releve") -@bp.route("/formsemestre//departements//etudiant/id//releve") -@bp.route("/formsemestre//departements//etudiant/ine//releve") +@bp.route("/formsemestre//departements//etudiant/nip//releve", + methods=["GET"]) +@bp.route("/formsemestre//departements//etudiant/id//releve", + methods=["GET"]) +@bp.route("/formsemestre//departements//etudiant/ine//releve", + methods=["GET"]) @token_auth.login_required def etudiant_bulletin(formsemestre_id, dept, etudid, format="json", *args, size): """ @@ -183,62 +194,217 @@ def etudiant_bulletin(formsemestre_id, dept, etudid, format="json", *args, size) else: return "erreur" - return jsonify(data) + # return jsonify(data) + return error_response(501, message="Not implemented") -@bp.route("/etudiant//semestre//groups") +@bp.route("/etudiant//semestre//groups", methods=["GET"]) @token_auth.login_required -def etudiant_groups(etudid : int, fromsemestre_id : int): +def etudiant_groups(etudid: int, fromsemestre_id: int): """ Liste des groupes auxquels appartient l'étudiant dans le semestre indiqué """ - pass + return error_response(501, message="Not implemented") + #######################" Programmes de formations ######################### -@bp.route("/formations") -@bp.route("/formations/") +@bp.route("/formations", methods=["GET"]) +@bp.route("/formations/", methods=["GET"]) @token_auth.login_required -def formations(formation_id : int): +def formations(formation_id: int): """ Liste des formations """ - pass + return error_response(501, message="Not implemented") -@bp.route("/formations/formation_export/") + +@bp.route("/formations/formation_export/", methods=["GET"]) @token_auth.login_required -def formation_export(formation_id : int, export_ids=False): +def formation_export(formation_id: int, export_ids=False): """ La formation, avec UE, matières, modules """ - pass + return error_response(501, message="Not implemented") + ###################### UE ####################################### -@bp.route("/departements//formations/programme/") +@bp.route("/departements//formations/programme/", methods=["GET"]) @token_auth.login_required -def eus(dept : str, sem_id : int): +def eus(dept: str, sem_id: int): """ Liste des UES, ressources et SAE d'un semestre """ - pass + return error_response(501, message="Not implemented") ######## Semestres de formation ############### - +@bp.route("/formations/formsemestre/", methods=["GET"]) +@bp.route("/formations/apo/", methods=["GET"]) +@token_auth.login_required +def formsemestre(id: int, ): + """ + Information sur les formsemestres + """ + return error_response(501, message="Not implemented") ############ Modules de formation ############## +@bp.route("/formations/moduleimpl/", methods=["GET"]) +@bp.route("/formations/moduleimpl//formsemestre/", methods=["GET"]) +@token_auth.login_required +def moduleimpl(id: int): + """ + Liste de moduleimpl + """ + return error_response(501, message="Not implemented") + ########### Groupes et partitions ############### +@bp.route("/partitions/", methods=["GET"]) +@token_auth.login_required +def partition(formsemestre_id: int): + """ + La liste de toutes les partitions d'un formsemestre + """ + return error_response(501, message="Not implemented") + + +@bp.route("/partitions/formsemestre//groups/group_ids?with_codes=&all_groups=&etat=", + methods=["GET"]) +@token_auth.login_required +def groups(formsemestre_id: int, group_ids: int): + """ + Liste des étudiants dans un groupe + """ + return error_response(501, message="Not implemented") + + +@bp.route( + "/partitions/set_groups?partition_id=&groups=&groups_to_delete=&groups_to_create=", + methods=["POST"]) +@token_auth.login_required +def set_groups(partition_id: int, groups: int, groups_to_delete: int, groups_to_create: int): + """ + Set les groups + """ + return error_response(501, message="Not implemented") + ####### Bulletins de notes ########### +@bp.route("/evaluations/", methods=["GET"]) +@token_auth.login_required +def evaluations(moduleimpl_id: int): + """ + Liste des évaluations à partir de l'id d'un moduleimpl + """ + return error_response(501, message="Not implemented") + + +@bp.route("/evaluations/eval_notes/", methods=["GET"]) +@token_auth.login_required +def evaluation_notes(evaluation_id: int): + """ + Liste des notes à partir de l'id d'une évaluation donnée + """ + return error_response(501, message="Not implemented") + + +@bp.route("/evaluations/eval_set_notes?eval_id=&etudid=¬e=", methods=["POST"]) +@token_auth.login_required +def evaluation_set_notes(eval_id: int, etudid: int, note: float): + """ + Set les notes d'une évaluation pour un étudiant donnée + """ + return error_response(501, message="Not implemented") + ############## Absences ############# +@bp.route("/absences/", methods=["GET"]) +@bp.route("/absences//abs_just_only", methods=["GET"]) +def absences(etudid: int): + """ + Liste des absences d'un étudiant donnée + """ + return error_response(501, message="Not implemented") + + +@bp.route("/absences/abs_signale", methods=["POST"]) +@token_auth.login_required +def abs_signale(): + """ + Retourne un html + """ + return error_response(501, message="Not implemented") + + +@bp.route("/absences/abs_annule", methods=["POST"]) +@token_auth.login_required +def abs_annule(): + """ + Retourne un html + """ + return error_response(501, message="Not implemented") + + +@bp.route("/absences/abs_annule_justif", methods=["POST"]) +@token_auth.login_required +def abs_annule_justif(): + """ + Retourne un html + """ + return error_response(501, message="Not implemented") + + +@bp.route("/absences/abs_group_etat/?group_ids=&date_debut=date_debut&date_fin=date_fin", + methods=["GET"]) +@token_auth.login_required +def abs_groupe_etat(group_ids: int, date_debut, date_fin, with_boursier=True, format="html"): + """ + Liste des absences d'un ou plusieurs groupes entre deux dates + """ + return error_response(501, message="Not implemented") + ################ Logos ################ + +@bp.route("/logos", methods=["GET"]) +@token_auth.login_required +def liste_logos(format="json"): + """ + Liste des logos définis pour le site scodoc. + """ + return error_response(501, message="Not implemented") + + +@bp.route("/logos/", methods=["GET"]) +@token_auth.login_required +def recup_logo_global(nom: str): + """ + Retourne l'image au format png ou jpg + """ + return error_response(501, message="Not implemented") + + +@bp.route("/departements//logos", methods=["GET"]) +@token_auth.login_required +def logo_dept(dept: str): + """ + Liste des logos définis pour le département visé. + """ + return error_response(501, message="Not implemented") + + +@bp.route("/departement//logos/", methods=["GET"]) +@token_auth.login_required +def recup_logo_dept_global(dept: str, nom: str): + """ + L'image format png ou jpg + """ + return error_response(501, message="Not implemented") -- 2.45.1