forked from ScoDoc/ScoDoc
110 lines
3.3 KiB
Python
110 lines
3.3 KiB
Python
|
##############################################" Formations ############################################################
|
|||
|
from flask import jsonify
|
|||
|
|
|||
|
from app import models
|
|||
|
from app.api import bp
|
|||
|
from app.api.errors import error_response
|
|||
|
from app.scodoc.sco_formations import formation_export
|
|||
|
from app.scodoc.sco_moduleimpl import moduleimpl_list
|
|||
|
|
|||
|
|
|||
|
@bp.route("/formations", methods=["GET"])
|
|||
|
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/<int:formation_id>", methods=["GET"])
|
|||
|
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()
|
|||
|
|
|||
|
# Mise en forme des données
|
|||
|
data = [d.to_dict() for d in forma]
|
|||
|
|
|||
|
return jsonify(data)
|
|||
|
|
|||
|
|
|||
|
@bp.route("/formations/formation_export/<int:formation_id>", methods=["GET"])
|
|||
|
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")
|
|||
|
|
|||
|
return jsonify(data)
|
|||
|
|
|||
|
|
|||
|
@bp.route("/formations/apo/<string:etape_apo>", methods=["GET"])
|
|||
|
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).all()
|
|||
|
|
|||
|
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()
|
|||
|
data.append(formsem.to_dict())
|
|||
|
|
|||
|
return jsonify(data)
|
|||
|
# return error_response(501, message="Not implemented")
|
|||
|
|
|||
|
|
|||
|
@bp.route("/formations/moduleimpl/<int:moduleimpl_id>", methods=["GET"])
|
|||
|
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).all()
|
|||
|
|
|||
|
# Mise en forme des données
|
|||
|
data = list_moduleimpls[0].to_dict()
|
|||
|
|
|||
|
return jsonify(data)
|
|||
|
|
|||
|
|
|||
|
@bp.route(
|
|||
|
"/formations/moduleimpl/<int:moduleimpl_id>/formsemestre/<int:formsemestre_id>", methods=["GET"])
|
|||
|
def moduleimpls_sem(moduleimpl_id: int, 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
|
|||
|
"""
|
|||
|
# Fonction utilisée : app.scodoc.sco_moduleimpl.moduleimpl_list()
|
|||
|
|
|||
|
try:
|
|||
|
# Utilisation de la fonction moduleimpl_list
|
|||
|
data = moduleimpl_list(moduleimpl_id, formsemestre_id)
|
|||
|
except ValueError:
|
|||
|
return error_response(409, message="La requête ne peut être traitée en l’état actuel")
|
|||
|
|
|||
|
return jsonify(data)
|