[Checkins] SVN: lovely.zetup/trunk/ - made the publication request factory more generic (to accept jsonrpc requests)
Juergen Kartnaller
juergen at kartnaller.at
Fri Nov 14 09:02:25 EST 2008
Log message for revision 92922:
- made the publication request factory more generic (to accept jsonrpc requests)
Changed:
U lovely.zetup/trunk/CHANGES.txt
U lovely.zetup/trunk/setup.py
U lovely.zetup/trunk/src/lovely/zetup/app.py
U lovely.zetup/trunk/src/lovely/zetup/factory.py
-=-
Modified: lovely.zetup/trunk/CHANGES.txt
===================================================================
--- lovely.zetup/trunk/CHANGES.txt 2008-11-14 13:04:30 UTC (rev 92921)
+++ lovely.zetup/trunk/CHANGES.txt 2008-11-14 14:02:24 UTC (rev 92922)
@@ -2,6 +2,11 @@
Changes in lovely.zetup
=======================
+2008/11/14 0.1.0a1
+==================
+
+- made the publication request factory more generic (to accept jsonrpc requests)
+
0.0.1a1
=======
Modified: lovely.zetup/trunk/setup.py
===================================================================
--- lovely.zetup/trunk/setup.py 2008-11-14 13:04:30 UTC (rev 92921)
+++ lovely.zetup/trunk/setup.py 2008-11-14 14:02:24 UTC (rev 92922)
@@ -3,7 +3,7 @@
setup(
name="lovely.zetup",
- version="0.0.1a1",
+ version="0.1.0a1",
zip_safe = False,
include_package_data = True,
packages = find_packages('src'),
Modified: lovely.zetup/trunk/src/lovely/zetup/app.py
===================================================================
--- lovely.zetup/trunk/src/lovely/zetup/app.py 2008-11-14 13:04:30 UTC (rev 92921)
+++ lovely.zetup/trunk/src/lovely/zetup/app.py 2008-11-14 14:02:24 UTC (rev 92922)
@@ -16,17 +16,21 @@
"""
__docformat__ = 'restructuredtext'
+import xmlrpclib
+
+from zope import interface
+
+import zope.publisher.xmlrpc
from zope.app.wsgi import WSGIPublisherApplication
from zope.app.publication.interfaces import IPublicationRequestFactory
from zope.publisher.browser import BrowserRequest
+from zope.app.publication.httpfactory import chooseClasses
from publication import NoZODBPublication
-from zope import interface
from zope.publisher.interfaces.browser import IBrowserRequest
from zope.publisher.browser import setDefaultSkin
from zope.publisher.publish import publish
-import zope.publisher.xmlrpc
-import xmlrpclib
+
class XMLRPCRequest(zope.publisher.xmlrpc.XMLRPCRequest):
def processInputs(self):
@@ -46,21 +50,24 @@
interface.implements(IPublicationRequestFactory)
def __init__(self):
+
"""See `zope.app.publication.interfaces.IPublicationRequestFactory`"""
self._publication_cache = {}
self._publication = NoZODBPublication()
def __call__(self, input_stream, env):
+
"""See
`zope.app.publication.interfaces.IPublicationRequestFactory`"""
method = env.get('REQUEST_METHOD', 'GET').upper()
- contentType = env.get('CONTENT_TYPE', '')
- if method=='POST' and contentType == 'text/xml':
- klass = XMLRPCRequest
- else:
- klass = BrowserRequest
- request = klass(input_stream, env)
- request.setPublication(self._publication)
+ requestClass, publicationClass = chooseClasses(method, env)
+ request = requestClass(input_stream, env)
+ # we must hack the publication's getApplication method because it uses
+ # ZODB.
+ publication = publicationClass(None)
+ publication.getApplication = self._publication.getApplication
+ publication._app = self._publication._app
+ request.setPublication(publication)
if IBrowserRequest.providedBy(request):
# only browser requests have skins
setDefaultSkin(request)
Modified: lovely.zetup/trunk/src/lovely/zetup/factory.py
===================================================================
--- lovely.zetup/trunk/src/lovely/zetup/factory.py 2008-11-14 13:04:30 UTC (rev 92921)
+++ lovely.zetup/trunk/src/lovely/zetup/factory.py 2008-11-14 14:02:24 UTC (rev 92922)
@@ -51,8 +51,6 @@
...
RuntimeError: There is already another config running '.../testing.py'
"""
- if logging in ("0", "no", "false", "off"):
- logging = False
if cfg is None:
raise ValueError, "Missing config path %r" % cfg
global _app, _configPath
@@ -65,6 +63,7 @@
_configPath = cfgFile
if _app is not None:
return _app
+ logging = logging not in ("0", "no", "false", "off")
cfg = Config(cfgFile, withLogging=logging)
component.provideUtility(cfg)
_app = Application()
More information about the Checkins
mailing list