[CalendarServer-changes] [4397] CalendarServer/trunk/twistedcaldav
source_changes at macosforge.org
source_changes at macosforge.org
Tue Jun 30 11:26:50 PDT 2009
Revision: 4397
http://trac.macosforge.org/projects/calendarserver/changeset/4397
Author: cdaboo at apple.com
Date: 2009-06-30 11:26:50 -0700 (Tue, 30 Jun 2009)
Log Message:
-----------
If the organizer's copy of the event is missing we now remove the attendee's copy rather than returning a 403. That
way the server "heals" itself.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/method/put_common.py
CalendarServer/trunk/twistedcaldav/scheduling/implicit.py
Modified: CalendarServer/trunk/twistedcaldav/method/put_common.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/put_common.py 2009-06-30 16:56:46 UTC (rev 4396)
+++ CalendarServer/trunk/twistedcaldav/method/put_common.py 2009-06-30 18:26:50 UTC (rev 4397)
@@ -62,6 +62,7 @@
InvalidOverriddenInstanceError
from twistedcaldav.log import Logger
from twistedcaldav.memcachelock import MemcacheLock, MemcacheLockTimeoutError
+from twistedcaldav.method.delete_common import DeleteResource
from twistedcaldav.scheduling.implicit import ImplicitScheduler
log = Logger()
@@ -971,6 +972,17 @@
yield reservation.unreserve()
returnValue(StatusResponse(responsecode.CREATED, "Resource created but immediately deleted by the server."))
+
+ elif implicit_result == ImplicitScheduler.STATUS_ORPHANED_EVENT:
+ if reservation:
+ yield reservation.unreserve()
+
+ # Now forcibly delete the event
+ deleter = DeleteResource(self.request, self.destination, self.destination_uri, self.destinationparent, "0", internal_request=True)
+ yield deleter.run()
+
+ returnValue(StatusResponse(responsecode.OK, "Resource modified but immediately deleted by the server."))
+
else:
msg = "Invalid return status code from ImplicitScheduler: %s" % (implicit_result,)
log.err(msg)
Modified: CalendarServer/trunk/twistedcaldav/scheduling/implicit.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/implicit.py 2009-06-30 16:56:46 UTC (rev 4396)
+++ CalendarServer/trunk/twistedcaldav/scheduling/implicit.py 2009-06-30 18:26:50 UTC (rev 4397)
@@ -54,6 +54,7 @@
# Return Status codes
STATUS_OK = 0
STATUS_ORPHANED_CANCELLED_EVENT = 1
+ STATUS_ORPHANED_EVENT = 2
def __init__(self):
@@ -792,8 +793,9 @@
self.return_status = ImplicitScheduler.STATUS_ORPHANED_CANCELLED_EVENT
returnValue(None)
else:
- log.debug("Attendee '%s' is not allowed to update UID: '%s' - missing organizer copy" % (self.attendee, 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)
elif isinstance(self.organizerAddress, InvalidCalendarUser):
log.debug("Attendee '%s' is not allowed to update UID: '%s' with invalid organizer '%s'" % (self.attendee, self.uid, self.organizer))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-attendee-change")))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090630/9377d8a3/attachment-0001.html>
More information about the calendarserver-changes
mailing list