[Checkins] SVN: Sandbox/gotcha/five.taskqueue/ add startup code
Godefroid Chapelle
gotcha at bubblenet.be
Tue Apr 20 07:19:16 EDT 2010
Log message for revision 111169:
add startup code
Changed:
_U Sandbox/gotcha/five.taskqueue/
U Sandbox/gotcha/five.taskqueue/buildout.cfg
U Sandbox/gotcha/five.taskqueue/setup.py
A Sandbox/gotcha/five.taskqueue/src/five/taskqueue/configure.zcml
A Sandbox/gotcha/five.taskqueue/src/five/taskqueue/startup.py
-=-
Property changes on: Sandbox/gotcha/five.taskqueue
___________________________________________________________________
Modified: svn:ignore
- devel
var
develop-eggs
bin
fake-eggs
parts
.installed.cfg
.mr.developer.cfg
+ coverage
devel
var
develop-eggs
bin
fake-eggs
parts
.installed.cfg
.mr.developer.cfg
Modified: Sandbox/gotcha/five.taskqueue/buildout.cfg
===================================================================
--- Sandbox/gotcha/five.taskqueue/buildout.cfg 2010-04-20 11:15:23 UTC (rev 111168)
+++ Sandbox/gotcha/five.taskqueue/buildout.cfg 2010-04-20 11:19:16 UTC (rev 111169)
@@ -14,6 +14,11 @@
zope2-location = ${zope2:location}
user = admin:admin
eggs = five.taskqueue
+zcml = five.taskqueue
+zope-conf-additional =
+ <product-config five.taskqueue>
+ autostart *@*
+ </product-config>
[test]
recipe = zc.recipe.testrunner
@@ -49,7 +54,7 @@
[z3c.coverage]
recipe = zc.recipe.egg
eggs = z3c.coverage
-scripts = coverage
+scripts = coveragereport
arguments = ('coverage', 'coverage/report')
[omelette]
Modified: Sandbox/gotcha/five.taskqueue/setup.py
===================================================================
--- Sandbox/gotcha/five.taskqueue/setup.py 2010-04-20 11:15:23 UTC (rev 111168)
+++ Sandbox/gotcha/five.taskqueue/setup.py 2010-04-20 11:19:16 UTC (rev 111169)
@@ -23,8 +23,8 @@
zip_safe=False,
install_requires=[
'setuptools',
- # -*- Extra requirements: -*-
'z3c.taskqueue',
+ 'five.dbevent',
],
entry_points="""
# -*- Entry points: -*-
Added: Sandbox/gotcha/five.taskqueue/src/five/taskqueue/configure.zcml
===================================================================
--- Sandbox/gotcha/five.taskqueue/src/five/taskqueue/configure.zcml (rev 0)
+++ Sandbox/gotcha/five.taskqueue/src/five/taskqueue/configure.zcml 2010-04-20 11:19:16 UTC (rev 111169)
@@ -0,0 +1,12 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ i18n_domain="five.taskqueue">
+
+ <include package="five.dbevent" />
+
+ <subscriber
+ for="zope.app.appsetup.interfaces.IDatabaseOpenedWithRootEvent"
+ handler=".startup.databaseOpened"
+ />
+
+</configure>
Added: Sandbox/gotcha/five.taskqueue/src/five/taskqueue/startup.py
===================================================================
--- Sandbox/gotcha/five.taskqueue/src/five/taskqueue/startup.py (rev 0)
+++ Sandbox/gotcha/five.taskqueue/src/five/taskqueue/startup.py 2010-04-20 11:19:16 UTC (rev 111169)
@@ -0,0 +1,51 @@
+import logging
+
+from App.config import getConfiguration
+
+from z3c.taskqueue.startup import getRootFolder
+from z3c.taskqueue.startup import getStartSpecifications
+from z3c.taskqueue.startup import startServices
+from z3c.taskqueue.startup import getService
+
+log = logging.getLogger('five.taskqueue')
+
+
+def databaseOpened(event):
+ """Start the queue processing services based on the
+ settings in zope.conf"""
+ log.info('handling event IDatabaseOpenedEvent')
+
+ root_folder = getRootFolder(event)
+
+ configuration = getTaskqueueConfiguration()
+ startSpecifications = getStartSpecifications(configuration)
+
+ for siteName, serviceName in startSpecifications:
+ serviceCount = 0
+ site = getSite(siteName, root_folder)
+ if site is None:
+ continue
+ service = getService(site, serviceName)
+ if service is None:
+ continue
+ else:
+ serviceCount += startServices([service])
+
+
+def getSite(siteName, root_folder):
+ try:
+ site = root_folder._getOb(siteName)
+ except AttributeError:
+ log.error('site %s not found' % siteName)
+ site = None
+ return site
+
+
+def getTaskqueueConfiguration():
+ config = getConfiguration()
+ if not hasattr(config, 'product_config'):
+ return
+ product_config = config.product_config
+ if config is None:
+ return
+ return product_config.get('five.taskqueue', None)
More information about the checkins
mailing list