diff --git a/bin/addons/base/ir/workflow/workflow.py b/bin/addons/base/ir/workflow/workflow.py index ee39fe634b5..d25b81cd48b 100644 --- a/bin/addons/base/ir/workflow/workflow.py +++ b/bin/addons/base/ir/workflow/workflow.py @@ -55,12 +55,13 @@ class workflow(osv.osv): # # scale = [stepx, stepy, posx, posy ] # + def graph_get(self, cr, uid, id, scale, context={}): nodes= [] transitions = [] start = [] - tres = [] + tres = {} workflow = self.browse(cr, uid, id, context) for a in workflow.activities: nodes.append((a.id,a.name)) @@ -68,12 +69,14 @@ class workflow(osv.osv): start.append((a.id,a.name)) for t in a.out_transitions: transitions.append( ((a.id,a.name), (t.act_to.id,t.act_to.name)) ) - tres.append((a.id,t.act_to.id)) + tres[t.id] = (a.id,t.act_to.id) g = graph(nodes, transitions) g.process(start) g.scale(*scale) result = g.result_get() results = {} + + for r in result.items(): r[1]['name'] = r[0][1] results[str(r[0][0])] = r[1] diff --git a/bin/tools/graph.py b/bin/tools/graph.py index a90c9fe9705..13089c8b13b 100644 --- a/bin/tools/graph.py +++ b/bin/tools/graph.py @@ -169,8 +169,10 @@ class graph(object): pos += step def exchange(self,e,f): - print e - print f + self.tree_edges.__delitem__(self.tree_edges.index(e)) + self.tree_edges.append(f) + self.init_cutvalues() + def enter_edge(self,edge): self.head_nodes = [] @@ -187,8 +189,7 @@ class graph(object): slack = self.temp[edge]-1 new_edge = (source_node,dest_node) return new_edge - - + def leave_edge(self): for edge in self.cut_edges: @@ -207,6 +208,7 @@ class graph(object): #normalize least_rank=100 + #normalization for node in self.result: if least_rank>self.result[node]['y']: least_rank = self.result[node]['y'] @@ -216,14 +218,12 @@ class graph(object): for node in self.result: self.result[node]['y']-=least_rank -# e = self.leave_edge() -# print '============e==============',e -## while e: -# f = self.enter_edge(e) -# print '=========f===============',f -# self.exchange(e,f) -# e = self.leave_edge() - + e = self.leave_edge() + #while e: + f = self.enter_edge(e) + self.exchange(e,f) + e = self.leave_edge() + self.preprocess_order() @@ -246,6 +246,7 @@ class graph(object): plusy = - min(map(lambda x: x['y'],self.result.values())) maxcurrent = 1.0 + diff = 1.0 for l in self.levels: for n in range(1, len(self.levels[l])): n1 = self.levels[l][n]