Mercurial > hg > gcmultimerge
changeset 53:ea62e0ed05ae
Initial implementation of event comparision amd generally more clever about
when to update events in target calendar. This makes subsequent updates faster when
nothing has changed.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 05 Jul 2016 20:55:18 +0300 |
parents | b87dbc887f63 |
children | 86d3a8eddbd7 |
files | multimerge.py |
diffstat | 1 files changed, 19 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/multimerge.py Tue Jul 05 19:26:42 2016 +0300 +++ b/multimerge.py Tue Jul 05 20:55:18 2016 +0300 @@ -114,6 +114,23 @@ return events +## Find event by its gcm_id from given list or return None if not found +def gcm_get_event_by_gcm_id(list, id): + for event in list: + if event["gcm_id"] == id: + return event + return None + + +gcm_no_compare_fields = [u"id", u"iCalUID"] + +def gcm_compare_events(ev1, ev2): + for field in ev1: + if not field in gcm_no_compare_fields and ev1[field] != ev2[field]: + return False + return True + + ## ## Class for handling configuration / settings ## @@ -440,9 +457,8 @@ ## Yes. Thus, we just update the event. #print "IS in dst_gcm_ids: "+ event["id"] +" : "+ event["gcm_id"] # Check if event NEEDS updating .. aka compare data - #d_event = gcm_get_event_by_gcm_id(dst_events, event["gcm_id"]) - #if d_event and gcm_compare_events(event, d_event): - if True: + d_event = gcm_get_event_by_gcm_id(dst_events, event["gcm_id"]) + if d_event and gcm_compare_events(event, d_event): try: new_event = service.events().update(calendarId=cfg.dest_id, eventId=event["id"], body=event).execute() except Exception as e: