From f490183b1024e3a86df726f51699d9f93a35bd15 Mon Sep 17 00:00:00 2001 From: Matthew Vernon Date: Tue, 23 Oct 2018 14:38:11 +0100 Subject: [PATCH] Handle updates to recurring events --- gooswapper.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/gooswapper.py b/gooswapper.py index 8009a97..d983303 100644 --- a/gooswapper.py +++ b/gooswapper.py @@ -267,14 +267,24 @@ def update_ex_to_gcal(ex_acct, gcal_id="primary"): for ev_id in changed: event = get_ex_event_by_itemid(ex_acct.calendar,ev_id) - if not event.is_recurring: - gevent = build_gcal_event_from_ex(event,gcal_tz) - gevent = gcal_acct.events().update(calendarId=gcal_id, + gevent = build_gcal_event_from_ex(event,gcal_tz) + if event.type=="RecurringMaster": + rr = rrule_from_ex(event,gcal_tz) + if rr is not None: + gevent["recurrence"] = rr + if event.deleted_occurrences or \ + event.modified_occurrences: + modify_recurring(ex_acct,gcal_acct,gcal_tz, + events,event,gcal_id) + event.refresh() #changekey is updated by the above + events[event.item_id] = events[event.item_id]._replace(changekey=event.changekey,gcal_link=event.gcal_link) + else: + logger.warning("Unable to set recurrence for %s" % event.item_id) + continue #don't make the gcal event + gevent = gcal_acct.events().update(calendarId=gcal_id, eventId=event.gcal_link, body=gevent, sendUpdates="none").execute() - else: - logger.warning("recurring events not yet supported") def match_ex_to_gcal(ex_acct,gcal_acct,gcal_tz,events,gcal_id="primary"): recur = 0 -- 2.30.2