[CalendarServer-changes] [5675] CalendarServer/trunk/twistedcaldav/scheduling/implicit.py
source_changes at macosforge.org
source_changes at macosforge.org
Thu Jun 3 12:31:27 PDT 2010
Revision: 5675
http://trac.macosforge.org/projects/calendarserver/changeset/5675
Author: cdaboo at apple.com
Date: 2010-06-03 12:31:24 -0700 (Thu, 03 Jun 2010)
Log Message:
-----------
Support SCHEDULE-AGENT=CLIENT on local ORGANIZER.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/scheduling/implicit.py
Modified: CalendarServer/trunk/twistedcaldav/scheduling/implicit.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/implicit.py 2010-06-03 19:30:14 UTC (rev 5674)
+++ CalendarServer/trunk/twistedcaldav/scheduling/implicit.py 2010-06-03 19:31:24 UTC (rev 5675)
@@ -807,7 +807,8 @@
else:
log.debug("Implicit - attendee '%s' is removing UID without server scheduling: '%s'" % (self.attendee, self.uid))
# Nothing else to do
-
+ returnValue(None)
+
else:
# Make sure ORGANIZER is not changed
if self.resource.exists():
@@ -824,6 +825,11 @@
yield self.getOrganizersCopy()
if self.organizer_calendar:
+ # If Organizer copy exists we cannot allow SCHEDULE-AGENT=CLIENT or NONE
+ if not doScheduling:
+ log.error("Attendee '%s' is not allowed to change SCHEDULE-AGENT on organizer: UID:%s" % (self.attendeePrincipal, self.uid,))
+ raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-attendee-change")))
+
# Determine whether the current change is allowed
changeAllowed, doITipReply, changedRids, newCalendar = self.isAttendeeChangeInsignificant()
if changeAllowed:
@@ -844,14 +850,27 @@
log.debug("Attendee '%s' is allowed to update UID: '%s' with local organizer '%s'" % (self.attendee, self.uid, self.organizer))
elif isinstance(self.organizerAddress, LocalCalendarUser):
- # Check to see whether all instances are CANCELLED
- if self.calendar.hasPropertyValueInAllComponents(Property("STATUS", "CANCELLED")):
- log.debug("Attendee '%s' is creating CANCELLED event for missing UID: '%s' - removing entire event" % (self.attendee, self.uid,))
- self.return_status = ImplicitScheduler.STATUS_ORPHANED_CANCELLED_EVENT
- returnValue(None)
+ # If Organizer copy does not exists we cannot allow SCHEDULE-AGENT=SERVER
+ if doScheduling:
+ # Check to see whether all instances are CANCELLED
+ if self.calendar.hasPropertyValueInAllComponents(Property("STATUS", "CANCELLED")):
+ log.debug("Attendee '%s' is creating CANCELLED event for missing UID: '%s' - removing entire event" % (self.attendee, self.uid,))
+ self.return_status = ImplicitScheduler.STATUS_ORPHANED_CANCELLED_EVENT
+ returnValue(None)
+ else:
+ # Check to see whether existing event is SCHEDULE-AGENT=CLIENT/NONE
+ if self.oldcalendar:
+ oldScheduling = self.oldcalendar.getOrganizerScheduleAgent()
+ if not oldScheduling:
+ log.error("Attendee '%s' is not allowed to set SCHEDULE-AGENT=SERVER on organizer: UID:%s" % (self.attendeePrincipal, self.uid,))
+ raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-attendee-change")))
+
+ log.debug("Attendee '%s' is not allowed to update UID: '%s' - missing organizer copy - removing entire event" % (self.attendee, self.uid,))
+ self.return_status = ImplicitScheduler.STATUS_ORPHANED_EVENT
+ returnValue(None)
else:
- log.debug("Attendee '%s' is not allowed to update UID: '%s' - missing organizer copy - removing entire event" % (self.attendee, self.uid,))
- self.return_status = ImplicitScheduler.STATUS_ORPHANED_EVENT
+ log.debug("Implicit - attendee '%s' is modifying UID without server scheduling: '%s'" % (self.attendee, self.uid))
+ # Nothing else to do
returnValue(None)
elif isinstance(self.organizerAddress, InvalidCalendarUser):
@@ -889,10 +908,7 @@
if config.Scheduling.iMIP.Enabled and self.organizerAddress.cuaddr.startswith("mailto:"):
return True
- if local_organizer and not is_server:
- log.error("Attendee '%s' is not allowed to change SCHEDULE-AGENT on organizer: UID:%s" % (self.attendeePrincipal, self.uid,))
- raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-attendee-change")))
- elif not local_organizer and is_server:
+ if not local_organizer and is_server:
# Coerce ORGANIZER to SCHEDULE-AGENT=NONE
log.debug("Attendee '%s' is not allowed to use SCHEDULE-AGENT=SERVER on organizer: UID:%s" % (self.attendeePrincipal, self.uid,))
self.calendar.setParameterToValueForPropertyWithValue("SCHEDULE-AGENT", "NONE", "ORGANIZER", None)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20100603/7311ac62/attachment.html>
More information about the calendarserver-changes
mailing list