chiark / gitweb /
Handle updates to recurring events
authorMatthew Vernon <mv3@sanger.ac.uk>
Tue, 23 Oct 2018 13:38:11 +0000 (14:38 +0100)
committerMatthew Vernon <mv3@sanger.ac.uk>
Tue, 23 Oct 2018 13:38:11 +0000 (14:38 +0100)
gooswapper.py

index 8009a978670dca3521afa5f64d2375e0bf2c385f..d9833036f46d062346df88728296cc27e17ecf77 100644 (file)
@@ -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