[CalendarServer-changes] [4298] CalendarServer/trunk/twistedcaldav/scheduling/implicit.py

source_changes at macosforge.org source_changes at macosforge.org
Tue May 19 15:06:27 PDT 2009


Revision: 4298
          http://trac.macosforge.org/projects/calendarserver/changeset/4298
Author:   cdaboo at apple.com
Date:     2009-05-19 15:06:26 -0700 (Tue, 19 May 2009)
Log Message:
-----------
Don't send out cancels when a master recurrence DTSTART change occurs - that is a total
reschedule - a single REQUEST gets sent.

Modified Paths:
--------------
    CalendarServer/trunk/twistedcaldav/scheduling/implicit.py

Modified: CalendarServer/trunk/twistedcaldav/scheduling/implicit.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/implicit.py	2009-05-19 21:28:46 UTC (rev 4297)
+++ CalendarServer/trunk/twistedcaldav/scheduling/implicit.py	2009-05-19 22:06:26 UTC (rev 4298)
@@ -484,7 +484,7 @@
             self.oldcalendar = self.resource.iCalendar()
             
             # Significant change
-            no_change, self.changed_rids, rsvps = self.isOrganizerChangeInsignificant()
+            no_change, self.changed_rids, rsvps, recurrence_reschedule = self.isOrganizerChangeInsignificant()
             if no_change:
                 if rsvps:
                     log.debug("Implicit - organizer '%s' is re-inviting UID: '%s', attendees: %s" % (self.organizer, self.uid, ", ".join(rsvps)))
@@ -497,7 +497,8 @@
                 log.debug("Implicit - organizer '%s' is modifying UID: '%s'" % (self.organizer, self.uid))
     
                 # Check for removed attendees
-                self.findRemovedAttendees()
+                if not recurrence_reschedule:
+                    self.findRemovedAttendees()
 
         elif self.action == "create":
             log.debug("Implicit - organizer '%s' is creating UID: '%s'" % (self.organizer, self.uid))
@@ -520,6 +521,7 @@
         
         rids = None
         rsvps = None
+        recurrence_reschedule = False
         differ = iCalDiff(self.oldcalendar, self.calendar, self.do_smart_merge)
         no_change = differ.organizerDiff()
         if not no_change:
@@ -531,6 +533,12 @@
                 if "ORGANIZER" in props:
                     checkOrganizerValue = True
                 rids.add(rid)
+                
+                # Check to see whether a change to R-ID's happened
+                if rid == "":
+                    if "RRULE" in props or "DTSTART" in props and self.calendar.masterComponent().hasProperty("RRULE"):
+                        recurrence_reschedule = True
+
             if checkOrganizerValue:
                 oldOrganizer = self.oldcalendar.getOrganizer()
                 newOrganizer = self.calendar.getOrganizer()
@@ -547,7 +555,7 @@
                 except KeyError:
                     pass
 
-        return no_change, rids, rsvps
+        return no_change, rids, rsvps, recurrence_reschedule
     
     def findRemovedAttendees(self):
         """
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090519/9fab0509/attachment.html>


More information about the calendarserver-changes mailing list