# HG changeset patch # User Matti Hamalainen # Date 1467742683 -10800 # Node ID 5b78f62b7de7dc2187cf5b4aa645f18df47fd7c6 # Parent 86d3a8eddbd7139ed0c643d290d2d78cb0c9be49 More work on merging stuff. diff -r 86d3a8eddbd7 -r 5b78f62b7de7 multimerge.py --- 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.")