* 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:
parent
a695fbe3b8
commit
e00576317e
|
@ -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]
|
||||
|
|
|
@ -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]
|
||||
|
|
Loading…
Reference in New Issue