Hello!

Suppose the same meeting invitation for event UID=FOO is processed in
both Evolution and Google Calendar. On the Evolution side, the
invitation is accepted. In Google Calendar this is still open.

Both sides now have a new item when syncing takes place.

What happens is that the engine itself doesn't recognize that the two
new items are in fact the same. It asks both sides to store the others
item. The SyncEvolution EDS backend recognizes the UID and updates the
item, but without merging. The PARTSTAT=ACCEPTED is overwritten with
Google's PARTSTAT=NEEDS-ACTION. At the same time, Google's version of
the items similarly overwritten.

After modifying the event series in Evolution it is sent as update to
Google, at which point the correct PARTSTAT is lost everywhere.

Is there some way to force UID comparison for added items even in a
normal, incremental sync?

SyncEvolution already has a comparescript for its calendar types:

    INTEGER RES;
    if (COMPARISONMODE() != "age" && SESSIONVAR("VCALENDAR_COMPARE_UID") ) {
        if (TARGET.UID == REFERENCE.UID &&
            TARGET.ORIGSTART == REFERENCE.ORIGSTART) {
            RES = 0;
        } else {
            RES = -999;
        }
    } else {
        RES = COMPAREFIELDS();
    }
    return RES;

The VCALENDAR_COMPARE_UID session variable would be set in this case.

-- 
Best Regards, Patrick Ohly

The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.


_______________________________________________
SyncEvolution mailing list
[email protected]
http://lists.syncevolution.org/listinfo/syncevolution

Reply via email to