UniSquat_Python/main_gui.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

99 lines
3.8 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 3 08:47:47 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 graphique Qt ###
# Modules :
import sys
import PyQt5 as qt
import rooms_get as ro
import datetime
import date_tools
favorites = ["C"+str(i)+" MATH" for i in range(1,10)]+["C42-CMI"] # TODO : à enlever
links = []
def main() :
app = qt.QtWidgets.QApplication(sys.argv)
windows = qt.QtWidgets.QWidget()
windows.resize(500,500)
windows.move(100,100)
layout = qt.QtWidgets.QVBoxLayout()
date = datetime.datetime.today()
available_rooms = ro.getrooms(date,links=links)
label1 = qt.QtWidgets.QLabel()
label1.setText("Maintenant :")
label2 = qt.QtWidgets.QLabel()
label2.setText("Prochainement :")
listwidget1 = qt.QtWidgets.QListWidget()
listwidget2 = qt.QtWidgets.QListWidget()
# Salles libres à la date indiquée :
for room in available_rooms.values() :
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"
if room["end"].hour == 23 and room["end"].minute == 59 :
listwidget1.addItem(room["name"])
else :
listwidget1.addItem(room["name"] + "\nOccupée à : " + str(room["end"].hour + 1) + ":" + str(room["end"].minute) + " (dans " + remain_time_str + ")") # TODO : Obligé d'ajouter 1h (problème de fuseau horaire ?)
# Salles libres prochainement :
for room in available_rooms.values() :
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"
if room["end"].hour == 23 and room["end"].minute == 59 :
listwidget2.addItem(room["name"] + "\nLibre à " + str(room["start"].hour + 1) + ":" + str(room["start"].minute) + " (dans " + remain_time_str + ")") # TODO : Obligé d'ajouter 1h (problème de fuseau horaire ?)
else :
listwidget2.addItem(room["name"] + "\nLibre de " + str(room["start"].hour + 1) + ":" + str(room["start"].minute) + " à " + str(room["end"].hour + 1) + ":" + str(room["end"].minute) + " (dans " + remain_time_str + ")") # TODO : Obligé d'ajouter 1h (problème de fuseau horaire ?)
layout.addWidget(label1)
layout.addWidget(listwidget1)
layout.addWidget(label2)
layout.addWidget(listwidget2)
windows.setLayout(layout)
windows.show()
sys.exit(app.exec_())
if __name__=="__main__":
main()