[Checkins] SVN: Sandbox/gotcha/z3c.taskqueue/src/z3c/taskqueue/service.py Z2 compat
Godefroid Chapelle
gotcha at bubblenet.be
Tue Mar 9 05:05:56 EST 2010
Log message for revision 109866:
Z2 compat
Changed:
U Sandbox/gotcha/z3c.taskqueue/src/z3c/taskqueue/service.py
-=-
Modified: Sandbox/gotcha/z3c.taskqueue/src/z3c/taskqueue/service.py
===================================================================
--- Sandbox/gotcha/z3c.taskqueue/src/z3c/taskqueue/service.py 2010-03-09 07:51:51 UTC (rev 109865)
+++ Sandbox/gotcha/z3c.taskqueue/src/z3c/taskqueue/service.py 2010-03-09 10:05:56 UTC (rev 109866)
@@ -20,7 +20,6 @@
from zope import component
from zope.container import contained
from zope.component.interfaces import ComponentLookupError
-import BTrees
import datetime
import logging
import persistent
@@ -29,11 +28,18 @@
import zc.queue
import zope.interface
+try:
+ from Products import Five
+ ZOPE2 = True
+ del Five
+ import sys
+except ImportError:
+ ZOPE2 = False
log = logging.getLogger('z3c.taskqueue')
-class TaskService(contained.Contained, persistent.Persistent):
+class BaseTaskService(contained.Contained, persistent.Persistent):
"""A persistent task service.
The available tasks for this service are managed as utilities.
@@ -45,13 +51,13 @@
_scheduledJobs = None
_scheduledQueue = None
_v_nextid = None
- family = BTrees.family32
+ containerClass = None
def __init__(self):
- super(TaskService, self).__init__()
- self.jobs = self.family.IO.BTree()
+ super(BaseTaskService, self).__init__()
+ self.jobs = self.containerClass()
+ self._scheduledJobs = self.containerClass()
self._queue = zc.queue.Queue()
- self._scheduledJobs = self.family.IO.BTree()
self._scheduledQueue = zc.queue.Queue()
def getAvailableTasks(self):
@@ -262,9 +268,24 @@
"""
while True:
if self._v_nextid is None:
- self._v_nextid = random.randrange(0, self.family.maxint)
+ self._v_nextid = random.randrange(0, self.maxint)
uid = self._v_nextid
self._v_nextid += 1
if uid not in self.jobs:
return uid
self._v_nextid = None
+
+if not ZOPE2:
+
+ class TaskService(BaseTaskService):
+ from BTrees import family32
+ containerClass = family32.IO.BTree
+ maxint = family32.maxint
+
+else:
+ from OFS.SimpleItem import SimpleItem
+
+ class TaskService(BaseTaskService, SimpleItem):
+ from BTrees.IOBTree import IOBTree
+ containerClass = IOBTree
+ maxint = sys.maxint
More information about the checkins
mailing list