diff --git a/product/ERP5Workflow/Document/Workflow.py b/product/ERP5Workflow/Document/Workflow.py index caa8dda4dc1efd5978bc11d58a3d949796b9befa..2feb66b67eb023ae4567f100194b2345d115807e 100644 --- a/product/ERP5Workflow/Document/Workflow.py +++ b/product/ERP5Workflow/Document/Workflow.py @@ -362,9 +362,10 @@ class Workflow(XMLObject): (worklist id as key) and which value is a dict composed of variable matches. """ - if not self.objectValues(portal_type='Worklist'): + if not self.contentValues(portal_type='Worklist'): return None + ### zwj: for DC workflow portal = self.getPortalObject() def getPortalTypeListForWorkflow(workflow_id): workflow_tool = portal.portal_workflow @@ -384,12 +385,14 @@ class Workflow(XMLObject): variable_match_dict = {} security_manager = getSecurityManager() workflow_id = self.id - workflow_title = self.title - for worklist_id, worklist_definition in self.worklists.items(): + workflow_title = self.getTitle() + for worklist_definition in self.objectValues(portal_type='Worklist'): + worklist_id = worklist_definition.getId() action_box_name = worklist_definition.actbox_name - guard = worklist_definition.guard + guard = worklist_definition.getGuard() if action_box_name: variable_match = {} + for key in worklist_definition.getVarMatchKeys(): var = worklist_definition.getVarMatch(key) if isinstance(var, Expression): @@ -400,6 +403,7 @@ class Workflow(XMLObject): else: evaluated_value = [x % info for x in var] variable_match[key] = evaluated_value + if 'portal_type' in variable_match and len(variable_match['portal_type']): portal_type_intersection = set(variable_match['portal_type'])\ .intersection(portal_type_list) @@ -425,18 +429,20 @@ class Workflow(XMLObject): variable_match.setdefault(SECURITY_PARAMETER_ID, ()) format_data._push(dict((k, ('&%s:list=' % k).join(v)) for\ k, v in variable_match.iteritems())) - variable_match[WORKLIST_METADATA_KEY] = {'format_data': format_data, - 'worklist_title': action_box_name, - 'worklist_id': worklist_id, - 'workflow_title': workflow_title, - 'workflow_id': workflow_id, - 'action_box_url': worklist_definition.actbox_url, - 'action_box_category': worklist_definition.actbox_category} + variable_match[WORKLIST_METADATA_KEY] = { + 'name': worklist_definition.actbox_name % fmt_data, + 'url': '%s/%s' % (str(portal_url), str(worklist_definition.actbox_url) % fmt_data), + 'worklist_id': worklist_id, + 'workflow_title': self.getTitle(), + 'workflow_id': self.getId(), + 'permissions': (), # Predetermined. + 'category': worklist_definition.actbox_category} variable_match_dict[worklist_id] = variable_match if len(variable_match_dict) == 0: return None return variable_match_dict + # ============================================================================ security.declarePrivate('getInfoFor') def getInfoFor(self, ob, name, default):