Log message for revision 67238: Finish committing changes from the publication-refactor branch. Also fixed bug in the traversal when we were always getting unauthorized errors when trying to use Five views. This was because I had left out some code from the Five.traversable.
Changed: _U Zope/branches/publication-refactor2/lib/python/ U Zope/branches/publication-refactor2/lib/python/ZPublisher/BaseRequest.py U Zope/branches/publication-refactor2/lib/python/ZPublisher/Publication.py U Zope/branches/publication-refactor2/lib/python/ZPublisher/Test.py U Zope/branches/publication-refactor2/lib/python/ZServer/HTTPResponse.py U Zope/branches/publication-refactor2/lib/python/Zope2/Startup/__init__.py U Zope/branches/publication-refactor2/lib/python/Zope2/Startup/handlers.py U Zope/branches/publication-refactor2/lib/python/Zope2/Startup/zopeschema.xml _U Zope/branches/publication-refactor2/lib/python/zope/ -=- Property changes on: Zope/branches/publication-refactor2/lib/python ___________________________________________________________________ Name: svn:externals - ZConfig svn://svn.zope.org/repos/main/ZConfig/tags/ZConfig-2.3.1 BTrees -r 41153 svn://svn.zope.org/repos/main/ZODB/branches/3.6/src/BTrees persistent -r 41153 svn://svn.zope.org/repos/main/ZODB/branches/3.6/src/persistent ThreadedAsync -r 41153 svn://svn.zope.org/repos/main/ZODB/branches/3.6/src/ThreadedAsync transaction -r 41153 svn://svn.zope.org/repos/main/ZODB/branches/3.6/src/transaction ZEO -r 41153 svn://svn.zope.org/repos/main/ZODB/branches/3.6/src/ZEO ZODB -r 41153 svn://svn.zope.org/repos/main/ZODB/branches/3.6/src/ZODB ZopeUndo -r 41153 svn://svn.zope.org/repos/main/ZODB/branches/3.6/src/ZopeUndo zdaemon -r 40792 svn://svn.zope.org/repos/main/zdaemon/trunk/src/zdaemon pytz -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/pytz zodbcode -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zodbcode ClientCookie -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/ClientCookie mechanize -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/mechanize docutils svn://svn.zope.org/repos/main/docutils/tags/0.4.0 + ZConfig svn://svn.zope.org/repos/main/ZConfig/tags/ZConfig-2.3.1 BTrees -r 41153 svn://svn.zope.org/repos/main/ZODB/branches/3.6/src/BTrees persistent -r 41153 svn://svn.zope.org/repos/main/ZODB/branches/3.6/src/persistent ThreadedAsync -r 41153 svn://svn.zope.org/repos/main/ZODB/branches/3.6/src/ThreadedAsync transaction -r 41153 svn://svn.zope.org/repos/main/ZODB/branches/3.6/src/transaction ZEO -r 41153 svn://svn.zope.org/repos/main/ZODB/branches/3.6/src/ZEO ZODB -r 41153 svn://svn.zope.org/repos/main/ZODB/branches/3.6/src/ZODB ZopeUndo -r 41153 svn://svn.zope.org/repos/main/ZODB/branches/3.6/src/ZopeUndo zdaemon -r 40792 svn://svn.zope.org/repos/main/zdaemon/trunk/src/zdaemon pytz -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/pytz zodbcode -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zodbcode ClientCookie -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/ClientCookie mechanize -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/mechanize docutils svn://svn.zope.org/repos/main/docutils/tags/0.4.0 twisted svn://svn.twistedmatrix.com/svn/Twisted/branches/releases/2.1.x/twisted Modified: Zope/branches/publication-refactor2/lib/python/ZPublisher/BaseRequest.py =================================================================== --- Zope/branches/publication-refactor2/lib/python/ZPublisher/BaseRequest.py 2006-04-21 17:36:54 UTC (rev 67237) +++ Zope/branches/publication-refactor2/lib/python/ZPublisher/BaseRequest.py 2006-04-21 17:37:21 UTC (rev 67238) @@ -255,6 +255,10 @@ # Set the posttraverse for duration of the traversal here self._post_traverse = post_traverse = [] + # Con Zope 3 into using Zope 2's checkPermission + import Products.Five.security + Products.Five.security.newInteraction() + entry_name = '' try: # We build parents in the wrong order, so we Modified: Zope/branches/publication-refactor2/lib/python/ZPublisher/Publication.py =================================================================== --- Zope/branches/publication-refactor2/lib/python/ZPublisher/Publication.py 2006-04-21 17:36:54 UTC (rev 67237) +++ Zope/branches/publication-refactor2/lib/python/ZPublisher/Publication.py 2006-04-21 17:37:21 UTC (rev 67238) @@ -251,7 +251,7 @@ except TraversalError: raise NotFound(ob, name) - return ob2 + return ob2.__of__(ob) if nm == '.': return ob @@ -360,12 +360,12 @@ # have an empty or missing docstring are not published. doc = getattr(subobject, '__doc__', None) if doc is None: - doc = getattr(object, '%s__doc__' % entry_name, None) + doc = getattr(object, '%s__doc__' % name, None) if not doc: return request.response.debugError( "The object at %s has an empty or missing " \ "docstring. Objects must have a docstring to be " \ - "published." % URL + "published." % request['URL'] ) # Hack for security: in Python 2.2.2, most built-in types @@ -376,7 +376,7 @@ if not typeCheck(subobject): return request.response.debugError( - "The object at %s is not publishable." % URL + "The object at %s is not publishable." % request['URL'] ) return subobject Modified: Zope/branches/publication-refactor2/lib/python/ZPublisher/Test.py =================================================================== --- Zope/branches/publication-refactor2/lib/python/ZPublisher/Test.py 2006-04-21 17:36:54 UTC (rev 67237) +++ Zope/branches/publication-refactor2/lib/python/ZPublisher/Test.py 2006-04-21 17:37:21 UTC (rev 67238) @@ -198,7 +198,7 @@ request.setPublication(get_publication()) for k, v in extra.items(): request[k]=v response = request.response - publish(request) #, module_name, after_list, debug=debug) + publish(request, False) #, module_name, after_list, debug=debug) except SystemExit, v: must_die=sys.exc_info() response.exception(must_die) Modified: Zope/branches/publication-refactor2/lib/python/ZServer/HTTPResponse.py =================================================================== --- Zope/branches/publication-refactor2/lib/python/ZServer/HTTPResponse.py 2006-04-21 17:36:54 UTC (rev 67237) +++ Zope/branches/publication-refactor2/lib/python/ZServer/HTTPResponse.py 2006-04-21 17:37:21 UTC (rev 67238) @@ -251,6 +251,7 @@ return self else: HTTPResponse.setBody(self, body, title, is_error, **kw) + return self class ChannelPipe: """Experimental pipe from ZPublisher to a ZServer Channel. Modified: Zope/branches/publication-refactor2/lib/python/Zope2/Startup/__init__.py =================================================================== --- Zope/branches/publication-refactor2/lib/python/Zope2/Startup/__init__.py 2006-04-21 17:36:54 UTC (rev 67237) +++ Zope/branches/publication-refactor2/lib/python/Zope2/Startup/__init__.py 2006-04-21 17:37:21 UTC (rev 67238) @@ -20,12 +20,11 @@ import socket from re import compile from socket import gethostbyaddr +import twisted.internet.reactor import ZConfig - from ZConfig.components.logger import loghandler - logger = logging.getLogger("Zope") started = False @@ -96,7 +95,10 @@ self.makePidFile() self.setupInterpreter() self.startZope() - self.registerSignals() + from App.config import getConfiguration + config = getConfiguration() + if not config.twisted_servers: + self.registerSignals() # emit a "ready" message in order to prevent the kinds of emails # to the Zope maillist in which people claim that Zope has "frozen" # after it has emitted ZServer messages. @@ -106,10 +108,15 @@ def run(self): # the mainloop. try: - import ZServer - import Lifetime - Lifetime.loop() - sys.exit(ZServer.exit_code) + from App.config import getConfiguration + config = getConfiguration() + if config.twisted_servers: + twisted.internet.reactor.run() + else: + import ZServer + import Lifetime + Lifetime.loop() + sys.exit(ZServer.exit_code) finally: self.shutdown() Modified: Zope/branches/publication-refactor2/lib/python/Zope2/Startup/handlers.py =================================================================== --- Zope/branches/publication-refactor2/lib/python/Zope2/Startup/handlers.py 2006-04-21 17:36:54 UTC (rev 67237) +++ Zope/branches/publication-refactor2/lib/python/Zope2/Startup/handlers.py 2006-04-21 17:37:21 UTC (rev 67238) @@ -1,8 +1,15 @@ import os import sys +import time +import logging from re import compile from socket import gethostbyaddr +import twisted.internet +import zope.event +import zope.app.appsetup.interfaces +import zope.app.twisted.main + # top-level key handlers @@ -133,7 +140,7 @@ "'catalog-getObject-raises' option will be removed in Zope 2.10:\n", DeprecationWarning) - from Products.ZCatalog import CatalogBrains + from Products.ZCatalog import CatalogBrains CatalogBrains.GETOBJECT_RAISES = bool(value) return value @@ -143,7 +150,8 @@ def root_handler(config): """ Mutate the configuration with defaults and perform fixups of values that require knowledge about configuration - values outside of their context. """ + values outside of their context. + """ # Set environment variables for k,v in config.environment.items(): @@ -165,7 +173,7 @@ instanceprod = os.path.join(config.instancehome, 'Products') if instanceprod not in config.products: config.products.append(instanceprod) - + import Products L = [] for d in config.products + Products.__path__: @@ -190,6 +198,26 @@ config.cgi_environment, config.port_base) + if not config.twisted_servers: + config.twisted_servers = [] + else: + db = object() # config.db_tab.getDatabase(mount_point='/') + zope.event.notify(zope.app.appsetup.interfaces.DatabaseOpened(db)) + + # Set number of threads (reuse zserver_threads variable) + twisted.internet.reactor.suggestThreadPoolSize(config.zserver_threads) + + # Create a root service + rootService = zope.app.twisted.main.ZopeService() + + for server in config.twisted_servers: + service = server.create(db) + service.setServiceParent(rootService) + + rootService.startService() + twisted.internet.reactor.addSystemEventTrigger( + 'before', 'shutdown', rootService.stopService) + # set up trusted proxies if config.trusted_proxies: import ZPublisher.HTTPRequest @@ -217,3 +245,29 @@ if isIp_(host): return [host] return gethostbyaddr(host)[2] +# XXX Need to find a better place for this. + +import twisted.web2.wsgi +import twisted.web2.server +import twisted.web2.log + +try: + from twisted.web2.http import HTTPFactory +except ImportError: + from twisted.web2.channel.http import HTTPFactory + +from zope.component import provideUtility +from zope.app import wsgi +from zope.app.twisted.server import ServerType, SSLServerType +from zope.app.twisted.interfaces import IServerType + +def createHTTPFactory(db): + resource = twisted.web2.wsgi.WSGIResource( + wsgi.WSGIPublisherApplication(db)) + resource = twisted.web2.log.LogWrapperResource(resource) + + return HTTPFactory(twisted.web2.server.Site(resource)) + +http = ServerType(createHTTPFactory, 8080) + +provideUtility(http, IServerType, 'Zope2-HTTP') Modified: Zope/branches/publication-refactor2/lib/python/Zope2/Startup/zopeschema.xml =================================================================== --- Zope/branches/publication-refactor2/lib/python/Zope2/Startup/zopeschema.xml 2006-04-21 17:36:54 UTC (rev 67237) +++ Zope/branches/publication-refactor2/lib/python/Zope2/Startup/zopeschema.xml 2006-04-21 17:37:21 UTC (rev 67238) @@ -11,6 +11,12 @@ <import package="tempstorage"/> <import package="Zope2.Startup" file="warnfilter.xml"/> + <sectiontype name="server" datatype="zope.app.twisted.server.ServerFactory"> + <key name="type" required="yes" /> + <key name="address" datatype="inet-address" /> + <key name="backlog" datatype="integer" default="50" /> + </sectiontype> + <sectiontype name="logger" datatype=".LoggerFactory"> <description> This "logger" type only applies to access and request ("trace") @@ -805,7 +811,9 @@ <metadefault>on</metadefault> </key> + <multisection type="server" name="*" attribute="twisted_servers" /> <multisection type="ZServer.server" name="*" attribute="servers"/> + <key name="port-base" datatype="integer" default="0"> <description> Base port number that gets added to the specific port numbers Property changes on: Zope/branches/publication-refactor2/lib/python/zope ___________________________________________________________________ Name: svn:externals - app -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/app cachedescriptors -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/cachedescriptors component -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/component configuration -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/configuration documenttemplate -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/documenttemplate event -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/event exceptions -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/exceptions hookable -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/hookable i18n -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/i18n i18nmessageid -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/i18nmessageid interface -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/interface modulealias -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/modulealias pagetemplate -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/pagetemplate proxy -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/proxy publisher -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/publisher schema -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/schema security -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/security server -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/server structuredtext -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/structuredtext tal -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/tal tales -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/tales testing -r 40941 svn://svn.zope.org/repos/main/zope.testing/trunk/src/zope/testing thread -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/thread deprecation -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/deprecation dottedname -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/dottedname formlib -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/formlib index -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/index testbrowser -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/testbrowser contentprovider -r 66018 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/contentprovider viewlet -r 66018 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/viewlet + app -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/app cachedescriptors -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/cachedescriptors component -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/component configuration -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/configuration documenttemplate -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/documenttemplate event -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/event exceptions -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/exceptions hookable -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/hookable i18n -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/i18n i18nmessageid -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/i18nmessageid interface -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/interface modulealias -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/modulealias pagetemplate -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/pagetemplate proxy -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/proxy publisher svn://svn.zope.org/repos/main/Zope3/branches/publication-refactor2/src/zope/publisher schema -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/schema security -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/security server -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/server structuredtext -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/structuredtext tal -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/tal tales -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/tales testing -r 40941 svn://svn.zope.org/repos/main/zope.testing/trunk/src/zope/testing thread -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/thread deprecation -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/deprecation dottedname -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/dottedname formlib -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/formlib index -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/index testbrowser -r 41215 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/testbrowser contentprovider -r 66018 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/contentprovider viewlet -r 66018 svn://svn.zope.org/repos/main/Zope3/trunk/src/zope/viewlet _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins