1 #!/usr/bin/env python 2 3 from bisect import bisect_left, insort_left 4 5 # Time management. 6 7 def insert_period(freebusy, period): 8 insort_left(freebusy, period) 9 10 def remove_period(freebusy, uid): 11 i = 0 12 while i < len(freebusy): 13 t = freebusy[i] 14 if len(t) >= 3 and t[2] == uid: 15 del freebusy[i] 16 else: 17 i += 1 18 19 def period_overlaps(freebusy, period): 20 dtstart, dtend = period[:2] 21 i = bisect_left(freebusy, (dtstart, dtend, None)) 22 return ( 23 i < len(freebusy) and (dtend is None or freebusy[i][0] < dtend) 24 or 25 i > 0 and freebusy[i - 1][1] > dtstart 26 ) 27 28 # vim: tabstop=4 expandtab shiftwidth=4