UniSquat_Python/main_cli.py

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()