1 #!/usr/bin/env python 2 3 from imiptools.data import get_utc_datetime, get_value, get_value_map, parse_object 4 from imiptools.dates import format_datetime 5 from imip_store import FileStore, FilePublisher 6 import sys 7 8 try: 9 user = sys.argv[1] 10 except IndexError: 11 print >>sys.stderr, "Need a user." 12 sys.exit(1) 13 14 s = FileStore() 15 p = FilePublisher() 16 17 events = set(s.get_events(user)) 18 cancelled = s.get_cancellations(user) 19 20 events.difference_update(cancelled) 21 22 objs = [] 23 for i in events: 24 print >>sys.stderr, i 25 objs.append(parse_object(s.get_event(user, i), "utf-8")) 26 27 fb = [] 28 for obj in objs: 29 if not obj: 30 continue 31 details, details_attr = obj.values()[0] 32 33 for attendee, attendee_attr in get_value_map(details, "ATTENDEE").items(): 34 if attendee == user: 35 if attendee_attr.get("PARTSTAT") != "DECLINED": 36 fb.append((format_datetime(get_utc_datetime(details, "DTSTART")), 37 format_datetime(get_utc_datetime(details, "DTEND")), 38 get_value(details, "UID"), 39 get_value(details, "TRANSP"))) 40 break 41 42 fb.sort() 43 44 s.set_freebusy(user, fb) 45 p.set_freebusy(user, fb) 46 47 # vim: tabstop=4 expandtab shiftwidth=4