comparison multimerge.py @ 81:ce02c0c00e64

Add debug information about how many events were new, updated or unchanged.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 13 Jul 2016 14:14:10 +0300
parents 4bed40e35fae
children 16edb168daa1
comparison
equal deleted inserted replaced
80:4bed40e35fae 81:ce02c0c00e64
544 ## Start merging events .. 544 ## Start merging events ..
545 gcm_debug(3, u"Re-merging events to target calendar ..") 545 gcm_debug(3, u"Re-merging events to target calendar ..")
546 dst_ids = frozenset(map(lambda x: x["gcm_id"], dst_events)) 546 dst_ids = frozenset(map(lambda x: x["gcm_id"], dst_events))
547 src_ids = frozenset(map(lambda x: x["gcm_id"], src_events)) 547 src_ids = frozenset(map(lambda x: x["gcm_id"], src_events))
548 548
549 evn_new = evn_updated = evn_unchanged = 0
550
549 for event in src_events: 551 for event in src_events:
550 # Does the event exist already in the target? 552 # Does the event exist already in the target?
551 if event["gcm_id"] in dst_ids: 553 if event["gcm_id"] in dst_ids:
552 # Check if event NEEDS updating .. aka compare data 554 # Check if event NEEDS updating .. aka compare data
553 gcm_debug(4, u"Event {0} : {1} exists, checking ..".format(event["id"], event["gcm_id"])) 555 gcm_debug(4, u"Event {0} : {1} exists, checking ..".format(event["id"], event["gcm_id"]))
554 d_event = gcm_get_event_by_gcm_id(dst_events, event["gcm_id"]) 556 d_event = gcm_get_event_by_gcm_id(dst_events, event["gcm_id"])
555 if not gcm_compare_events(event, d_event): 557 if not gcm_compare_events(event, d_event):
556 # Seems we need to update 558 # Seems we need to update
559 evn_updated += 1
557 gcm_debug(4, u"Updating event {0} : {1}..".format(event["id"], event["gcm_id"])) 560 gcm_debug(4, u"Updating event {0} : {1}..".format(event["id"], event["gcm_id"]))
558 try: 561 try:
559 event.pop("sequence", None) 562 event.pop("sequence", None)
560 event.pop("id", None) 563 event.pop("id", None)
561 event["iCalUID"] = event["gcm_id"] 564 event["iCalUID"] = event["gcm_id"]
562 new_event = service.events().update(calendarId=cfg.dest_id, eventId=d_event["id"], body=event).execute() 565 new_event = service.events().update(calendarId=cfg.dest_id, eventId=d_event["id"], body=event).execute()
563 except Exception as e: 566 except Exception as e:
564 gcm_fatal(u"Failed to update event {0}:\n\n{1}\n\nERROR: {2}\n".format(event["gcm_id"], event, str(e))) 567 gcm_fatal(u"Failed to update event {0}:\n\n{1}\n\nERROR: {2}\n".format(event["gcm_id"], event, str(e)))
565 else: 568 else:
569 evn_unchanged += 1
566 gcm_debug(4, u"No need to update event {0} : {1}.".format(event["id"], event["gcm_id"])) 570 gcm_debug(4, u"No need to update event {0} : {1}.".format(event["id"], event["gcm_id"]))
567 else: 571 else:
568 ## Event does not seem to exist. Insert new event. 572 ## Event does not seem to exist. Insert new event.
569 gcm_debug(4, u"Inserting new event {0}".format(event["gcm_id"])) 573 gcm_debug(4, u"Inserting new event {0}".format(event["gcm_id"]))
574 evn_new += 1
570 event.pop("id", None) 575 event.pop("id", None)
571 event["iCalUID"] = event["gcm_id"] # Replace Google generated ID with our own 576 event["iCalUID"] = event["gcm_id"] # Replace Google generated ID with our own
572 try: 577 try:
573 new_event = service.events().insert(calendarId=cfg.dest_id, body=event).execute() 578 new_event = service.events().insert(calendarId=cfg.dest_id, body=event).execute()
574 except Exception as e: 579 except Exception as e:
575 gcm_fatal(u"Failed to insert new event:\n\n{0}\n\nERROR: {1}\n".format(event, str(e))) 580 gcm_fatal(u"Failed to insert new event:\n\n{0}\n\nERROR: {1}\n".format(event, str(e)))
581
582 gcm_debug(3, "{0} new events, {1} updated, {2} unchanged.".format(evn_new, evn_updated, evn_unchanged))
576 583
577 584
578 ## Remove "stale" events 585 ## Remove "stale" events
579 gcm_debug(3, u"Purging stale events ..") 586 gcm_debug(3, u"Purging stale events ..")
580 for event in dst_events: 587 for event in dst_events: