[Erp5-report] r14371 - /erp5/trunk/products/ERP5Type/patches/DCWorkflow.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri May 4 16:32:09 CEST 2007


Author: ivan
Date: Fri May  4 16:32:09 2007
New Revision: 14371

URL: http://svn.erp5.org?rev=14371&view=rev
Log:
Add patch to get list of portal types for workflow.

Modified:
    erp5/trunk/products/ERP5Type/patches/DCWorkflow.py

Modified: erp5/trunk/products/ERP5Type/patches/DCWorkflow.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/patches/DCWorkflow.py?rev=14371&r1=14370&r2=14371&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/patches/DCWorkflow.py (original)
+++ erp5/trunk/products/ERP5Type/patches/DCWorkflow.py Fri May  4 16:32:09 2007
@@ -66,21 +66,12 @@
     '''
     if not self.worklists:
       return None  # Optimization
-
-    # Prevent including this worklist if
-    # the workflow is not used by any portal type
-    def getPortalTypeListForWorkflow(workflow_id):
-      workflow_tool = getToolByName(self, 'portal_workflow')
-      result = []
-      for type_info in workflow_tool._listTypeInfo():
-        portal_type = type_info.id
-        if workflow_id in workflow_tool.getChainFor(portal_type):
-          result.append(portal_type)
-      return result
-
-    _getPortalTypeListForWorkflow = CachingMethod(getPortalTypeListForWorkflow,
-                            id='_getPortalTypeListForWorkflow', cache_factory = 'erp5_ui_long')
-    portal_type_list = _getPortalTypeListForWorkflow(self.id)
+    workflow_tool = getToolByName(self, 'portal_workflow')
+    workflow = getattr(workflow_tool, self.id)
+    _getPortalTypeListForWorkflow = CachingMethod(workflow.getPortalTypeListForWorkflow,
+                                                  id='_getPortalTypeListForWorkflow', 
+                                                  cache_factory = 'erp5_ui_long')
+    portal_type_list = _getPortalTypeListForWorkflow()
     if not portal_type_list:
       return None
 
@@ -423,6 +414,22 @@
 
 DCWorkflowDefinition.updateRoleMappings = updateRoleMappings
 
+# this patch allows to get list of portal types for workflow
+def getPortalTypeListForWorkflow(self):
+  """
+    Get list of portal types for workflow.
+  """
+  result = []
+  workflow_id = self.id
+  workflow_tool = getToolByName(self, 'portal_workflow')
+  for type_info in workflow_tool._listTypeInfo():
+    portal_type = type_info.id
+    if workflow_id in workflow_tool.getChainFor(portal_type):
+      result.append(portal_type)
+  return result
+  
+DCWorkflowDefinition.getPortalTypeListForWorkflow = getPortalTypeListForWorkflow
+
 # This patch allows to use workflowmethod as an after_script
 # However, the right way of doing would be to have a combined state of TRIGGER_USER_ACTION and TRIGGER_WORKFLOW_METHOD
 # as well as workflow inheritance. This way, different user actions and dialogs can be specified easliy




More information about the Erp5-report mailing list