* fixed recursion problem in graph (ref ksh)

* fixed get_graph method (now returns transition ids too) (ref ksh)

bzr revid: ame@tinyerp.com-2fc245f372006170fab92e79986bf1b071bdc71c
This commit is contained in:
Amit Mendapara 2008-05-19 10:24:08 +00:00
parent a695fbe3b8
commit e00576317e
2 changed files with 18 additions and 14 deletions

View File

@ -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]

View File

@ -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]