From f940a5914f49cfb32e96c3e96ec4eeb3ba58ca5f Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Tue, 18 Jan 2011 15:37:08 -0500 Subject: [PATCH] Correction for the case where steps being sorted do not have position data (workflow extraction from history, for example), so we do need to check. --- lib/galaxy/web/controllers/workflow.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/galaxy/web/controllers/workflow.py b/lib/galaxy/web/controllers/workflow.py index c1872372895..0c740d85270 100644 --- a/lib/galaxy/web/controllers/workflow.py +++ b/lib/galaxy/web/controllers/workflow.py @@ -1670,7 +1670,12 @@ def order_workflow_steps( steps ): """ Perform topological sort of the steps, return ordered or None """ - steps.sort(cmp=lambda s1,s2: cmp( math.sqrt(s1.position['left']**2 + s1.position['top']**2), math.sqrt(s2.position['left']**2 + s2.position['top']**2))) + position_data_available = True + for step in steps: + if not step.position or not 'left' in step.position or not 'top' in step.position: + position_data_available = False + if position_data_available: + steps.sort(cmp=lambda s1,s2: cmp( math.sqrt(s1.position['left']**2 + s1.position['top']**2), math.sqrt(s2.position['left']**2 + s2.position['top']**2))) try: edges = edgelist_for_workflow_steps( steps ) node_order = topsort( edges )