DocScoDoc/app/api/formsemestres.py

135 lines
4.7 KiB
Python
Raw Normal View History

########################################## Formsemestres ##############################################################
from flask import jsonify
import app
from app import models
from app.api import bp
from app.api.errors import error_response
2022-04-14 14:56:36 +02:00
from app.api.auth import token_auth, token_permission_required
from app.scodoc.sco_bulletins import formsemestre_bulletinetud_dict
from app.scodoc.sco_bulletins_json import make_json_formsemestre_bulletinetud
2022-03-04 17:16:08 +01:00
from app.scodoc.sco_permissions import Permission
from app.scodoc.sco_pvjury import formsemestre_pvjury
from app.scodoc.sco_recapcomplet import formsemestre_recapcomplet
@bp.route("/formations/formsemestre/<int:formsemestre_id>", methods=["GET"])
2022-04-14 14:56:36 +02:00
@token_auth.login_required
@token_permission_required(Permission.APIView)
def formsemestre(formsemestre_id: int):
"""
Retourne l'information sur le formsemestre correspondant au formsemestre_id
formsemestre_id : l'id d'un formsemestre
"""
# Récupération de tous les formsemestres
list_formsemetre = models.FormSemestre.query.filter_by(id=formsemestre_id)
# Mise en forme des données
data = list_formsemetre[0].to_dict()
return jsonify(data)
@bp.route(
"/formsemestre/<int:formsemestre_id>/departements/<string:dept>/etudiant/etudid/<int:etudid>/bulletin",
methods=["GET"],
)
@bp.route(
"/formsemestre/<int:formsemestre_id>/departements/<string:dept>/etudiant/nip/<int:nip>/bulletin",
methods=["GET"],
)
@bp.route(
"/formsemestre/<int:formsemestre_id>/departements/<string:dept>/etudiant/ine/<int:ine>/bulletin",
methods=["GET"],
)
2022-04-14 14:56:36 +02:00
@token_auth.login_required
@token_permission_required(Permission.APIView)
def etudiant_bulletin(formsemestre_id, dept, format="json", etudid: int = None, nip: int = None, ine: int = None, ):#*args, size
"""
Retourne le bulletin de note d'un étudiant
formsemestre_id : l'id d'un formsemestre
etudid : l'etudid d'un étudiant
nip : le code nip d'un étudiant
ine : le code ine d'un étudiant
"""
# Fonction utilisée : app.scodoc.sco_bulletins.formsemestre_billetinetud_dict()
# make_json_formsemestre_bulletinetud
app.set_sco_dept(dept)
data = []
if etudid is None:
if nip is None: # si ine
etu = models.Identite.query.filter_by(code_ine=str(ine)).first()
# data = formsemestre_bulletinetud_dict(formsemestre_id, etu.id)
data = make_json_formsemestre_bulletinetud(formsemestre_id, etu.id)
return data
else: # si nip
etu = models.Identite.query.filter_by(code_nip=str(nip)).first()
# data = formsemestre_bulletinetud_dict(formsemestre_id, etu.id)
data = make_json_formsemestre_bulletinetud(formsemestre_id, etu.id)
return data
else: # si etudid
# data = formsemestre_bulletinetud_dict(formsemestre_id, etudid)
data = make_json_formsemestre_bulletinetud(formsemestre_id, etudid)
# return jsonify(data)
return data
# if args[0] == "short":
# data = formsemestre_bulletinetud_dict(formsemestre_id, etudid, version=args[0])
# elif args[0] == "selectevals":
# data = formsemestre_bulletinetud_dict(formsemestre_id, etudid, version=args[0])
# elif args[0] == "long":
# data = formsemestre_bulletinetud_dict(formsemestre_id, etudid)
# else:
# return error_response(409, message="La requête ne peut être traitée en létat actuel")
#
# return jsonify(data)
@bp.route("/formsemestre/<int:formsemestre_id>/bulletins", methods=["GET"])
2022-04-14 14:56:36 +02:00
@token_auth.login_required
@token_permission_required(Permission.APIView)
def bulletins(formsemestre_id: int):
"""
Retourne les bulletins d'un formsemestre donné
formsemestre_id : l'id d'un formesemestre
"""
# Fonction utilisée : app.scodoc.sco_recapcomplet.formsemestre_recapcomplet()
try:
# Utilisation de la fonction formsemestre_recapcomplet
data = formsemestre_recapcomplet(formsemestre_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("/formsemestre/<int:formsemestre_id>/jury", methods=["GET"])
2022-04-14 14:56:36 +02:00
@token_auth.login_required
@token_permission_required(Permission.APIView)
def jury(formsemestre_id: int):
"""
Retourne le récapitulatif des décisions jury
formsemestre_id : l'id d'un formsemestre
"""
# Fonction utilisée : app.scodoc.sco_pvjury.formsemestre_pvjury()
try:
# Utilisation de la fonction formsemestre_pvjury
data = formsemestre_pvjury(formsemestre_id)
except ValueError:
return error_response(409, message="La requête ne peut être traitée en létat actuel")
return jsonify(data)