123 lines
3.9 KiB
Python
123 lines
3.9 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Created on Thu Feb 24 17:14:05 2022
|
|
|
|
@author: antoine
|
|
"""
|
|
|
|
################
|
|
### UniSquat ###
|
|
################
|
|
|
|
"""
|
|
Indique toutes les salles disponibles dans les différents départements de
|
|
l'Université de Strasbourg.
|
|
"""
|
|
|
|
|
|
### Fichier de l'interface en ligne de commande ###
|
|
|
|
|
|
# Modules :
|
|
import datetime
|
|
import time
|
|
|
|
# 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()
|