From 4e49eb5bd630edb203bf1d1053f575abc9a3095c Mon Sep 17 00:00:00 2001
From: antux18
Date: Sat, 18 Jun 2022 13:12:43 +0200
Subject: [PATCH] =?UTF-8?q?La=20date=20choisie=20est=20maintenant=20conser?=
=?UTF-8?q?v=C3=A9e=20lorsqu'on=20enregistre=20ou=20supprime=20des=20favor?=
=?UTF-8?q?is,=20de=20m=C3=AAme=20pour=20les=20favoris,=20lorsqu'on=20chan?=
=?UTF-8?q?ge=20de=20date.=20Correction=20diverses=20sur=20la=20r=C3=A9dac?=
=?UTF-8?q?tion=20des=20pages=20et=20du=20README.=20Ajout=20des=20fonction?=
=?UTF-8?q?nalit=C3=A9s=20=C3=A0=20la=20page=20d'accueil.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 8 ++---
app.py | 71 +++++++++++++++++++++++---------------
templates/date-select.html | 3 +-
templates/dept-select.html | 2 +-
templates/free-rooms.html | 17 +++++----
templates/index.html | 24 ++++++++++---
templates/stats.html | 10 +++---
7 files changed, 85 insertions(+), 50 deletions(-)
diff --git a/README.md b/README.md
index 5fd66a6..7e52379 100644
--- a/README.md
+++ b/README.md
@@ -9,13 +9,13 @@ Cette application dispose d'une interface Web fonctionnant avec Flask. Une versi
- đ Visualiser les salles libres de plusieurs dĂ©partements en mĂȘme temps (par exemple : l'UFR de Math-Info et l'EOST).
- ⰠConnaßtre la période de disponibilité d'une salle.
-- đ Les salles prochainement libres sont Ă©galement affichĂ©es, avec l'heure de dĂ©but de disponibilitĂ©.
+- đ Les salles prochainement libres sont Ă©galement affichĂ©es, avec leur prochaine disponibilitĂ©.
- â Marquer des salles comme favorites, pour les afficher en haut de la page.
- * Les favoris sont stockés dans l'URL de la page. Cela permet de le partager simplement, puisqu'il suffit de partager l'URL
+ * Les favoris sont stockés dans l'URL de la page. Cela permet de les partager ou de les enregistrer simplement, puisqu'il suffit de partager l'URL ou de l'ajouter aux marque-pages.
* đ
Rechercher les salles libres à une date précise.
- đȘ¶ Application lĂ©gĂšre pour l'utilisateur :
- * Pas de JavaScript, tout les calculs sont fait coté serveur
- * Pas de *Local Storage*, *Cookies* ou autres *bibliothĂšques CSS*
+ * Pas de JavaScript, tous les calculs sont fait coté serveur
+ * Pas de *Local Storage*, *cookies* ou autres *bibliothĂšques CSS*
## DĂ©pendances
diff --git a/app.py b/app.py
index b70364a..4c10ec2 100644
--- a/app.py
+++ b/app.py
@@ -128,29 +128,27 @@ def free_rooms() :
flask.render_template
"""
# Récupération des ID des départements depuis le formulaire :
- dident_list = request.args.getlist("dept")
- if len(dident_list)>MAX_DEPT:
+ dident_list = list(request.args.getlist("dept"))
+ if len(dident_list) > MAX_DEPT :
return render_template("error.html", error="Trop de départements sélectionnés ! Vous pouvez en sélectionner "+str(MAX_DEPT)+" au maximum.")
- if len(dident_list)==0:
+ if len(dident_list) == 0 :
return render_template("error.html", error="Il faut choisir au moins un département !")
# Récupération de l'éventuelle date personnalisée (depuis la page de sélection de date) :
- date_uf = request.args.get("date")
- if date_uf == None :
+ date_uf = str(request.args.get("date"))
+ date_uf_sav = date_uf
+ if date_uf == "None" :
date_uf = [""]
else :
date_uf = date_uf.split("-")
- time_uf = request.args.get("time")
- if time_uf == None :
+ time_uf = str(request.args.get("time"))
+ time_uf_sav = time_uf
+ if time_uf == "None" :
time_uf = [""]
else :
time_uf = time_uf.split(":")
- # Récupére les IDs des salles favorites
- favs_ids = request.args.getlist("favs")
- if favs_ids == None:
- favs_ids = []
date = dti.datetime.now()
@@ -163,15 +161,21 @@ def free_rooms() :
if time_uf != [""] :
date = date.replace(hour = int(time_uf[0]), minute = int(time_uf[1]))
date_str += ", Ă " + time_uf[0] + ":" + time_uf[1]
+
+
+ # Récupération des IDs des salles favorites :
+ favs_ids = list(request.args.getlist("favs"))
+ if favs_ids == [None] :
+ favs_ids = []
- # Récupération de la liste des départements :
+ # Récupération de la liste des départements existants :
dept_filen = "data/dept_list.txt"
dept_list = ro.get_depts(dept_filen)
- # Vérifie qu'il n'y a pas de mauvais départements demandés :
- for d in dident_list:
- try:
+ # Vérification qu'il n'y a pas de mauvais départements demandés :
+ for d in dident_list :
+ try :
int(d)
except:
return render_template("error.html", error="Identifiant de département invalide !", **GLOBAL_CONTEXT)
@@ -194,9 +198,10 @@ def free_rooms() :
ignore_list = ["salle non définie", "salle en Distanciel"]
free_rooms = ro.getrooms(date, depts, ignore_list)
-
+
+ # Création d'un dictionnaire avec les infos des salles :
frooms_disp = dict() # Mise en forme des infos pour la page Web
-
+
i = 0
for r in free_rooms :
remain_time_str = ""
@@ -209,7 +214,8 @@ def free_rooms() :
"end":date_tools.hour_disp(r.end),
"rtime":remain_time_str}
-
+
+ # Ajout des arguments favoris, et départements à l'URL :
change_date_str = "?"
i = 0
if favs_ids != [] :
@@ -219,7 +225,7 @@ def free_rooms() :
if i < len(favs_ids) - 1:
change_date_str += "&"
i+=1
- change_date_str += "&"
+ change_date_str += "&"
for v in dident_list:
change_date_str += "dept="+str(v)
if i0,"nofavslink":nofavslink}
+ "date_uf_sav":date_uf_sav, "time_uf_sav":time_uf_sav, "change_date_str":change_date_str,
+ "favs":len(favs_ids)>0,"nofavslink":nofavslink}
- # Crée un log de la date et des départements demandés ( pour des futures statistiques )
+ # Création d'un log de la date et des départements demandés (pour les stats du site) :
log = {}
log["timestamp"] = dti.datetime.now().timestamp()
log["depts"] = depts
logs.append(log)
- # Vide les logs vieux de MAX_LOG_DAYS
- while (log["timestamp"]-logs[0]["timestamp"])/(60*60*24)>MAX_LOG_DAYS:
+
+ # Suppression des logs vieux de MAX_LOG_DAYS :
+ while (log["timestamp"] - logs[0]["timestamp"]) / (60*60*24) > MAX_LOG_DAYS :
del(logs[0])
url_for("static", filename="style.css")
@@ -274,8 +289,8 @@ def date_select() :
-------
flask.render_template
"""
- dident_list = request.args.getlist("dept")
- favs_ids = request.args.getlist("favs")
+ dident_list = list(request.args.getlist("dept"))
+ favs_ids = list(request.args.getlist("favs"))
context = {"dident_list":dident_list, "favs_ids":favs_ids}
diff --git a/templates/date-select.html b/templates/date-select.html
index 432da1f..07ae635 100644
--- a/templates/date-select.html
+++ b/templates/date-select.html
@@ -10,7 +10,7 @@
{% include "base.html" %}
- Comment ça marche ?
- L'Université de Strasbourg met à disposition l'emploi du temps des salles en ligne, et permet de télécharger ces emplois du temps sous la forme d'un fichier ICalendar. UniSquat télécharge les fichiers en lien avec le(s) département(s) sélectionné(s), les met en commun, et les analyse pour trouver des salles libres et les afficher.
- Et c'est développé par qui ?
- {{CREDITSNAME}}, une organisation de deux Ă©tudiants. Le code source est disponible ici :)
+ Fonctionnalités
+
+ - đ Visualiser les salles libres de plusieurs dĂ©partements en mĂȘme temps (par exemple : l'UFR de Math-Info et l'EOST).
+ - ⰠConnaßtre la période de disponibilité d'une salle.
+ - đ Les salles prochainement libres sont Ă©galement affichĂ©es, avec leur prochaine disponibilitĂ©.
+ - â Marquer des salles comme favorites, pour les afficher en haut de la page.
+
+ - Les favoris sont stockés dans l'URL de la page. Cela permet de les partager ou de les enregistrer simplement, puisqu'il suffit de partager l'URL ou de l'ajouter aux marque-pages.
+
+ - đ
Rechercher les salles libres Ă une date choisie.
+ - đȘ¶ Application lĂ©gĂšre pour l'utilisateur :
+
+ - Pas de JavaScript, tous les calculs sont fait coté serveur.
+ - Pas de Local Storage, cookies ou autres bibliothĂšques CSS.
+
+
+ Comment ça marche ?
+ L'Université de Strasbourg met à disposition l'emploi du temps des salles en ligne, et permet de télécharger ces emplois du temps sous la forme d'un fichier ICalendar. UniSquat télécharge les fichiers en lien avec le(s) département(s) sélectionné(s), les met en commun, et les analyse pour trouver des salles libres et les afficher.
+ Et c'est développé par qui ?
+ {{CREDITSNAME}}, une organisation de deux Ă©tudiants. Le code source est disponible ici :)
{% include "footer.html" %}
diff --git a/templates/stats.html b/templates/stats.html
index 9d26207..1bc2f90 100644
--- a/templates/stats.html
+++ b/templates/stats.html
@@ -9,15 +9,15 @@
{% include "base.html" %}
- Statistiques d'utilisation de l'instance
- Ces {{MAX_LOG_DAYS}} derniers jours, cette instance a recherché des salles {{nbping}} fois !
+ Statistiques d'utilisation du site
+ Ces {{MAX_LOG_DAYS}} derniers jours, des salles ont été recherchées {{nbping}} fois.
{% if nbping>PING_WARN %}
- â L'instance commence a ĂȘtre surchargĂ©e, considĂ©rez le fait d'en crĂ©er une vous mĂȘme
+ â Ce site commence a ĂȘtre surchargĂ© ! N'hĂ©sitez pas Ă hĂ©berger votre propre instance d'UniSquat :) En savoir plus
{% endif %}
- Départements les plus demandés
+ Départements les plus recherchés
{% for dept in depts: %}
- - {{ dept[0] }} (demandé {{dept[1]}} fois)
+ - {{ dept[0] }} (recherché {{dept[1]}} fois)
{% endfor %}