Mercurial > p > roundup > code
diff roundup/cgi/client.py @ 3736:a2d22d0de0bc
WSGI support via roundup.cgi.wsgi_handler
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Thu, 09 Nov 2006 00:36:21 +0000 |
| parents | ff9f4ca42454 |
| children | b8f52d030f1a |
line wrap: on
line diff
--- a/roundup/cgi/client.py Fri Nov 03 05:43:00 2006 +0000 +++ b/roundup/cgi/client.py Thu Nov 09 00:36:21 2006 +0000 @@ -1,4 +1,4 @@ -# $Id: client.py,v 1.227 2006-08-29 04:20:50 richard Exp $ +# $Id: client.py,v 1.228 2006-11-09 00:36:21 richard Exp $ """WWW request handler (also used in the stand-alone server). """ @@ -278,7 +278,7 @@ # the headers, otherwise the headers have been set before the # exception was raised if url: - self.additional_headers['Location'] = url + self.additional_headers['Location'] = str(url) self.response_code = 302 self.write_html('Redirecting to <a href="%s">%s</a>'%(url, url)) except SendFile, designator: @@ -286,15 +286,15 @@ self.serve_file(designator) except NotModified: # send the 304 response - self.request.send_response(304) - self.request.end_headers() + self.response_code = 304 + self.header() except SendStaticFile, file: try: self.serve_static_file(str(file)) except NotModified: # send the 304 response - self.request.send_response(304) - self.request.end_headers() + self.response_code = 304 + self.header() except Unauthorised, message: # users may always see the front page self.classname = self.nodeid = None @@ -693,11 +693,18 @@ def _serve_file(self, lmt, mime_type, content): ''' guts of serve_file() and serve_static_file() ''' + # spit out headers + self.additional_headers['Content-Type'] = mime_type + self.additional_headers['Content-Length'] = str(len(content)) + lmt = rfc822.formatdate(lmt) + self.additional_headers['Last-Modified'] = lmt + ims = None # see if there's an if-modified-since... - if hasattr(self.request, 'headers'): - ims = self.request.headers.getheader('if-modified-since') - elif self.env.has_key('HTTP_IF_MODIFIED_SINCE'): + # XXX see which interfaces set this + #if hasattr(self.request, 'headers'): + #ims = self.request.headers.getheader('if-modified-since') + if self.env.has_key('HTTP_IF_MODIFIED_SINCE'): # cgi will put the header in the env var ims = self.env['HTTP_IF_MODIFIED_SINCE'] if ims: @@ -706,11 +713,6 @@ if lmtt <= ims: raise NotModified - # spit out headers - self.additional_headers['Content-Type'] = mime_type - self.additional_headers['Content-Length'] = len(content) - lmt = rfc822.formatdate(lmt) - self.additional_headers['Last-Modified'] = lmt self.write(content) def renderContext(self): @@ -870,15 +872,17 @@ if headers.get('Content-Type', 'text/html') == 'text/html': headers['Content-Type'] = 'text/html; charset=utf-8' - self.request.send_response(response) - for entry in headers.items(): - self.request.send_header(*entry) + + headers = headers.items() + for ((path, name), (value, expire)) in self.add_cookies.items(): cookie = "%s=%s; Path=%s;"%(name, value, path) if expire is not None: cookie += " expires=%s;"%Cookie._getdate(expire) - self.request.send_header('Set-Cookie', cookie) - self.request.end_headers() + headers.append(('Set-Cookie', cookie)) + + self.request.start_response(headers, response) + self.headers_done = 1 if self.debug: self.headers_sent = headers
