[CalendarServer-changes] [4274] CalendarServer/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Fri May 15 13:40:12 PDT 2009
Revision: 4274
http://trac.macosforge.org/projects/calendarserver/changeset/4274
Author: sagen at apple.com
Date: 2009-05-15 13:40:10 -0700 (Fri, 15 May 2009)
Log Message:
-----------
Adds a new ErrorResponse class which accepts a description keyword arg
Modified Paths:
--------------
CalendarServer/trunk/twext/web2/dav/davxml.py
CalendarServer/trunk/twistedcaldav/dropbox.py
CalendarServer/trunk/twistedcaldav/freebusyurl.py
CalendarServer/trunk/twistedcaldav/method/copymove.py
CalendarServer/trunk/twistedcaldav/method/delete_common.py
CalendarServer/trunk/twistedcaldav/method/mkcalendar.py
CalendarServer/trunk/twistedcaldav/method/put.py
CalendarServer/trunk/twistedcaldav/method/put_common.py
CalendarServer/trunk/twistedcaldav/method/report.py
CalendarServer/trunk/twistedcaldav/method/report_calquery.py
CalendarServer/trunk/twistedcaldav/method/report_freebusy.py
CalendarServer/trunk/twistedcaldav/method/report_multiget.py
CalendarServer/trunk/twistedcaldav/resource.py
CalendarServer/trunk/twistedcaldav/schedule.py
CalendarServer/trunk/twistedcaldav/scheduling/caldav.py
CalendarServer/trunk/twistedcaldav/scheduling/imip.py
CalendarServer/trunk/twistedcaldav/scheduling/implicit.py
CalendarServer/trunk/twistedcaldav/scheduling/ischedule.py
CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py
CalendarServer/trunk/twistedcaldav/static.py
CalendarServer/trunk/twistedcaldav/timezoneservice.py
Modified: CalendarServer/trunk/twext/web2/dav/davxml.py
===================================================================
--- CalendarServer/trunk/twext/web2/dav/davxml.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twext/web2/dav/davxml.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/dropbox.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/dropbox.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/dropbox.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/freebusyurl.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/freebusyurl.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/freebusyurl.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/method/copymove.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/copymove.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/method/copymove.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/method/delete_common.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/delete_common.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/method/delete_common.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/method/mkcalendar.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/mkcalendar.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/method/mkcalendar.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/method/put.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/put.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/method/put.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/method/put_common.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/put_common.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/method/put_common.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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
Modified: CalendarServer/trunk/twistedcaldav/method/report.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/report.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/method/report.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/method/report_calquery.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/report_calquery.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/method/report_calquery.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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
Modified: CalendarServer/trunk/twistedcaldav/method/report_freebusy.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/report_freebusy.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/method/report_freebusy.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/method/report_multiget.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/report_multiget.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/method/report_multiget.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/resource.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/resource.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/resource.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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
Modified: CalendarServer/trunk/twistedcaldav/schedule.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/schedule.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/schedule.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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
Modified: CalendarServer/trunk/twistedcaldav/scheduling/caldav.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/caldav.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/scheduling/caldav.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/scheduling/imip.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/imip.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/scheduling/imip.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/scheduling/implicit.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/implicit.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/scheduling/implicit.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/scheduling/ischedule.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/ischedule.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/scheduling/ischedule.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/scheduling/scheduler.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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
Modified: CalendarServer/trunk/twistedcaldav/static.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/static.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/static.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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/trunk/twistedcaldav/timezoneservice.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/timezoneservice.py 2009-05-15 16:51:17 UTC (rev 4273)
+++ CalendarServer/trunk/twistedcaldav/timezoneservice.py 2009-05-15 20:40:10 UTC (rev 4274)
@@ -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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090515/4367281f/attachment-0001.html>
More information about the calendarserver-changes
mailing list