antux18
8306e33db0
Amélioration de l'affichage ("1 heure" au lieu de "1 heures", par exemple). Amélioration du README. Diverses corrections des commentaires.
99 lines
3.8 KiB
Python
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() |