Amélioration de la détermination des périodes de dispo des salles.

This commit is contained in:
Antoine Waehren 2022-02-27 00:30:59 +01:00
parent 7a84a354ce
commit 8c06c3abfa
1 changed files with 21 additions and 10 deletions

View File

@ -179,6 +179,7 @@ def getrooms(datet, links=[]) :
total_rooms[roomname] = room(roomname, start, end, is_free)
# Ajout des infos supplémentaires sur les salles (heures de début-fin de dispo, indicateur de dispo), s'il y en a :
# Première boucle, pour déterminer les salles occupées :
for cal in cals : # Bâtiments
for comp in cal.walk() : # Événements
if comp.name == "VEVENT" :
@ -187,27 +188,37 @@ def getrooms(datet, links=[]) :
dateend = comp.decoded("dtend")
roomname = str(comp.get("location"))
# Soit l'événement se passe maintenant (salle occupée maintenant) :
# L'événement se passe maintenant (salle occupée maintenant) :
if datestart.timestamp() <= datet.timestamp() and dateend.timestamp() > datet.timestamp() :
start = dateend # L'heure de début de la prochaine période de disponibilité est la fin de l'événement
if roomname not in total_rooms.keys() :
end = datet.replace(hour = 23, minute = 59, second = 59) # Par défaut, l'heure de fin de la prochaine période disponibilité est aujourd'hui à 23:59
else :
end = total_rooms[roomname]["end"]
end = datet.replace(hour = 23, minute = 59, second = 59) # Par défaut, l'heure de fin de la prochaine période disponibilité est aujourd'hui à 23:59
is_free = False
total_rooms[roomname] = room(roomname, start, end, is_free)
# Deuxième boucle, pour ajouter les heures de dispos des salles :
for cal in cals : # Bâtiments
for comp in cal.walk() : # Événements
if comp.name == "VEVENT" :
# Récupération des infos :
datestart = comp.decoded("dtstart")
dateend = comp.decoded("dtend")
roomname = str(comp.get("location"))
# Soit l'événement se passe prochainement (salle occupée à l'occasion de cet événement) :
elif datestart.timestamp() > datet.timestamp() :
# L'événement se passe prochainement (salle occupée à l'occasion de cet événement) :
if datestart.timestamp() > datet.timestamp() :
if roomname not in total_rooms.keys() :
# On suppose d'abord que la salle est libre maintenant :
# La salle est forcément libre, car les salles occupées sont déjà toutes enregistrées :
start = datet.replace(hour = 0, minute = 0, second=0) # Par défaut, l'heure de début de disponibilité est aujourd'hui à 00:00
end = datestart # L'heure de fin de disponibilité est le début de l'événement
is_free = True
total_rooms[roomname] = room(roomname, start, end, is_free)
elif datestart.timestamp() < total_rooms[roomname]["end"].timestamp() :
start = total_rooms[roomname]["start"]
end = datestart
if datestart.timestamp() == total_rooms[roomname]["start"] :
start = dateend
end = total_rooms[roomname]["end"]
else :
start = total_rooms[roomname]["start"]
end = datestart
is_free = total_rooms[roomname]["is_free"]
total_rooms[roomname] = room(roomname, start, end, is_free)