diff --git a/product/CMFActivity/ActiveProcess.py b/product/CMFActivity/ActiveProcess.py index bfb38dd0e19a176be468428082b04b41aee3c0a4..561173c8a1e7b5a01e7acf1db7f2af75f5c5c744 100755 --- a/product/CMFActivity/ActiveProcess.py +++ b/product/CMFActivity/ActiveProcess.py @@ -32,7 +32,7 @@ from AccessControl import ClassSecurityInfo from Products.CMFCore import CMFCorePermissions from Products.ERP5Type.Base import Base from Products.ERP5Type import PropertySheet -from BTrees.OOBTree import OOTreeSet +from BTrees.IOBTree import IOBTree from zLOG import LOG @@ -73,17 +73,32 @@ class ActiveProcess(Base): # Declarative properties property_sheets = ( PropertySheet.Base - , PropertySheet.SimpleItem ) + , PropertySheet.SimpleItem + , PropertySheet.Folder ) # Declarative constructors constructors = (manage_addActiveProcessForm, addActiveProcess) # Base methods + def _generateNewId(self): + """ + Generate a new result id for internal storage + """ + try: + my_id = int(self.getLastId()) + except: + my_id = 1 + while self.result_list.has_key(my_id): + my_id = my_id + 1 + self._setLastId(str(my_id)) # Make sure no reindexing happens + + return my_id + security.declareProtected(CMFCorePermissions.ManagePortal, 'postResult') def postResult(self, result): if not hasattr(self, 'result_list'): - self.result_list = OOTreeSet() - self.result_list.insert(result) + self.result_list = IOBTree() + self.result_list[self._generateNewId()] = result security.declareProtected(CMFCorePermissions.ManagePortal, 'getResultList') def getResultList(self, **kw): @@ -91,8 +106,9 @@ class ActiveProcess(Base): Returns the list of results """ if not hasattr(self, 'result_list'): - self.result_list = OOTreeSet() - return self.result_list + self.result_list = IOBTree() + # Improve this to include sort order XXX + return self.result_list.values() # security.declareProtected(CMFCorePermissions.ManagePortal, 'getErrorListText') # def getResultListText(self): @@ -100,7 +116,7 @@ class ActiveProcess(Base): # Returns the list of errors as text # """ # return '\n'.join(map(lambda x:repr(x), self.error_list)) -# +# security.declareProtected(CMFCorePermissions.ManagePortal, 'activateResult') def activateResult(self, result): if result not in (None, 0, '', (), []):