UniSquat_Python/main_cli.py
antux18 8306e33db0 Correction d'un bug qui faisait planter l'app lorsqu'on choisissait une date en décembre.
Amélioration de l'affichage ("1 heure" au lieu de "1 heures", par exemple).
Amélioration du README.
Diverses corrections des commentaires.
2022-06-17 19:12:29 +02:00

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