Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/run (4301 => 4302)
--- CalendarServer/branches/release/CalendarServer-2.2-dev/run 2009-05-19 23:26:30 UTC (rev 4301)
+++ CalendarServer/branches/release/CalendarServer-2.2-dev/run 2009-05-20 00:41:58 UTC (rev 4302)
@@ -727,7 +727,7 @@
caldavtester="${top}/CalDAVTester";
-svn_get "CalDAVTester" "${caldavtester}" "${svn_uri_base}/CalDAVTester/trunk" 4277;
+svn_get "CalDAVTester" "${caldavtester}" "${svn_uri_base}/CalDAVTester/trunk" 4299;
#
# PyFlakes
Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/implicit.py (4301 => 4302)
--- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/implicit.py 2009-05-19 23:26:30 UTC (rev 4301)
+++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/implicit.py 2009-05-20 00:41:58 UTC (rev 4302)
@@ -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):
"""