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

source_changes at macosforge.org source_changes at macosforge.org
Tue May 1 14:05:31 PDT 2012


Revision: 9218
          http://trac.macosforge.org/projects/calendarserver/changeset/9218
Author:   cdaboo at apple.com
Date:     2012-05-01 14:05:31 -0700 (Tue, 01 May 2012)
Log Message:
-----------
Fix for case where PUT tries to change an organizer when the calendar owner is not an attendee.

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

Modified: CalendarServer/trunk/twistedcaldav/scheduling/implicit.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/implicit.py	2012-05-01 21:03:58 UTC (rev 9217)
+++ CalendarServer/trunk/twistedcaldav/scheduling/implicit.py	2012-05-01 21:05:31 UTC (rev 9218)
@@ -287,7 +287,7 @@
         elif self.state == "attendee":
             yield self.doImplicitAttendee()
         elif self.state == "attendee-missing":
-            self.doImplicitMissingAttendee()
+            yield self.doImplicitMissingAttendee()
         else:
             returnValue(None)
 
@@ -1072,6 +1072,7 @@
                 log.debug("Implicit - attendee '%s' is updating UID without server scheduling: '%s'" % (self.attendee, self.uid))
                 # Nothing else to do
 
+    @inlineCallbacks
     def doImplicitMissingAttendee(self):
 
         if self.action == "remove":
@@ -1083,6 +1084,19 @@
             # with an schedule-status error and schedule-agent none
             log.debug("Missing attendee is allowed to update UID: '%s' with invalid organizer '%s'" % (self.uid, self.organizer))
             
+            # Make sure ORGANIZER is not changed if originally SCHEDULE-AGENT=SERVER
+            if self.resource.exists():
+                self.oldcalendar = (yield self.resource.iCalendarForUser(self.request))
+                oldOrganizer = self.oldcalendar.getOrganizer()
+                newOrganizer = self.calendar.getOrganizer()
+                if oldOrganizer != newOrganizer and self.oldcalendar.getOrganizerScheduleAgent():
+                    log.error("Cannot change ORGANIZER: UID:%s" % (self.uid,))
+                    raise HTTPError(ErrorResponse(
+                        responsecode.FORBIDDEN,
+                        (caldav_namespace, "valid-attendee-change"),
+                        "Cannot change organizer",
+                    ))
+
             # Check SCHEDULE-AGENT and coerce SERVER to NONE
             if self.calendar.getOrganizerScheduleAgent():
                 self.calendar.setParameterToValueForPropertyWithValue("SCHEDULE-AGENT", "NONE", "ORGANIZER", None)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120501/33ddbc89/attachment.html>


More information about the calendarserver-changes mailing list