changeset 55:5b78f62b7de7

More work on merging stuff.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 05 Jul 2016 21:18:03 +0300
parents 86d3a8eddbd7
children 597875ef885b
files multimerge.py
diffstat 1 files changed, 14 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/multimerge.py	Tue Jul 05 21:15:54 2016 +0300
+++ b/multimerge.py	Tue Jul 05 21:18:03 2016 +0300
@@ -446,21 +446,23 @@
 
 
 ## Start merging events ..
-dst_gcm_ids = frozenset(map(lambda x: x["gcm_id"], dst_events))
-src_ids = frozenset(map(lambda x: x["id"], src_events))
-dst_ids = frozenset(map(lambda x: x["id"], dst_events))
 gcm_debug(u"Re-merging events to target calendar ..")
+dst_ids = frozenset(map(lambda x: x["gcm_id"], dst_events))
+src_ids = frozenset(map(lambda x: x["gcm_id"], src_events))
 
 for event in src_events:
     # Does the event exist already in the target?
-    if event["gcm_id"] in dst_gcm_ids:
+    if event["gcm_id"] in dst_ids:
         ## Yes. Thus, we just update the event.
-        #print "IS in dst_gcm_ids: "+ event["id"] +" : "+ event["gcm_id"]
+        #print "IS in dst_ids: "+ event["id"] +" : "+ event["gcm_id"]
         # Check if event NEEDS updating .. aka compare data
         gcm_debug(u"Updating event {0}".format(event["gcm_id"]))
         d_event = gcm_get_event_by_gcm_id(dst_events, event["gcm_id"])
-        if d_event and gcm_compare_events(event, d_event):
+        if not d_event:
+            gcm_fatal("ASDF")
+        if not gcm_compare_events(event, d_event):
             try:
+                event.pop("sequence", None)
                 new_event = service.events().update(calendarId=cfg.dest_id, eventId=event["id"], body=event).execute()
             except Exception as e:
                 gcm_fatal("Failed to update event:\n{0}\n\nERROR: {1}\n".format(event, str(e)))
@@ -479,11 +481,12 @@
 ## Remove "stale" events
 gcm_debug(u"Purging stale events ..")
 for event in dst_events:
-    if not event["id"] in src_ids:
-        try:
-            service.events().delete(calendarId=cfg.dest_id, eventId=event["id"]).execute()
-        except Exception as e:
-            gcm_fatal("Failed to delete stale event:\n{0}\n\nERROR: {1}\n".format(event, str(e)))
+    if not event["gcm_id"] in src_ids and event["status"] != u"cancelled":
+        gcm_debug(u"Deleting event {0}".format(event["gcm_id"]))
+#        try:
+#            service.events().delete(calendarId=cfg.dest_id, eventId=event["id"]).execute()
+#        except Exception as e:
+#            gcm_fatal("Failed to delete stale event:\n{0}\n\nERROR: {1}\n".format(event, str(e)))
 
 
 gcm_debug(u"Finished.")