[CalendarServer-changes] [13193] CalendarServer/trunk/txdav/caldav/datastore/scheduling/icaldiff.py

source_changes at macosforge.org source_changes at macosforge.org
Tue Apr 8 09:23:42 PDT 2014


Revision: 13193
          http://trac.calendarserver.org//changeset/13193
Author:   cdaboo at apple.com
Date:     2014-04-08 09:23:41 -0700 (Tue, 08 Apr 2014)
Log Message:
-----------
MAke sure that attendee change is properly merge with If-Schedule-Tag-Match.

Modified Paths:
--------------
    CalendarServer/trunk/txdav/caldav/datastore/scheduling/icaldiff.py

Modified: CalendarServer/trunk/txdav/caldav/datastore/scheduling/icaldiff.py
===================================================================
--- CalendarServer/trunk/txdav/caldav/datastore/scheduling/icaldiff.py	2014-04-08 16:22:27 UTC (rev 13192)
+++ CalendarServer/trunk/txdav/caldav/datastore/scheduling/icaldiff.py	2014-04-08 16:23:41 UTC (rev 13193)
@@ -342,8 +342,20 @@
 
                 else:
                     # We used to generate a 403 here - but instead we now ignore this error and let the server data
-                    # override the client
-                    self._logDiffError("attendeeMerge: Missing uncancelled component from first calendar: %s" % (key,))
+                    # override the client.
+
+                    # If smart_merge is happening, then derive an instance in the new data as the change in the old
+                    # data is valid and likely due to some other attendee changing their status.
+                    if  self.smart_merge:
+                        newOverride = self.newcalendar.deriveInstance(rid, allowCancelled=True)
+                        if newOverride is None:
+                            self._logDiffError("attendeeMerge: Could not derive instance for uncancelled component: %s" % (key,))
+                        else:
+                            self.newcalendar.addComponent(newOverride)
+                            setnew.add(key)
+                            mapnew[key] = newOverride
+                    else:
+                        self._logDiffError("attendeeMerge: Missing uncancelled component from first calendar: %s" % (key,))
             else:
                 if exdatesnew is not None and rid not in exdatesnew:
                     # We used to generate a 403 here - but instead we now ignore this error and let the server data
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140408/19fd6cd1/attachment.html>


More information about the calendarserver-changes mailing list