autosco/app/views/views.py

46 lines
1.8 KiB
Python

"""AutoSco / views
"""
from flask import make_response, render_template
from app import log
from app.utils import utils as scu
from app.views import bp
from scodoc import api
@bp.route("/")
def index():
annee_scolaire = scu.annee_scolaire()
sems = api.get(f"/formsemestres/with_description/query?annee_scolaire={annee_scolaire}")
# nb: l'utilisation de l'API départementale permet de n'avoir
# que les semestres du département configuré.
# Ne retient que les semestres ayant une description et étant visibles
sems = [ s for s in sems if s["autosco"] and s["autosco"]["visible"] ]
return render_template("index.j2", sems=sems)
@bp.route("/formdescription/<int:formsemestre_id>")
def formsemestre_description(formsemestre_id:int):
"""Page description d'un formsemestre (=d'un cours)"""
sem = api.get(f"/formsemestre/{formsemestre_id}/with_description")
return render_template("formsemestre_description.j2", sem=sem)
@bp.route("/formsemestre/<int:formsemestre_id>/description/photo_ens")
def formsemestre_get_photo_ens(formsemestre_id: int):
"""Photo du responsable, ou illustration du formsemestre. Peut être vide."""
# demande à ScoDoc et renvoie
# on pourrait cacher
response = api.get(f"/formsemestre/{formsemestre_id}/description/photo_ens")
content_type = response.headers["Content-Type"]
if not content_type.startswith("image"):
log(f"formsemestre_get_photo_ens({formsemestre_id}): not an image")
return make_response("", 204) # 204 No Content status
r = make_response(response.content)
r.headers["Content-Type"] = content_type
return r
@bp.route("/formsemestre/<int:formsemestre_id>/inscription")
def formsemestre_inscription(formsemestre_id: int):
"""Formulaire d'auto-inscription étudiant"""
return "Formulaire d'auto-inscription étudiant" # TODO