len(deleted)))
return added, deleted, changed
+def build_gcal_event_from_ex(event):
+ gevent={}
+ gevent["summary"]=event.subject
+ if event.is_all_day:
+ gevent["end"]={"date": str(event.end.astimezone(gcal_tz).date())}
+ gevent["start"]={"date": str(event.start.astimezone(gcal_tz).date())}
+ else:
+ gevent["end"]={"dateTime": event.end.isoformat(),
+ "timeZone": event.end.tzname()}
+ gevent["start"]={"dateTime": event.start.isoformat(),
+ "timeZone": event.start.tzname()}
+ if event.text_body.strip() != '':
+ gevent["description"] = event.text_body
+ if event.location is not None:
+ gevent["location"] = event.location
+ gevent["extendedProperties"]={"shared": {"ex_id": event.item_id}}
+ return gevent
+
def add_ex_to_gcal(ex_acct,
gcal_acct,gcal_tz,events,
added,
for ev_id in added:
event = get_ex_event_by_itemid(ex_acct.calendar,ev_id)
if not event.is_recurring:
- gevent={}
- gevent["summary"]=event.subject
- if event.is_all_day:
- gevent["end"]={"date": str(event.end.astimezone(gcal_tz).date())}
- gevent["start"]={"date": str(event.start.astimezone(gcal_tz).date())}
- else:
- gevent["end"]={"dateTime": event.end.isoformat(),
- "timeZone": event.end.tzname()}
- gevent["start"]={"dateTime": event.start.isoformat(),
- "timeZone": event.start.tzname()}
- if event.text_body.strip() != '':
- gevent["description"] = event.text_body
- if event.location is not None:
- gevent["location"] = event.location
- gevent["extendedProperties"]={"shared": {"ex_id": event.item_id}}
- gevent=gcal_acct.events().insert(calendarId=gcal_id, body=gevent).execute()
+ gevent = build_gcal_event_from_ex(event)
+ gevent = gcal_acct.events().insert(calendarId=gcal_id,
+ body=gevent).execute()
event.gcal_link = gevent.get("id")
event.save()
events[event.item_id] = events[event.item_id]._replace(changekey=event.changekey,gcal_link=event.gcal_link)