def update_events(self, since_date, until_date): print 'Update events:', since_date, 'until', until_date # Timestamps since = int(mktime(since_date.timetuple())) until = int(mktime(until_date.timetuple())) # Clear old events key = (since, until) self.events[key] = [] # Get events from all calendars for calendar, feed_url in self.calendars: print 'Getting events from', calendar, '...' query = CalendarEventQuery() query.feed = feed_url query.start_min = since_date.strftime('%Y-%m-%d') query.start_max = until_date.strftime('%Y-%m-%d') feed = self.client.CalendarQuery(query) for event in feed.entry: event_id = event.id.text title = event.title.text print ' ', title for when in event.when: print ' ', when.start_time, 'to', when.end_time allday = False start, allday = self.parse_time(when.start_time) end, _ = self.parse_time(when.end_time) if (start >= since and start < until) or \ (start <= since and (end - 1) > since): e = Event(event_id, title, start, end, allday) self.events[key].append(e) else: print '!!! Outside range !!!' print '#Events:', len(self.events[key])
def update_months_events(self, probe_date, in_thread=False, months_back=12, months_ahead=12): if in_thread: prefix = ' <<<<THREAD>>>> ' else: prefix = ' ' print prefix, 'Update months events around:',\ probe_date.strftime('%B %Y'), '| months_back', months_back,\ '| months_ahead', months_ahead months = {} # init asked month events key = initial_month_key = get_month_key(probe_date) months[key] = MonthEvents(key, []) # init previous months events for i in range(0, months_back): key = months[key].get_prev_month_key() months[key] = MonthEvents(key, []) # date for google query start limit min_date = months[key].get_start_date() # init next months events key = initial_month_key for i in range(0, months_ahead): key = months[key].get_next_month_key() months[key] = MonthEvents(key, []) # date for google query end limit max_date = months[key].get_end_date() # Get events from all calendars for calendar_title, feed_url in self.calendars: print prefix, 'Getting events from', calendar_title, '...' query = CalendarEventQuery() query.feed = feed_url query.start_min = min_date.strftime('%Y-%m-%d') query.start_max = max_date.strftime('%Y-%m-%d') query.max_results = 2**31 - 1 feed = self.client.CalendarQuery(query) for event in feed.entry: event_id = event.id.text title = event.title.text if debug: print '%s Event: title=%s' % (prefix, repr(title)) for when in event.when: if debug: print '%s start_time=%s end_time=%s' % ( prefix, repr(when.start_time), repr(when.end_time)) allday = False start, allday = self.parse_time(when.start_time) end = self.parse_time(when.end_time)[0] e = Event(event_id, title, start, end, allday, calendar_title) for month in months.values(): month.add_event(e) # Replace old months events by new ones # TODO repair deletion if python doesn't do it for key, month in months.items(): month.updated() # print '!' # self.months[key].delete() # print '!' # del self.months[key] self.months[key] = month print prefix, '#Updated events since', \ (min_date + timedelta(days=10)).strftime('%B %Y'), \ 'until', (max_date - timedelta(days=10)).strftime('%B %Y')
def update_months_events(self, probe_date, in_thread=False, months_back=12, months_ahead=12): if in_thread: prefix = ' <<<<THREAD>>>> ' else: prefix = ' ' print prefix, 'Update months events around:',\ probe_date.strftime('%B %Y'), '| months_back', months_back,\ '| months_ahead', months_ahead months = {} # init asked month events key = initial_month_key = get_month_key(probe_date) months[key] = MonthEvents(key, []) # init previous months events for i in range(0, months_back): key = months[key].get_prev_month_key() months[key] = MonthEvents(key, []) # date for google query start limit min_date = months[key].get_start_date() # init next months events key = initial_month_key for i in range(0, months_ahead): key = months[key].get_next_month_key() months[key] = MonthEvents(key, []) # date for google query end limit max_date = months[key].get_end_date() # Get events from all calendars for calendar_title, feed_url in self.calendars: print prefix, 'Getting events from', calendar_title, '...' query = CalendarEventQuery() query.feed = feed_url query.start_min = min_date.strftime('%Y-%m-%d') query.start_max = max_date.strftime('%Y-%m-%d') query.max_results = 2**31-1 feed = self.client.CalendarQuery(query) for event in feed.entry: event_id = event.id.text title = event.title.text if debug: print '%s Event: title=%s' % ( prefix, repr(title) ) for when in event.when: if debug: print '%s start_time=%s end_time=%s' % ( prefix, repr(when.start_time), repr(when.end_time) ) allday = False start, allday = self.parse_time(when.start_time) end = self.parse_time(when.end_time)[0] e = Event(event_id, title, start, end, allday, calendar_title) for month in months.values(): month.add_event(e) # Replace old months events by new ones # TODO repair deletion if python doesn't do it for key, month in months.items(): month.updated() # print '!' # self.months[key].delete() # print '!' # del self.months[key] self.months[key] = month print prefix, '#Updated events since', \ (min_date + timedelta(days=10)).strftime('%B %Y'), \ 'until', (max_date - timedelta(days=10)).strftime('%B %Y')