antux18
8306e33db0
Amélioration de l'affichage ("1 heure" au lieu de "1 heures", par exemple). Amélioration du README. Diverses corrections des commentaires.
122 lines
3.9 KiB
Python
122 lines
3.9 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Created on Thu Feb 24 17:14:05 2022
|
|
|
|
@author: antoine
|
|
"""
|
|
|
|
################
|
|
### UniSquat ###
|
|
################
|
|
|
|
"""
|
|
Une application pour afficher les salles libres dans les différents
|
|
départements de l'Université de Strasbourg.
|
|
"""
|
|
|
|
|
|
### Fichier de l'interface en ligne de commande ###
|
|
|
|
|
|
# Modules :
|
|
import datetime
|
|
|
|
# Fichiers locaux :
|
|
import date_tools
|
|
import rooms_get as ro
|
|
# import definitions as lib # TODO : À quoi ça sert ?
|
|
|
|
# Globales
|
|
#favorites = ["C" + str(i) + " MATH" for i in range(1,12)] + ["C42-CMI"] # TODO : Ne sera pas conservé
|
|
favorites = []
|
|
links = [] # Liens vers les calendriers des salles des différents bâtiments de l'université
|
|
|
|
|
|
# Fonctions :
|
|
|
|
def main() :
|
|
"""
|
|
Fonction principale.
|
|
|
|
Returns
|
|
-------
|
|
None.
|
|
|
|
"""
|
|
|
|
print("~~~ UniSquat ~~~\n")
|
|
|
|
#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"]
|
|
|
|
dept_filen = "data/dept_list.txt"
|
|
|
|
dept_list = ro.get_depts(dept_filen)
|
|
|
|
print("Les départements suivants sont disponibles :\n")
|
|
|
|
i = 0
|
|
|
|
for d in dept_list :
|
|
print(" - " + d.name + "(" + str(i) + ")")
|
|
i += 1
|
|
|
|
choice = -1
|
|
|
|
# Choix du département :
|
|
while choice not in range(len(dept_list)) :
|
|
choice = int(input("Entrez le numéro du département.\n> "))
|
|
|
|
dept = dept_list[choice] # TODO : proposer plusieurs départements
|
|
|
|
date_choice = -1
|
|
|
|
# Choix de la date :
|
|
while date_choice not in (0,1) :
|
|
date_choice = int(input("Souhaitez-vous afficher les salles disponibles maintenant (0), où à une date précise (1) ?\n> "))
|
|
|
|
if date_choice == 0 : # Heure système
|
|
date = datetime.datetime.today()
|
|
else : # Heure mannuelle
|
|
date = date_tools.date_input()
|
|
|
|
print("\nRecherche des salles disponibles, veuillez patienter...\n")
|
|
|
|
available_rooms = ro.getrooms(date, [dept], ignore_list)
|
|
|
|
# Salles libres à la date indiquée :
|
|
print("\nLes salles suivantes sont disponibles à " + str(date.hour) + ":" + str(date.minute) + ", le " + str(date.date()) + " :\n")
|
|
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 :
|
|
remain_time_str = date_tools.remain_time(date, room.end)
|
|
|
|
print(room.end)
|
|
|
|
if room.end.hour == 23 and room.end.minute == 59 and room.end.second == 59 :
|
|
print(" - " + room.name)
|
|
else :
|
|
print(" - " + room.name + " | Occupée à : " + str(room.end.hour) + ":" + str(room.end.minute) + " (dans " + remain_time_str + ")") # TODO : Obligé d'ajouter 1h (problème de fuseau horaire ?)
|
|
|
|
# Salles libres prochainement :
|
|
print("\nLes salles suivantes seront disponibles prochainement : \n")
|
|
for room in available_rooms :
|
|
if room.name in favorites or len(favorites) == 0 :
|
|
if not room.is_free :
|
|
remain_time_str = date_tools.remain_time(date, room.start)
|
|
|
|
print(room.end)
|
|
|
|
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 ?)
|
|
else :
|
|
print(" - " + room.name + " | Libre de " + str(room.start.hour) + ":" + str(room.start.minute) + " à " + str(room.end.hour) + ":" + str(room.end.minute) + " (dans " + remain_time_str + ")") # TODO : Obligé d'ajouter 1h (problème de fuseau horaire ?)
|
|
|
|
if __name__=="__main__":
|
|
main()
|