[CalendarServer-changes] [8088] CalendarServer/branches/users/glyph/other-html/twext/web2/error.py
source_changes at macosforge.org
source_changes at macosforge.org
Tue Sep 13 12:11:54 PDT 2011
Revision: 8088
http://trac.macosforge.org/projects/calendarserver/changeset/8088
Author: glyph at apple.com
Date: 2011-09-13 12:11:54 -0700 (Tue, 13 Sep 2011)
Log Message:
-----------
wrap lines, add some docs
Modified Paths:
--------------
CalendarServer/branches/users/glyph/other-html/twext/web2/error.py
Modified: CalendarServer/branches/users/glyph/other-html/twext/web2/error.py
===================================================================
--- CalendarServer/branches/users/glyph/other-html/twext/web2/error.py 2011-09-13 19:11:47 UTC (rev 8087)
+++ CalendarServer/branches/users/glyph/other-html/twext/web2/error.py 2011-09-13 19:11:54 UTC (rev 8088)
@@ -45,7 +45,7 @@
# 300 - Should include entity with choices
# 301 -
# 304 - Must include Date, ETag, Content-Location, Expires, Cache-Control, Vary.
-#
+
# 401 - Must include WWW-Authenticate.
# 405 - Must include Allow.
# 406 - Should include entity describing allowable characteristics
@@ -53,46 +53,93 @@
# 413 - May include Retry-After
# 416 - Should include Content-Range
# 503 - Should include Retry-After
+
ERROR_MESSAGES = {
# 300
# no MULTIPLE_CHOICES
- MOVED_PERMANENTLY: 'The document has permanently moved <a>here<t:attr name="href"><t:slot name="location" /></t:attr></a>.',
- FOUND: 'The document has temporarily moved <a>here<t:attr name="href"><t:slot name="location" /></t:attr></a>.',
- SEE_OTHER: 'The results are available <a>here<t:attr name="href"><t:slot name="location" /></t:attr></a>.',
+ MOVED_PERMANENTLY:
+ 'The document has permanently moved <a>here<t:attr name="href">'
+ '<t:slot name="location" /></t:attr></a>.',
+ FOUND:
+ 'The document has temporarily moved <a>here<t:attr name="href">'
+ '<t:slot name="location" /></t:attr></a>.',
+ SEE_OTHER:
+ 'The results are available <a>here<t:attr name="href">'
+ '<t:slot name="location" /></t:attr></a>.',
# no NOT_MODIFIED
- USE_PROXY: 'Access to this resource must be through the proxy <t:slot name="location" />.',
+ USE_PROXY:
+ 'Access to this resource must be through the proxy '
+ '<t:slot name="location" />.',
# 306 unused
- TEMPORARY_REDIRECT: 'The document has temporarily moved <a>here<t:attr name="href"><t:slot name="location" /></t:attr></a>.',
+ TEMPORARY_REDIRECT:
+ 'The document has temporarily moved <a><t:attr name="href">'
+ '<t:slot name="location" /></t:attr>here</a>.',
# 400
- BAD_REQUEST: 'Your browser sent an invalid request.',
- UNAUTHORIZED: 'You are not authorized to view the resource at <t:slot name="uri" />. Perhaps you entered a wrong password, or perhaps your browser doesn\'t support authentication.',
- PAYMENT_REQUIRED: 'Payment Required (useful result code, this...).',
- FORBIDDEN: 'You don\'t have permission to access <t:slot name="uri" />.',
- NOT_FOUND: 'The resource <t:slot name="uri" /> cannot be found.',
- NOT_ALLOWED: 'The requested method <t:slot name="method" /> is not supported by <t:slot name="uri" />.',
- NOT_ACCEPTABLE: 'No representation of <t:slot name="uri" /> that is acceptable to your client could be found.',
- PROXY_AUTH_REQUIRED: 'You are not authorized to view the resource at <t:slot name="uri" />. Perhaps you entered a wrong password, or perhaps your browser doesn\'t support authentication.',
- REQUEST_TIMEOUT: 'Server timed out waiting for your client to finish sending the HTTP request.',
- CONFLICT: 'Conflict (?)',
- GONE: 'The resource <t:slot name="uri" /> has been permanently removed.',
- LENGTH_REQUIRED: 'The resource <t:slot name="uri" /> requires a Content-Length header.',
- PRECONDITION_FAILED: 'A precondition evaluated to false.',
- REQUEST_ENTITY_TOO_LARGE: 'The provided request entity data is too longer than the maximum for the method <t:slot name="method" /> at <t:slot name="uri" />.',
- REQUEST_URI_TOO_LONG: 'The request URL is longer than the maximum on this server.',
- UNSUPPORTED_MEDIA_TYPE: 'The provided request data has a format not understood by the resource at <t:slot name="uri" />.',
- REQUESTED_RANGE_NOT_SATISFIABLE: 'None of the ranges given in the Range request header are satisfiable by the resource <t:slot name="uri" />.',
- EXPECTATION_FAILED: 'The server does support one of the expectations given in the Expect header.',
+ BAD_REQUEST:
+ 'Your browser sent an invalid request.',
+ UNAUTHORIZED:
+ 'You are not authorized to view the resource at <t:slot name="uri" />. '
+ "Perhaps you entered a wrong password, or perhaps your browser doesn't "
+ 'support authentication.',
+ PAYMENT_REQUIRED:
+ 'Payment Required (useful result code, this...).',
+ FORBIDDEN:
+ 'You don\'t have permission to access <t:slot name="uri" />.',
+ NOT_FOUND:
+ 'The resource <t:slot name="uri" /> cannot be found.',
+ NOT_ALLOWED:
+ 'The requested method <t:slot name="method" /> is not supported by '
+ '<t:slot name="uri" />.',
+ NOT_ACCEPTABLE:
+ 'No representation of <t:slot name="uri" /> that is acceptable to your '
+ 'client could be found.',
+ PROXY_AUTH_REQUIRED:
+ 'You are not authorized to view the resource at <t:slot name="uri" />. '
+ 'Perhaps you entered a wrong password, or perhaps your browser doesn\'t '
+ 'support authentication.',
+ REQUEST_TIMEOUT:
+ 'Server timed out waiting for your client to finish sending the request.',
+ CONFLICT:
+ 'Conflict (?)',
+ GONE:
+ 'The resource <t:slot name="uri" /> has been permanently removed.',
+ LENGTH_REQUIRED:
+ 'The resource <t:slot name="uri" /> requires a Content-Length header.',
+ PRECONDITION_FAILED:
+ 'A precondition evaluated to false.',
+ REQUEST_ENTITY_TOO_LARGE:
+ 'The provided request entity data is too longer than the maximum for '
+ 'the method <t:slot name="method" /> at <t:slot name="uri" />.',
+ REQUEST_URI_TOO_LONG:
+ 'The request URL is longer than the maximum on this server.',
+ UNSUPPORTED_MEDIA_TYPE:
+ 'The provided request data has a format not understood by the resource '
+ 'at <t:slot name="uri" />.',
+ REQUESTED_RANGE_NOT_SATISFIABLE:
+ 'None of the ranges given in the Range request header are satisfiable by '
+ 'the resource <t:slot name="uri" />.',
+ EXPECTATION_FAILED:
+ 'The server does support one of the expectations given in the Expect '
+ 'header.',
# 500
- INTERNAL_SERVER_ERROR: 'An internal error occurred trying to process your request. Sorry.',
- NOT_IMPLEMENTED: 'Some functionality requested is not implemented on this server.',
- BAD_GATEWAY: 'An upstream server returned an invalid response.',
- SERVICE_UNAVAILABLE: 'This server cannot service your request becaues it is overloaded.',
- GATEWAY_TIMEOUT: 'An upstream server is not responding.',
- HTTP_VERSION_NOT_SUPPORTED: 'HTTP Version not supported.',
- INSUFFICIENT_STORAGE_SPACE: 'There is insufficient storage space available to perform that request.',
- NOT_EXTENDED: 'This server does not support the a mandatory extension requested.'
+ INTERNAL_SERVER_ERROR:
+ 'An internal error occurred trying to process your request. Sorry.',
+ NOT_IMPLEMENTED:
+ 'Some functionality requested is not implemented on this server.',
+ BAD_GATEWAY:
+ 'An upstream server returned an invalid response.',
+ SERVICE_UNAVAILABLE:
+ 'This server cannot service your request becaues it is overloaded.',
+ GATEWAY_TIMEOUT:
+ 'An upstream server is not responding.',
+ HTTP_VERSION_NOT_SUPPORTED:
+ 'HTTP Version not supported.',
+ INSUFFICIENT_STORAGE_SPACE:
+ 'There is insufficient storage space available to perform that request.',
+ NOT_EXTENDED:
+ 'This server does not support the a mandatory extension requested.'
}
@@ -147,11 +194,17 @@
+def defaultErrorHandler(request, response):
+ """
+ Handle errors which do not have any stream (i.e. output) associated with
+ them, so that users will see a nice message in their browser.
-def defaultErrorHandler(request, response):
+ This is used as a response filter in L{twext.web2.server.Request}.
+ """
if response.stream is not None:
# Already got an error message
return response
+
if response.code < 300:
# We only do error messages
return response
@@ -166,22 +219,26 @@
'location': response.headers.getHeader('location'),
'method': request.method,
}
+
data = []
error = []
+
(flattenString(request, DefaultErrorElement(request, response))
.addCallbacks(data.append, error.append))
+
# No deferreds from our renderers above, so this has always already fired.
if data:
subtype = 'html'
body = data[0]
else:
subtype = 'error'
- data = 'Error in default error handler:\n' + error[0].getTraceback()
- ctype = http_headers.MimeType('text', subtype,
- {'charset':'utf-8'})
+ body = 'Error in default error handler:\n' + error[0].getTraceback()
+
+ ctype = http_headers.MimeType('text', subtype, {'charset':'utf-8'})
response.headers.setHeader("content-type", ctype)
response.stream = stream.MemoryStream(body)
return response
+
defaultErrorHandler.handleErrors = True
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110913/f34c3d3f/attachment.html>
More information about the calendarserver-changes
mailing list