##############################################" Formations ############################################################ from flask import jsonify from app import models from app.api import bp from app.api.errors import error_response from app.api.auth import token_permission_required from app.scodoc.sco_formations import formation_export from app.scodoc.sco_permissions import Permission @bp.route("/formations", methods=["GET"]) @token_permission_required(Permission.APIView) def formations(): """ Retourne la liste des formations """ # Récupération de toutes les formations list_formations = models.Formation.query.all() # Mise en forme des données data = [d.to_dict() for d in list_formations] return jsonify(data) @bp.route("/formations/", methods=["GET"]) @token_permission_required(Permission.APIView) def formations_by_id(formation_id: int): """ Retourne une formation en fonction d'un id donné formation_id : l'id d'une formation """ # Récupération de la formation forma = models.Formation.query.filter_by(id=formation_id).first_or_404() # Mise en forme des données data = [d.to_dict() for d in forma] return jsonify(data) @bp.route("/formations/formation_export/", methods=["GET"]) @token_permission_required(Permission.APIView) def formation_export_by_formation_id(formation_id: int, export_ids=False): """ Retourne la formation, avec UE, matières, modules """ # Fonction utilité : app.scodoc.sco_formations.formation_export() try: # Utilisation de la fonction formation_export data = formation_export(formation_id) except ValueError: return error_response( 409, message="La requête ne peut être traitée en l’état actuel. \n" "Veillez vérifier la conformité du 'formation_id'", ) return jsonify(data) @bp.route("/formations/apo/", methods=["GET"]) @token_permission_required(Permission.APIView) def formsemestre_apo(etape_apo: int): """ Retourne les informations sur les formsemestres etape_apo : l'id d'une étape apogée """ # Récupération des formsemestres apos = models.FormSemestreEtape.query.filter_by(etape_apo=etape_apo) data = [] # Filtre les formsemestres correspondant + mise en forme des données for apo in apos: formsem = models.FormSemestre.query.filter_by( id=apo["formsemestre_id"] ).first_or_404() data.append(formsem.to_dict()) return jsonify(data) # return error_response(501, message="Not implemented") @bp.route("/formations/moduleimpl/", methods=["GET"]) @token_permission_required(Permission.APIView) def moduleimpls(moduleimpl_id: int): """ Retourne la liste des moduleimpl moduleimpl_id : l'id d'un moduleimpl """ # Récupération des tous les moduleimpl list_moduleimpls = models.ModuleImpl.query.filter_by(id=moduleimpl_id) # Mise en forme des données data = [moduleimpl.to_dict() for moduleimpl in list_moduleimpls] return jsonify(data) @bp.route( "/formations/moduleimpl/formsemestre//liste", methods=["GET"], ) # XXX TODO penser à changer la route sur la doc @token_permission_required(Permission.APIView) def moduleimpls_sem(formsemestre_id: int): """ Retourne la liste des moduleimpl d'un semestre moduleimpl_id : l'id d'un moduleimpl formsemestre_id : l'id d'un formsemestre """ formsemestre = models.FormSemestre.query.filter_by( id=formsemestre_id ).first_or_404() moduleimpls = formsemestre.modimpls_sorted data = [moduleimpl.to_dict() for moduleimpl in moduleimpls] return jsonify(data)