################ ### 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, "dident_list":dident_list} url_for("static", filename="style.css") return render_template("free-rooms.html", **context) @app.route("/app/date-select") def date_select() : return render_template("date-select.html")