diff --git a/app.py b/app.py index 6bab900..a53a69a 100644 --- a/app.py +++ b/app.py @@ -87,23 +87,36 @@ def free_rooms() : # 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 - hdelay = 1 #TODO : décalage horaire (pb de fuseau ?) - - if time.localtime().tm_isdst != 0 : - hdelay = 2 - ignore_list = ["salle non définie", "salle en Distanciel"] - date = dti.datetime(2022, 5, 5, 10, 30) #TODO : à changer + date = dti.datetime.now() - available_rooms = ro.getrooms(date, depts, ignore_list) + free_rooms = ro.getrooms(date, depts, ignore_list) - context = {"available_rooms":available_rooms, "hdelay":hdelay} + 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) \ No newline at end of file diff --git a/date_tools.py b/date_tools.py index 629f3d0..c56528b 100644 --- a/date_tools.py +++ b/date_tools.py @@ -65,6 +65,7 @@ def bissextile(year) : return (year % 4 == 0 and year % 100 != 0) or year % 400 == 0 + def month_days(month, year) : """ Renvoie le nombre de jours dans le mois 'month'. @@ -125,3 +126,58 @@ def date_input() : minute = int(input("Entrer les minutes.\n> ")) return datetime.datetime(year, month, day, hour, minute) + + +def hour_disp(time) : + """ + Convertit une heure au format datetime + en une chaîne de caractères. + + Parameters + ---------- + time : datetime.datetime + Heure au format datetime. + + Returns + ------- + time_str : str + Heure en chaîne de caractères. + """ + + time_str = str(time.hour) + ":" + + if time.minute < 10 : # Ajout du zéro au début du nombre de minutes + time_str += "0" + str(time.minute) + else : + time_str += str(time.minute) + + return time_str + + +def remain_time(date, rdate) : + """ + Détermine le temps restant avant + la fin/le début de disponibilité d'une salle. + + Parameters + ---------- + date : datetime.datetime + Date choisie au format datetime. + rdate : datetime.datetime + Date de la salle au format datetime. + + Returns + ------- + remain_time_str : str + Temps restant. + """ + + deltasec = rdate.timestamp() - date.timestamp() + remain_time_str = str(int(deltasec / 60 + 0.5)) + " minutes" + if deltasec / 60 + 0.5 >= 60 : # Conversion en heures:minutes si les minutes dépassent 60 + deltasec = minutes_convert(deltasec / 60 + 0.5) + remain_time_str = str(deltasec[0]) + " heures" + if deltasec[1] > 0 : + remain_time_str += " " + str(deltasec[1]) + " minutes" + + return remain_time_str \ No newline at end of file diff --git a/main_cli.py b/main_cli.py index 8ab9623..25c6b1a 100644 --- a/main_cli.py +++ b/main_cli.py @@ -95,13 +95,7 @@ def main() : for room in available_rooms : if room.name in favorites or len(favorites) == 0 : # TODO : Changer le comportement de ce 'if' : il faudrait afficher toutes les salles, mais d'abord les favorites if room.is_free : - deltasec = room.end.timestamp() - date.timestamp() - remain_time_str = str(int(deltasec / 60 + 0.5)) + " minutes" - if deltasec / 60 + 0.5 >= 60 : # Conversion en heures:minutes si les minutes dépassent 60 - deltasec = date_tools.minutes_convert(deltasec / 60 + 0.5) - remain_time_str = str(deltasec[0]) + " heures" - if deltasec[1] > 0 : - remain_time_str += " " + str(deltasec[1]) + " minutes" + remain_time_str = date_tools.remain_time(date, room.end) if room.end.hour == 23 and room.end.minute == 59 and room.end.second == 59 : print(" - " + room.name) @@ -113,13 +107,7 @@ def main() : for room in available_rooms : if room.name in favorites or len(favorites) == 0 : if not room.is_free : - deltasec = room.start.timestamp() - date.timestamp() - remain_time_str = str(int(deltasec / 60 + 0.5)) + " minutes" - if deltasec / 60 + 0.5 >= 60 : # Conversion en heures:minutes si les minutes dépassent 60 - deltasec = date_tools.minutes_convert(deltasec / 60 + 0.5) - remain_time_str = str(deltasec[0]) + " heures" - if deltasec[1] > 0 : - remain_time_str += " " + str(deltasec[1]) + " minutes" + remain_time_str = date_tools.remain_time(date, room.start) if room.end.hour == 23 and room.end.minute == 59 and room.end.second == 59 : print(" - " + room.name + " | Libre à " + str(room.start.hour) + ":" + str(room.start.minute) + " (dans " + remain_time_str + ")") # TODO : Obligé d'ajouter 1h (problème de fuseau horaire ?) diff --git a/prototypes/interface/Schéma interface (Antoine).odg b/prototypes/interface/Schéma interface (Antoine).odg deleted file mode 100644 index 886202e..0000000 Binary files a/prototypes/interface/Schéma interface (Antoine).odg and /dev/null differ diff --git a/prototypes/interface/Schéma interface (Antoine).pdf b/prototypes/interface/Schéma interface (Antoine).pdf deleted file mode 100644 index 854f18a..0000000 Binary files a/prototypes/interface/Schéma interface (Antoine).pdf and /dev/null differ diff --git a/prototypes/interface/Schéma interface.odg b/prototypes/interface/Schéma interface.odg new file mode 100644 index 0000000..e6da34e Binary files /dev/null and b/prototypes/interface/Schéma interface.odg differ diff --git a/prototypes/interface/Schéma interface.pdf b/prototypes/interface/Schéma interface.pdf new file mode 100644 index 0000000..de058ab Binary files /dev/null and b/prototypes/interface/Schéma interface.pdf differ diff --git a/templates/base.html b/templates/base.html index 3abdbad..ca9ab05 100644 --- a/templates/base.html +++ b/templates/base.html @@ -26,8 +26,8 @@ } main { - /*display: flex; - flex-direction: row;*/ + display: flex; + flex-direction: column; line-height: 1.7; } diff --git a/templates/free-rooms.html b/templates/free-rooms.html index ff70826..fe59176 100644 --- a/templates/free-rooms.html +++ b/templates/free-rooms.html @@ -9,14 +9,18 @@ {% include "base.html" %}
- Les salles suivantes sont disponibles actuellement : + Départements sélectionnés : + {{ depts_str }} +
+
+

Disponibles maintenant


- Les salles suivantes seront disponibles prochainement : +

Disponibles prochainement