Modified: CalendarServer/trunk/twistedcaldav/scheduling/implicit.py (4297 => 4298)
--- 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):
"""