UniSquat_Python/app.py

122 lines
2.9 KiB
Python

################
### UniSquat ###
################
"""
Indique toutes les salles disponibles dans les différents départements de
l'Université de Strasbourg.
"""
### Fichier de l'interface Web Flask ###
# Modules :
import datetime as dti
import time
from flask import Flask
from flask import render_template
from flask import url_for
from flask import request
# Fichiers locaux :
import date_tools
import rooms_get as ro
# import definitions as lib # TODO : À quoi ça sert ?
app = Flask(__name__)
@app.route("/")
def home() :
return render_template("index.html")
@app.route("/app")
def select_dept() :
"""
Permet de sélectionner un ou plusieurs départements dans lesquels
chercher des salles libres.
Parameters
----------
None.
Returns
-------
flask.render_template
"""
dept_filen = "data/dept_list.txt"
dept_list = ro.get_depts(dept_filen)
content = {"dept_list":dept_list}
url_for("static", filename="style.css")
return render_template("dept-select.html", **content)
@app.route("/app/free-rooms", methods=["POST", "GET"])
def free_rooms() :
"""
Affiche les salles libres dans les départements sélectionnés
dans la page précédente.
Parameters
----------
None.
Returns
-------
flask.render_template
"""
# Récupération des ID des départements depuis le formulaire :
if request.method == "POST" :
dident_list = request.form["dept"]
else :
dident_list = request.args.getlist("dept")
# Récupération de la liste des départements :
dept_filen = "data/dept_list.txt"
dept_list = ro.get_depts(dept_filen)
# Récupération des départements choisis à partir des données du formulaire :
i = 0
depts = list()
depts_str = "" # Noms des départements pour l'affichage
for d in dept_list :
if i < len(dident_list) and d.ident == int(dident_list[i]) :
depts.append(d)
depts_str += d.name
if (i + 1) < len(dident_list) :
depts_str += ", "
i += 1
ignore_list = ["salle non définie", "salle en Distanciel"]
date = dti.datetime.now()
free_rooms = ro.getrooms(date, depts, ignore_list)
frooms_disp = dict() # Mise en forme des infos pour la page Web
i = 0
for r in free_rooms :
remain_time_str = ""
if r.is_free :
remain_time_str = date_tools.remain_time(date, r.end)
else :
remain_time_str = date_tools.remain_time(date, r.start)
frooms_disp[r.name] = {"start":date_tools.hour_disp(r.start),
"end":date_tools.hour_disp(r.end),
"rtime":remain_time_str}
context = {"free_rooms":free_rooms, "frooms_disp":frooms_disp, "depts_str":depts_str}
url_for("static", filename="style.css")
return render_template("free-rooms.html", **context)