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" %}
-

Choisisssez une date

+

Choisisssez une date :

@@ -20,6 +20,7 @@
+ {% for d in dident_list : %} {% endfor %} diff --git a/templates/dept-select.html b/templates/dept-select.html index 19ad9f6..37ababb 100644 --- a/templates/dept-select.html +++ b/templates/dept-select.html @@ -9,7 +9,7 @@ {% include "base.html" %}
-

Sélectionnez des départements dans la liste

+

Sélectionnez des départements dans la liste :

diff --git a/templates/free-rooms.html b/templates/free-rooms.html index 3d3f71b..5ac1eae 100644 --- a/templates/free-rooms.html +++ b/templates/free-rooms.html @@ -21,7 +21,7 @@ {% endif %}
{% if favs: %}
@@ -29,9 +29,9 @@
{% endif %} -
- -
+
+ +
{% if favs: %}
{% if favs_free_rooms|length>0: %} @@ -143,9 +143,12 @@ {% endif %}
- {% for d in dident_list : %} - - {% endfor %} + + {% for d in dident_list : %} + + {% endfor %} + +
diff --git a/templates/index.html b/templates/index.html index b09795f..342fa19 100644 --- a/templates/index.html +++ b/templates/index.html @@ -18,10 +18,26 @@ UniSquat est une application qui permet de trouver des salles libres à l'Université de Strasbourg. Sélectionnez des départements de l'université, et les salles de ces départements qui sont libres, et prochainement libres, s'afficheront.
Cela vous permet par exemple, si vous ĂȘtes Ă©lĂšve, de chercher un endroit pour travailler, ou si vous ĂȘtes enseignant, de trouver une salle libre en cas de changement d'emploi du temps.

-

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

+ +

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