Revision: 4286 http://trac.macosforge.org/projects/calendarserver/changeset/4286 Author: wsanchez@apple.com Date: 2009-05-15 16:16:12 -0700 (Fri, 15 May 2009) Log Message: ----------- Pulled up r4274 r4278 from trunk. Modified Paths: -------------- CalendarServer/branches/release/CalendarServer-2.2-dev/run CalendarServer/branches/release/CalendarServer-2.2-dev/twext/web2/dav/davxml.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/dropbox.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/freebusyurl.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/copymove.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/delete_common.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/mkcalendar.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/put.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/put_common.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report_calquery.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report_freebusy.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report_multiget.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/resource.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/schedule.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/caldav.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/imip.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/implicit.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/ischedule.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/scheduler.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/static.py CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/timezoneservice.py Property Changed: ---------------- CalendarServer/branches/release/CalendarServer-2.2-dev/ CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-privatecomments.txt CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-privatecomments.xml CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-schedulingchanges.txt CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-schedulingchanges.xml Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev ___________________________________________________________________ Modified: svn:mergeinfo - /CalendarServer/branches/users/sagen/resource-delegates-4038:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066:4068-4075 /CalendarServer/trunk:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197-4202,4205-4206,4209,4213,4215-4216,4219-4220,4222,4224,4227,4231-4233,4237,4240-4242,4248,4250-4251,4257-4262,4264,4270-4273,4275-4276,4279 + /CalendarServer/branches/users/sagen/resource-delegates-4038:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066:4068-4075 /CalendarServer/trunk:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197-4202,4205-4206,4209,4213,4215-4216,4219-4220,4222,4224,4227,4231-4233,4237,4240-4242,4248,4250-4251,4257-4262,4264,4270-4276,4278-4279 Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-privatecomments.txt ___________________________________________________________________ Modified: svn:mergeinfo - /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.txt:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.txt:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.txt:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.txt:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.txt:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.txt:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.txt:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-privatecomments.txt:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197-4202,4209,4213,4222,4227,4231-4233,4237,4240-4242,4248,4250-4251,4257-4262,4270-4273,4275-4276,4279 + /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.txt:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.txt:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.txt:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.txt:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.txt:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.txt:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.txt:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-privatecomments.txt:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197-4202,4209,4213,4222,4227,4231-4233,4237,4240-4242,4248,4250-4251,4257-4262,4270-4276,4278-4279 Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-privatecomments.xml ___________________________________________________________________ Modified: svn:mergeinfo - /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.xml:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.xml:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.xml:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.xml:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.xml:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.xml:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.xml:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-privatecomments.xml:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197-4202,4209,4213,4222,4227,4231-4233,4237,4240-4242,4248,4250-4251,4257-4262,4270-4273,4275-4276,4279 + /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.xml:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.xml:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.xml:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.xml:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.xml:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.xml:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.xml:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-privatecomments.xml:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197-4202,4209,4213,4222,4227,4231-4233,4237,4240-4242,4248,4250-4251,4257-4262,4270-4276,4278-4279 Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-schedulingchanges.txt ___________________________________________________________________ Modified: svn:mergeinfo - /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.txt:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.txt:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.txt:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.txt:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.txt:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.txt:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.txt:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.txt:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197-4202,4209,4213,4222,4227,4231-4233,4237,4240-4242,4248,4250-4251,4257-4262,4270-4273,4275-4276,4279 + /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.txt:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.txt:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.txt:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.txt:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.txt:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.txt:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.txt:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.txt:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197-4202,4209,4213,4222,4227,4231-4233,4237,4240-4242,4248,4250-4251,4257-4262,4270-4276,4278-4279 Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-schedulingchanges.xml ___________________________________________________________________ Modified: svn:mergeinfo - /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.xml:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.xml:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.xml:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.xml:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.xml:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.xml:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.xml:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.xml:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197-4202,4209,4213,4222,4227,4231-4233,4237,4240-4242,4248,4250-4251,4257-4262,4270-4273,4275-4276,4279 + /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.xml:2887-2910 /CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.xml:2938-3097 /CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.xml:3307-3349 /CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.xml:2948-2989 /CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.xml:3574-3581 /CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.xml:4040-4067 /CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.xml:4068-4075 /CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.xml:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197-4202,4209,4213,4222,4227,4231-4233,4237,4240-4242,4248,4250-4251,4257-4262,4270-4276,4278-4279 Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/run =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/run 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/run 2009-05-15 23:16:12 UTC (rev 4286) @@ -727,7 +727,7 @@ caldavtester="${top}/CalDAVTester"; -svn_get "CalDAVTester" "${caldavtester}" "${svn_uri_base}/CalDAVTester/trunk" 4275; +svn_get "CalDAVTester" "${caldavtester}" "${svn_uri_base}/CalDAVTester/trunk" 4277; # # PyFlakes Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twext/web2/dav/davxml.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twext/web2/dav/davxml.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twext/web2/dav/davxml.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -21,8 +21,16 @@ __all__ = [ "sname2qname", "qname2sname", + "ErrorResponse", ] +from twisted.web2.http import Response +from twisted.web2.dav.http import ErrorResponse as SuperErrorResponse +from twisted.web2.dav.davxml import twisted_dav_namespace, WebDAVTextElement +from twisted.web2.dav.davxml import WebDAVUnknownElement, Error +from twisted.web2.http_headers import MimeType + + def sname2qname(sname): """ Convert an sname into a qname. @@ -59,3 +67,56 @@ return "{%s}%s" % qname except TypeError: raise ValueError("Invalid qname: %r" % (qname,)) + + + + + +class ErrorDescription(WebDAVTextElement): + """ + The human-readable description of a failed precondition + """ + namespace = twisted_dav_namespace + name = "error-description" + protected = True + + +class ErrorResponse(SuperErrorResponse): + """ + A L{Response} object which contains a status code and a L{davxml.Error} + element. + Renders itself as a DAV:error XML document. + """ + error = None + + def __init__(self, code, error, description=None): + """ + @param code: a response code. + @param error: an L{davxml.WebDAVElement} identifying the error, or a + tuple C{(namespace, name)} with which to create an empty element + denoting the error. (The latter is useful in the case of + preconditions ans postconditions, not all of which have defined + XML element classes.) + @param description: an optional string that, if present, will get + wrapped in a (twisted_dav_namespace, error-description) element. + """ + if type(error) is tuple: + xml_namespace, xml_name = error + error = WebDAVUnknownElement() + error.namespace = xml_namespace + error.name = xml_name + + if description: + output = Error(error, ErrorDescription(description)).toxml() + else: + output = Error(error).toxml() + + Response.__init__(self, code=code, stream=output) + + self.headers.setHeader("content-type", MimeType("text", "xml")) + + self.error = error + + def __repr__(self): + return "<%s %s %s>" % (self.__class__.__name__, self.code, self.error.sname()) + Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/dropbox.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/dropbox.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/dropbox.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -24,9 +24,9 @@ "DropBoxChildResource", ] +from twext.web2.dav.davxml import ErrorResponse from twisted.web2 import responsecode from twisted.web2.dav import davxml -from twisted.web2.dav.http import ErrorResponse from twisted.web2.dav.resource import DAVResource, TwistedACLInheritable from twistedcaldav.customxml import calendarserver_namespace Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/freebusyurl.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/freebusyurl.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/freebusyurl.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -26,7 +26,7 @@ from twisted.python import log from twisted.web2 import responsecode from twisted.web2.dav import davxml -from twisted.web2.dav.http import ErrorResponse +from twext.web2.dav.davxml import ErrorResponse from twisted.web2.http import HTTPError from twisted.web2.http import Response from twisted.web2.http import StatusResponse Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/copymove.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/copymove.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/copymove.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -26,7 +26,7 @@ from twisted.web2 import responsecode from twisted.web2.filter.location import addLocation from twisted.web2.dav import davxml -from twisted.web2.dav.http import ErrorResponse +from twext.web2.dav.davxml import ErrorResponse from twisted.web2.dav.util import parentForURL from twisted.web2.http import StatusResponse, HTTPError Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/delete_common.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/delete_common.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/delete_common.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -21,11 +21,12 @@ __all__ = ["DeleteResource"] +from twext.web2.dav.davxml import ErrorResponse + from twisted.internet.defer import inlineCallbacks, returnValue from twisted.web2 import responsecode from twisted.web2.dav.fileop import delete -from twisted.web2.dav.http import ResponseQueue, MultiStatusResponse,\ - ErrorResponse +from twisted.web2.dav.http import ResponseQueue, MultiStatusResponse from twisted.web2.dav.util import joinURL from twisted.web2.http import HTTPError, StatusResponse Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/mkcalendar.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/mkcalendar.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/mkcalendar.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -20,11 +20,13 @@ __all__ = ["http_MKCALENDAR"] +from twext.web2.dav.davxml import ErrorResponse + from twisted.internet.defer import inlineCallbacks, returnValue from twisted.python.failure import Failure from twisted.web2 import responsecode from twisted.web2.dav import davxml -from twisted.web2.dav.http import ErrorResponse, MultiStatusResponse, PropertyStatusResponseQueue +from twisted.web2.dav.http import MultiStatusResponse, PropertyStatusResponseQueue from twisted.web2.dav.util import davXMLFromStream from twisted.web2.dav.util import parentForURL from twisted.web2.http import HTTPError, StatusResponse Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/put.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/put.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/put.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -22,7 +22,7 @@ from twisted.internet.defer import inlineCallbacks, returnValue from twisted.web2 import responsecode -from twisted.web2.dav.http import ErrorResponse +from twext.web2.dav.davxml import ErrorResponse from twisted.web2.dav.util import allDataFromStream, parentForURL from twisted.web2.http import HTTPError, StatusResponse @@ -55,7 +55,7 @@ # We must have some data at this point if calendardata is None: # Use correct DAV:error response - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="No calendar data")) storer = StoreCalendarObjectResource( request = request, Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/put_common.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/put_common.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/put_common.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -24,6 +24,8 @@ import types import uuid +from twext.web2.dav.davxml import ErrorResponse + from twisted.internet import reactor from twisted.internet.defer import Deferred, inlineCallbacks, succeed from twisted.internet.defer import returnValue @@ -34,7 +36,6 @@ from twisted.web2.dav.element.base import dav_namespace from twisted.web2.dav.element.base import PCDATAElement from twisted.web2.dav.fileop import delete -from twisted.web2.dav.http import ErrorResponse from twisted.web2.dav.resource import TwistedGETContentMD5 from twisted.web2.dav.stream import MD5StreamWrapper from twisted.web2.dav.util import joinURL, parentForURL @@ -319,13 +320,13 @@ self.calendar = Component.fromString(self.calendar) except ValueError, e: log.err(str(e)) - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="Can't parse calendar data")) # Valid calendar data check result, message = self.validCalendarDataCheck() if not result: log.err(message) - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description=message)) # Valid calendar data for CalDAV check result, message = self.validCalDAVDataCheck() @@ -674,8 +675,9 @@ try: result = self.calendar.truncateRecurrence(config.MaxInstancesForRRULE) except (ValueError, TypeError), ex: - log.err("Cannot truncate calendar resource: %s" % (ex,)) - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + msg = "Cannot truncate calendar resource: %s" % (ex,) + log.err(msg) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description=msg)) if result: self.calendardata = str(self.calendar) return result @@ -899,8 +901,9 @@ NumberOfRecurrencesWithinLimits(PCDATAElement(str(ex.max_allowed))) )) except (ValueError, TypeError), ex: - log.err("Cannot index calendar resource: %s" % (ex,)) - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + msg = "Cannot index calendar resource: %s" % (ex,) + log.err(msg) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description=msg)) content_type = self.request.headers.getHeader("content-type") if content_type is not None: @@ -969,8 +972,9 @@ returnValue(StatusResponse(responsecode.CREATED, "Resource created but immediately deleted by the server.")) else: - log.err("Invalid return status code from ImplicitScheduler: %s" % (implicit_result,)) - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + msg = "Invalid return status code from ImplicitScheduler: %s" % (implicit_result,) + log.err(msg) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description=msg)) else: is_scheduling_resource, data_changed, did_implicit_action = implicit_result @@ -1101,7 +1105,7 @@ self.rollback.Rollback() if isinstance(err, InvalidOverriddenInstanceError): - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="Invalid overridden instance")) elif isinstance(err, TooManyInstancesError): raise HTTPError(ErrorResponse( responsecode.FORBIDDEN, Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -28,12 +28,13 @@ import string +from twext.web2.dav.davxml import ErrorResponse + from twisted.internet.defer import inlineCallbacks, returnValue from twisted.web2 import responsecode from twisted.web2.http import HTTPError, StatusResponse from twisted.web2.dav import davxml from twisted.web2.dav.element.parser import lookupElement -from twisted.web2.dav.http import ErrorResponse from twisted.web2.dav.util import davXMLFromStream from twistedcaldav import caldavxml Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report_calquery.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report_calquery.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report_calquery.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -22,11 +22,13 @@ import urllib +from twext.web2.dav.davxml import ErrorResponse + from twisted.internet.defer import succeed, inlineCallbacks, returnValue from twisted.web2 import responsecode from twisted.web2.dav import davxml from twisted.web2.dav.element.base import PCDATAElement -from twisted.web2.dav.http import ErrorResponse, MultiStatusResponse +from twisted.web2.dav.http import MultiStatusResponse from twisted.web2.dav.method.report import NumberOfMatchesWithinLimits from twisted.web2.dav.util import joinURL from twisted.web2.http import HTTPError, StatusResponse @@ -71,8 +73,9 @@ query_timezone = None query_tz = calendar_query.timezone if query_tz is not None and not query_tz.valid(): - log.err("CalDAV:timezone must contain one VTIMEZONE component only: %s" % (query_tz,)) - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + msg = "CalDAV:timezone must contain one VTIMEZONE component only: %s" % (query_tz,) + log.err(msg) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description=msg)) if query_tz: filter.settimezone(query_tz) query_timezone = tuple(calendar_query.timezone.calendar().subcomponents())[0] Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report_freebusy.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report_freebusy.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report_freebusy.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -20,9 +20,10 @@ __all__ = ["report_urn_ietf_params_xml_ns_caldav_free_busy_query"] +from twext.web2.dav.davxml import ErrorResponse + from twisted.internet.defer import inlineCallbacks, returnValue from twisted.web2 import responsecode -from twisted.web2.dav.http import ErrorResponse from twisted.web2.dav import davxml from twisted.web2.dav.method.report import NumberOfMatchesWithinLimits from twisted.web2.http import HTTPError, Response, StatusResponse Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report_multiget.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report_multiget.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/method/report_multiget.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -22,10 +22,12 @@ from urllib import unquote +from twext.web2.dav.davxml import ErrorResponse + from twisted.internet.defer import inlineCallbacks, returnValue from twisted.web2 import responsecode from twisted.web2.dav import davxml -from twisted.web2.dav.http import ErrorResponse, MultiStatusResponse +from twisted.web2.dav.http import MultiStatusResponse from twisted.web2.dav.resource import AccessDeniedError from twisted.web2.dav.util import joinURL from twisted.web2.http import HTTPError, StatusResponse Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/resource.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/resource.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/resource.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -31,13 +31,14 @@ from zope.interface import implements +from twext.web2.dav.davxml import ErrorResponse + from twisted.internet import reactor from twisted.internet.defer import Deferred, maybeDeferred, succeed from twisted.internet.defer import inlineCallbacks, returnValue from twisted.web2 import responsecode from twisted.web2.dav import davxml from twisted.web2.dav.davxml import dav_namespace -from twisted.web2.dav.http import ErrorResponse from twisted.web2.dav.idav import IDAVPrincipalCollectionResource from twisted.web2.dav.resource import AccessDeniedError, DAVPrincipalCollectionResource from twisted.web2.dav.resource import TwistedACLInheritable @@ -299,7 +300,8 @@ if not property.valid(): raise HTTPError(ErrorResponse( responsecode.CONFLICT, - (caldav_namespace, "valid-calendar-data") + (caldav_namespace, "valid-calendar-data"), + description="Invalid property" )) elif property.qname() == (caldav_namespace, "schedule-calendar-transp"): Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/schedule.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/schedule.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/schedule.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -24,10 +24,11 @@ "IScheduleInboxResource", ] +from twext.web2.dav.davxml import ErrorResponse + from twisted.internet.defer import inlineCallbacks, returnValue from twisted.web2 import responsecode from twisted.web2.dav import davxml -from twisted.web2.dav.http import ErrorResponse from twisted.web2.dav.util import joinURL, normalizeURL from twisted.web2.http import HTTPError from twisted.web2.http import Response @@ -147,7 +148,8 @@ if not property.valid(): raise HTTPError(ErrorResponse( responsecode.CONFLICT, - (caldav_namespace, "valid-calendar-data") + (caldav_namespace, "valid-calendar-data"), + description="Invalid property" )) elif property.qname() == (caldav_namespace, "calendar-free-busy-set"): Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/caldav.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/caldav.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/caldav.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -21,11 +21,12 @@ except ImportError: from md5 import new as md5 +from twext.web2.dav.davxml import ErrorResponse + from twisted.internet.defer import inlineCallbacks, returnValue from twisted.python.failure import Failure from twisted.web2 import responsecode from twisted.web2.dav import davxml -from twisted.web2.dav.http import ErrorResponse from twisted.web2.dav.resource import AccessDeniedError from twisted.web2.dav.util import joinURL from twisted.web2.http import HTTPError Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/imip.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/imip.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/imip.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -18,8 +18,9 @@ from twisted.python.failure import Failure +from twext.web2.dav.davxml import ErrorResponse + from twisted.web2 import responsecode -from twisted.web2.dav.http import ErrorResponse from twisted.web2.http import HTTPError from twisted.web import client Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/implicit.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/implicit.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/implicit.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -14,10 +14,11 @@ # limitations under the License. ## +from twext.web2.dav.davxml import ErrorResponse + from twisted.internet.defer import inlineCallbacks, returnValue, succeed from twisted.web2 import responsecode from twisted.web2.dav import davxml -from twisted.web2.dav.http import ErrorResponse from twisted.web2.dav.util import joinURL from twisted.web2.dav.util import parentForURL from twisted.web2.http import HTTPError Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/ischedule.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/ischedule.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/ischedule.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -14,6 +14,8 @@ # limitations under the License. ## +from twext.web2.dav.davxml import ErrorResponse + from twisted.internet.defer import inlineCallbacks, DeferredList from twisted.internet.protocol import ClientCreator @@ -22,7 +24,6 @@ from twisted.web2 import responsecode from twisted.web2.client.http import ClientRequest from twisted.web2.client.http import HTTPClientProtocol -from twisted.web2.dav.http import ErrorResponse from twisted.web2.dav.util import davXMLFromStream from twisted.web2.http import HTTPError from twisted.web2.http_headers import Headers Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/scheduler.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/scheduler.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/scheduling/scheduler.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -14,13 +14,15 @@ # limitations under the License. ## +from twext.web2.dav.davxml import ErrorResponse + from twisted.internet.defer import inlineCallbacks, returnValue from twisted.python.failure import Failure from twisted.web2 import responsecode from twisted.web2.dav import davxml -from twisted.web2.dav.http import ErrorResponse, errorForFailure, messageForFailure, statusForFailure +from twisted.web2.dav.http import errorForFailure, messageForFailure, statusForFailure from twisted.web2.http import HTTPError, Response, StatusResponse from twisted.web2.http_headers import MimeType @@ -229,7 +231,7 @@ except: # FIXME: Bare except log.err("Error while handling %s: %s" % (self.method, Failure(),)) - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="Can't parse calendar data")) def checkAuthorization(self): raise NotImplementedError @@ -255,17 +257,17 @@ self.calendar.validCalendarForCalDAV() except ValueError, e: log.err("%s request calendar component is not valid:%s %s" % (self.method, e, self.calendar,)) - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="Calendar component is not valid")) # Must have a METHOD if not self.calendar.isValidMethod(): log.err("%s request must have valid METHOD property in calendar component: %s" % (self.method, self.calendar,)) - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="Must have valid METHOD property")) # Verify iTIP behavior if not self.calendar.isValidITIP(): log.err("%s request must have a calendar component that satisfies iTIP requirements: %s" % (self.method, self.calendar,)) - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="Must have a calendar component that satisfies iTIP requirements")) # X-CALENDARSERVER-ACCESS is not allowed in Outbox POSTs if self.calendar.hasProperty(Component.ACCESS_PROPERTY): @@ -279,12 +281,12 @@ vfreebusies = [v for v in self.calendar.subcomponents() if v.name() == "VFREEBUSY"] if len(vfreebusies) != 1: log.err("iTIP data is not valid for a VFREEBUSY request: %s" % (self.calendar,)) - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="iTIP data is not valid for a VFREEBUSY request")) dtstart = vfreebusies[0].getStartDateUTC() dtend = vfreebusies[0].getEndDateUTC() if dtstart is None or dtend is None: log.err("VFREEBUSY start/end not valid: %s" % (self.calendar,)) - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="VFREEBUSY start/end not valid")) self.timeRange = TimeRange(start="20000101T000000Z", end="20070102T000000Z") self.timeRange.start = dtstart self.timeRange.end = dtend @@ -576,7 +578,7 @@ else: log.err("Unknown iTIP METHOD for security checks: %s" % (self.calendar.propertyValue("METHOD"),)) - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="Unknown iTIP METHOD for security checks")) def finalChecks(self): """ @@ -778,8 +780,9 @@ yield self.checkAttendeeAsOriginator() else: - log.err("Unknown iTIP METHOD for security checks: %s" % (self.calendar.propertyValue("METHOD"),)) - raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"))) + msg = "Unknown iTIP METHOD for security checks: %s" % (self.calendar.propertyValue("METHOD"),) + log.err(msg) + raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description=msg)) class IMIPScheduler(Scheduler): Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/static.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/static.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/static.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -39,13 +39,14 @@ import errno from urlparse import urlsplit +from twext.web2.dav.davxml import ErrorResponse + from twisted.internet.defer import fail, succeed, inlineCallbacks, returnValue, maybeDeferred from twisted.python.failure import Failure from twisted.web2 import responsecode, http, http_headers from twisted.web2.http import HTTPError, StatusResponse from twisted.web2.dav import davxml from twisted.web2.dav.fileop import mkcollection, rmdir -from twisted.web2.dav.http import ErrorResponse from twisted.web2.dav.idav import IDAVResource from twisted.web2.dav.noneprops import NonePropertyStore from twisted.web2.dav.resource import AccessDeniedError Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/timezoneservice.py =================================================================== --- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/timezoneservice.py 2009-05-15 23:15:45 UTC (rev 4285) +++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/timezoneservice.py 2009-05-15 23:16:12 UTC (rev 4286) @@ -22,9 +22,10 @@ "TimezoneServiceResource", ] +from twext.web2.dav.davxml import ErrorResponse + from twisted.web2 import responsecode from twisted.web2.dav import davxml -from twisted.web2.dav.http import ErrorResponse from twisted.web2.http import HTTPError from twisted.web2.http import Response from twisted.web2.http_headers import MimeType
participants (1)
-
source_changes@macosforge.org