summaryrefslogtreecommitdiff
path: root/addons/process/process.py
diff options
context:
space:
mode:
authorAmit Mendapara <ame@tinyerp.com>2008-09-11 17:15:45 +0530
committerAmit Mendapara <ame@tinyerp.com>2008-09-11 17:15:45 +0530
commitd053be094c2018c5eca03d7c1e2134d4d06ee7e3 (patch)
tree417bd4ef6f1ab57a1a97a00445e705e73881601d /addons/process/process.py
parent559e9c58bef129a9dd14cde9f629643b92f9118b (diff)
Implemented graph_get for process.process (nodes & transitions info).
bzr revid: ame@tinyerp.com-20080911114545-xmp8ch2g9viwrpku
Diffstat (limited to 'addons/process/process.py')
-rw-r--r--addons/process/process.py64
1 files changed, 63 insertions, 1 deletions
diff --git a/addons/process/process.py b/addons/process/process.py
index d489b5f12f0..0b08c2e9ea2 100644
--- a/addons/process/process.py
+++ b/addons/process/process.py
@@ -27,8 +27,9 @@
##############################################################################
import netsvc
-from osv import fields, osv
+import pooler, tools
+from osv import fields, osv
class process_process(osv.osv):
_name = "process.process"
@@ -42,6 +43,67 @@ class process_process(osv.osv):
_defaults = {
'active' : lambda *a: True,
}
+
+ def graph_get(self, cr, uid, id, res_model, res_id, scale, context):
+
+ current_object = res_model
+ pool = pooler.get_pool(cr.dbname)
+
+ process = pool.get('process.process').browse(cr, uid, [id])[0]
+
+ nodes = {}
+ start = []
+ transitions = {}
+ for node in process.node_ids:
+
+ data = {}
+
+ data['name'] = node.name
+ data['menu'] = node.menu_id.name
+ data['model'] = node.model_id.model
+
+ nodes[node.id] = data
+
+ if node.flow_start:
+ start.append(node.id)
+
+ for tr in node.transition_out:
+ data = {}
+
+ data['name'] = tr.name
+ data['source'] = tr.node_from_id.id
+ data['target'] = tr.node_to_id.id
+
+ transitions[tr.id] = data
+
+ g = tools.graph(nodes.keys(), map(lambda x: (x['source'], x['target']), transitions.values()))
+ g.process(start)
+ #g.scale(100, 100, 180, 120)
+ g.scale(*scale)
+
+ graph = g.result_get()
+
+ miny = -1
+
+ for k,v in nodes.items():
+
+ x = graph[k]['y']
+ y = graph[k]['x']
+
+ if miny == -1:
+ miny = y
+
+ miny = min(y, miny)
+
+ v['x'] = x
+ v['y'] = y
+
+ for k, v in nodes.items():
+ y = v['y']
+ v['y'] = min(y - miny + 10, y)
+
+ return dict(nodes=nodes, transitions=transitions)
+
process_process()
class process_node(osv.osv):