[Zope-Checkins]
SVN: Zope/branches/regebro-wsgi_refactor/lib/python/Z Cleanup.
Lennart Regebro
regebro at gmail.com
Wed Apr 26 11:22:50 EDT 2006
Log message for revision 67621:
Cleanup.
Changed:
U Zope/branches/regebro-wsgi_refactor/lib/python/ZPublisher/Publish.py
U Zope/branches/regebro-wsgi_refactor/lib/python/ZServer/HTTPServer.py
U Zope/branches/regebro-wsgi_refactor/lib/python/ZServer/PubCore/ZServerPublisher.py
-=-
Modified: Zope/branches/regebro-wsgi_refactor/lib/python/ZPublisher/Publish.py
===================================================================
--- Zope/branches/regebro-wsgi_refactor/lib/python/ZPublisher/Publish.py 2006-04-26 14:53:02 UTC (rev 67620)
+++ Zope/branches/regebro-wsgi_refactor/lib/python/ZPublisher/Publish.py 2006-04-26 15:22:50 UTC (rev 67621)
@@ -21,6 +21,8 @@
from maybe_lock import allocate_lock
from mapply import mapply
from zExceptions import Redirect
+from ZServer.HTTPResponse import ZServerHTTPResponse
+from cStringIO import StringIO
class Retry(Exception):
"""Raise this to retry a request
@@ -172,28 +174,21 @@
from ZServer.HTTPResponse import make_response
class WSGIPublisherApplication(object):
- """A WSGI application implementation for the zope publisher
+ """A WSGI application implementation for the zope2 publisher
Instances of this class can be used as a WSGI application object.
-
- The class relies on a properly initialized request factory.
"""
#implements(interfaces.IWSGIApplication)
- def __init__(self, response):
- self.response = response
def __call__(self, environ, start_response):
"""See zope.app.wsgi.interfaces.IWSGIApplication"""
- from ZServer.HTTPResponse import ZServerHTTPResponse, is_proxying_match, proxying_connection_re
- from ZServer.medusa import http_server
- from cStringIO import StringIO
response = ZServerHTTPResponse(stdout=environ['wsgi.output'], stderr=StringIO())
response._http_version = environ['SERVER_PROTOCOL'].split('/')[1]
response._http_connection = environ['CONNECTION_TYPE']
response._server_version = environ['SERVER_SOFTWARE']
- request = HTTPRequest(environ['wsgi.input'], environ, response)
+ request = Request(environ['wsgi.input'], environ, response)
# Let's support post-mortem debugging
handle_errors = environ.get('wsgi.handleErrors', True)
@@ -231,10 +226,9 @@
def publish_module_standard(module_name,
stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr,
environ=os.environ, debug=0, request=None, response=None):
- # The WSGI way!
+ # The WSGI way!
def wsgi_start_response(status,response_headers,exc_info=None):
- # I don't understand what to do here. Start writing? At what?
return fakeWrite
must_die=0
@@ -244,7 +238,9 @@
env = environ.copy()
else:
env = request
-
+
+ if not env.has_key('CONNECTION_TYPE'):
+ print env
env['wsgi.input'] = sys.stdin
env['wsgi.errors'] = sys.stderr
env['wsgi.version'] = (1,0)
@@ -255,7 +251,7 @@
if not env.has_key('wsgi.output'):
env['wsgi.output'] = stdout
- application = WSGIPublisherApplication(None)
+ application = WSGIPublisherApplication()
body = application(env, wsgi_start_response)
env['wsgi.output'].write(body[0])
env['wsgi.output'].close()
@@ -280,72 +276,6 @@
return status
-
-def publish_module_standard_old(module_name,
- stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr,
- environ=os.environ, debug=0, request=None, response=None):
- must_die=0
- status=200
- after_list=[None]
- try:
- try:
- if response is None:
- response=Response(stdout=stdout, stderr=stderr)
- else:
- stdout=response.stdout
-
- if request is None:
- request=Request(stdin, environ, response)
-
- # make sure that the request we hand over has the
- # default layer/skin set on it; subsequent code that
- # wants to look up views will likely depend on it
- setDefaultSkin(request)
-
- response = publish(request, module_name, after_list, debug=debug)
- except SystemExit, v:
- must_die=sys.exc_info()
- request.response.exception(must_die)
- except ImportError, v:
- if isinstance(v, tuple) and len(v)==3: must_die=v
- elif hasattr(sys, 'exc_info'): must_die=sys.exc_info()
- else: must_die = SystemExit, v, sys.exc_info()[2]
- request.response.exception(1, v)
- except:
- request.response.exception()
- status=response.getStatus()
-
- if response:
- outputBody=getattr(response, 'outputBody', None)
- if outputBody is not None:
- outputBody()
- else:
- response=str(response)
- if response: stdout.write(response)
-
- # The module defined a post-access function, call it
- if after_list[0] is not None: after_list[0]()
-
- finally:
- if request is not None: request.close()
-
- if must_die:
- # Try to turn exception value into an exit code.
- try:
- if hasattr(must_die[1], 'code'):
- code = must_die[1].code
- else: code = int(must_die[1])
- except:
- code = must_die[1] and 1 or 0
- if hasattr(request.response, '_requestShutdown'):
- request.response._requestShutdown(code)
-
- try: raise must_die[0], must_die[1], must_die[2]
- finally: must_die=None
-
- return status
-
-
_l=allocate_lock()
def get_module_info(module_name, modules={},
acquire=_l.acquire,
Modified: Zope/branches/regebro-wsgi_refactor/lib/python/ZServer/HTTPServer.py
===================================================================
--- Zope/branches/regebro-wsgi_refactor/lib/python/ZServer/HTTPServer.py 2006-04-26 14:53:02 UTC (rev 67620)
+++ Zope/branches/regebro-wsgi_refactor/lib/python/ZServer/HTTPServer.py 2006-04-26 15:22:50 UTC (rev 67621)
@@ -43,6 +43,7 @@
from PubCore import handle
from HTTPResponse import make_response
+from HTTPResponse import ChannelPipe, is_proxying_match, proxying_connection_re
from ZPublisher.HTTPRequest import HTTPRequest
from App.config import getConfiguration
@@ -261,9 +262,7 @@
s=0
DebugLogger.log('I', id(request), s)
- #import pdb;pdb.set_trace()
env=self.get_environment(request)
- from HTTPResponse import ChannelPipe, is_proxying_match, proxying_connection_re
env['wsgi.output'] = ChannelPipe(request)
version = request.version
if version=='1.0' and is_proxying_match(request.request):
@@ -276,14 +275,9 @@
connection_re = CONNECTION
env['http_connection'] = get_header(connection_re,
- request.header).lower()
+ request.header).lower()
env['server_version']=request.channel.server.SERVER_IDENT
-
- #zresponse=make_response(request,env)
- #if self._force_connection_close:
- #zresponse._http_connection = 'close'
- #zrequest=HTTPRequest(sin, env, zresponse)
request.channel.current_request=None
request.channel.queue.append((self.module_name, env, None))
request.channel.work()
Modified: Zope/branches/regebro-wsgi_refactor/lib/python/ZServer/PubCore/ZServerPublisher.py
===================================================================
--- Zope/branches/regebro-wsgi_refactor/lib/python/ZServer/PubCore/ZServerPublisher.py 2006-04-26 14:53:02 UTC (rev 67620)
+++ Zope/branches/regebro-wsgi_refactor/lib/python/ZServer/PubCore/ZServerPublisher.py 2006-04-26 15:22:50 UTC (rev 67621)
@@ -22,5 +22,4 @@
request=request,
response=response)
finally:
- #response._finish()
request=response=None
More information about the Zope-Checkins
mailing list