[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