[Zope-dev] SVN: zope.publisher/trunk/ Fixed LP #322486: setStatus() now allows any int()-able status value.
Tres Seaver
tseaver at palladion.com
Fri Jan 30 14:15:17 EST 2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Shane Hathaway wrote:
> Log message for revision 95601:
> Fixed LP #322486: setStatus() now allows any int()-able status value.
Yay!
> Modified: zope.publisher/trunk/src/zope/publisher/http.py
> ===================================================================
> --- zope.publisher/trunk/src/zope/publisher/http.py 2009-01-30 18:31:20 UTC (rev 95600)
> +++ zope.publisher/trunk/src/zope/publisher/http.py 2009-01-30 18:45:20 UTC (rev 95601)
> @@ -647,12 +647,16 @@
> self.authUser = '-'
>
> def setStatus(self, status, reason=None):
> - 'See IHTTPResponse'
> + """See IHTTPResponse"""
> if status is None:
> status = 200
> - else:
> - if type(status) in StringTypes:
> + try:
> + status = int(status)
> + except ValueError:
> + if isinstance(status, basestring):
> status = status.lower()
> + # Use a standard status code, falling back to 500 for
> + # nonstandard values (such as "valueerror")
> status = status_codes.get(status, 500)
> self._status = status
>
> Modified: zope.publisher/trunk/src/zope/publisher/interfaces/http.py
> ===================================================================
> --- zope.publisher/trunk/src/zope/publisher/interfaces/http.py 2009-01-30 18:31:20 UTC (rev 95600)
> +++ zope.publisher/trunk/src/zope/publisher/interfaces/http.py 2009-01-30 18:45:20 UTC (rev 95601)
> @@ -333,12 +333,17 @@
> def setStatus(status, reason=None):
> """Sets the HTTP status code of the response
>
> - The argument may either be an integer or a string from { OK,
> - Created, Accepted, NoContent, MovedPermanently,
> - MovedTemporarily, NotModified, BadRequest, Unauthorized,
> - Forbidden, NotFound, InternalError, NotImplemented,
> - BadGateway, ServiceUnavailable } that will be converted to the
> - correct integer value.
> + The status parameter must be either an integer, a value
> + that can be converted to an integer using the int() function,
> + or one of the standard status messages listed in the status_codes
> + dict of the zope.publisher.http module (including "OK", "NotFound",
> + and so on). If the parameter is some other value, the status will
> + be set to 500.
> +
> + The reason parameter is a short message to be sent with the status
> + code to the client. If reason is not provided, a standard
> + reason will be supplied, falling back to "Unknown" for unregistered
> + status codes.
> """
Is there any reason to hide the KeyError behind a 500, rather than
letting it propagate to the application? In this implementation, we
lose the information about the bad 'status' value.
Tres.
- --
===================================================================
Tres Seaver +1 540-429-0999 tseaver at palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFJg1HF+gerLs4ltQ4RAo/+AJ9cbU8e7onPJwb7IzTI0wIIR8LbXgCcCsfb
X9DVTXPucIKiCD+ex/ypfKs=
=Snto
-----END PGP SIGNATURE-----
More information about the Zope-Dev
mailing list