comparison multimerge.py @ 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
comparison
equal deleted inserted replaced
54:86d3a8eddbd7 55:5b78f62b7de7
444 else: 444 else:
445 gcm_debug(u"No current events.") 445 gcm_debug(u"No current events.")
446 446
447 447
448 ## Start merging events .. 448 ## Start merging events ..
449 dst_gcm_ids = frozenset(map(lambda x: x["gcm_id"], dst_events))
450 src_ids = frozenset(map(lambda x: x["id"], src_events))
451 dst_ids = frozenset(map(lambda x: x["id"], dst_events))
452 gcm_debug(u"Re-merging events to target calendar ..") 449 gcm_debug(u"Re-merging events to target calendar ..")
450 dst_ids = frozenset(map(lambda x: x["gcm_id"], dst_events))
451 src_ids = frozenset(map(lambda x: x["gcm_id"], src_events))
453 452
454 for event in src_events: 453 for event in src_events:
455 # Does the event exist already in the target? 454 # Does the event exist already in the target?
456 if event["gcm_id"] in dst_gcm_ids: 455 if event["gcm_id"] in dst_ids:
457 ## Yes. Thus, we just update the event. 456 ## Yes. Thus, we just update the event.
458 #print "IS in dst_gcm_ids: "+ event["id"] +" : "+ event["gcm_id"] 457 #print "IS in dst_ids: "+ event["id"] +" : "+ event["gcm_id"]
459 # Check if event NEEDS updating .. aka compare data 458 # Check if event NEEDS updating .. aka compare data
460 gcm_debug(u"Updating event {0}".format(event["gcm_id"])) 459 gcm_debug(u"Updating event {0}".format(event["gcm_id"]))
461 d_event = gcm_get_event_by_gcm_id(dst_events, event["gcm_id"]) 460 d_event = gcm_get_event_by_gcm_id(dst_events, event["gcm_id"])
462 if d_event and gcm_compare_events(event, d_event): 461 if not d_event:
462 gcm_fatal("ASDF")
463 if not gcm_compare_events(event, d_event):
463 try: 464 try:
465 event.pop("sequence", None)
464 new_event = service.events().update(calendarId=cfg.dest_id, eventId=event["id"], body=event).execute() 466 new_event = service.events().update(calendarId=cfg.dest_id, eventId=event["id"], body=event).execute()
465 except Exception as e: 467 except Exception as e:
466 gcm_fatal("Failed to update event:\n{0}\n\nERROR: {1}\n".format(event, str(e))) 468 gcm_fatal("Failed to update event:\n{0}\n\nERROR: {1}\n".format(event, str(e)))
467 else: 469 else:
468 gcm_debug(u"No need to update event {0}.".format(event["gcm_id"])) 470 gcm_debug(u"No need to update event {0}.".format(event["gcm_id"]))
477 gcm_fatal("Failed to insert new event:\n{0}\n\nERROR: {1}\n".format(event, str(e))) 479 gcm_fatal("Failed to insert new event:\n{0}\n\nERROR: {1}\n".format(event, str(e)))
478 480
479 ## Remove "stale" events 481 ## Remove "stale" events
480 gcm_debug(u"Purging stale events ..") 482 gcm_debug(u"Purging stale events ..")
481 for event in dst_events: 483 for event in dst_events:
482 if not event["id"] in src_ids: 484 if not event["gcm_id"] in src_ids and event["status"] != u"cancelled":
483 try: 485 gcm_debug(u"Deleting event {0}".format(event["gcm_id"]))
484 service.events().delete(calendarId=cfg.dest_id, eventId=event["id"]).execute() 486 # try:
485 except Exception as e: 487 # service.events().delete(calendarId=cfg.dest_id, eventId=event["id"]).execute()
486 gcm_fatal("Failed to delete stale event:\n{0}\n\nERROR: {1}\n".format(event, str(e))) 488 # except Exception as e:
489 # gcm_fatal("Failed to delete stale event:\n{0}\n\nERROR: {1}\n".format(event, str(e)))
487 490
488 491
489 gcm_debug(u"Finished.") 492 gcm_debug(u"Finished.")