[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