Amélioration de la détermination des périodes de dispo des salles.
This commit is contained in:
parent
7a84a354ce
commit
8c06c3abfa
25
rooms_get.py
25
rooms_get.py
@ -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,25 +188,35 @@ 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"]
|
||||
is_free = False
|
||||
total_rooms[roomname] = room(roomname, start, end, is_free)
|
||||
|
||||
# Soit l'événement se passe prochainement (salle occupée à l'occasion de cet événement) :
|
||||
elif datestart.timestamp() > datet.timestamp() :
|
||||
# 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"))
|
||||
|
||||
# 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() :
|
||||
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"]
|
||||
|
Loading…
Reference in New Issue
Block a user