From 7ef45906cfa7b8c6bcefb6280f3ab76e82256080 Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Mon, 1 Feb 2010 15:23:55 +0530 Subject: [PATCH 001/433] [IMP]: initial work of diagram view. bzr revid: apa@tinyerp.com-20100201095355-gohn3f6z4eb98d87 --- bin/addons/base/ir/ir_ui_view.py | 1 + bin/addons/base/ir/workflow/workflow_view.xml | 17 +++++++++ bin/addons/base/rng/view.rng | 38 +++++++++++++++++++ 3 files changed, 56 insertions(+) diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index b66d7eedcf6..2391737c425 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -59,6 +59,7 @@ class view(osv.osv): ('mdx','mdx'), ('graph', 'Graph'), ('calendar', 'Calendar'), + ('diagram','Diagram'), ('gantt', 'Gantt'), ('search','Search')), 'View Type', required=True), 'arch': fields.text('View Architecture', required=True), diff --git a/bin/addons/base/ir/workflow/workflow_view.xml b/bin/addons/base/ir/workflow/workflow_view.xml index a0bfb7fdc03..6d3ddf9f5cc 100644 --- a/bin/addons/base/ir/workflow/workflow_view.xml +++ b/bin/addons/base/ir/workflow/workflow_view.xml @@ -23,6 +23,22 @@ + + + workflow.diagram + workflow + diagram + + + + + + + + + + + workflow.tree workflow @@ -41,6 +57,7 @@ workflow form + tree,form,diagram diff --git a/bin/addons/base/rng/view.rng b/bin/addons/base/rng/view.rng index 3a9c8f92369..82112a834c7 100644 --- a/bin/addons/base/rng/view.rng +++ b/bin/addons/base/rng/view.rng @@ -30,6 +30,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -332,6 +368,7 @@ + @@ -507,6 +544,7 @@ + From 487b9ea3dd501f48cb0a4e93cf9fa94047c12461 Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Tue, 2 Feb 2010 17:24:22 +0530 Subject: [PATCH 002/433] [IMP]:Make get_graph method as generic.(REF.APA,YSA) bzr revid: apa@tinyerp.com-20100202115422-0mg6annejy8f09nd --- bin/addons/base/ir/ir_ui_view.py | 89 +++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 2 deletions(-) diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index 2391737c425..6c932eb312e 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,12 +15,13 @@ # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . +# along with this program. If not, see . # ############################################################################## from osv import fields,osv from lxml import etree +from tools import graph import tools import netsvc import os @@ -130,6 +131,90 @@ class view(osv.osv): return result return super(view, self).write(cr, uid, ids, vals, context) + + def graph_get(self, cr, uid, id, scale, context={}): + + _Node={} + _Arrow={} + _Ids = self.search(cr, uid, [('type','=','diagram')], context=context) + _Models = self.browse(cr, uid, _Ids, context) + + for _Model in _Models: + + from lxml import etree + import StringIO,xml.dom.minidom + + d = xml.dom.minidom.parseString(str(_Model.arch)) + de = d.documentElement + + def node_attributes(node): + result = {} + attrs = node.attributes + if attrs is None: + return {} + for i in range(attrs.length): + result[attrs.item(i).localName] = str(attrs.item(i).nodeValue) + if attrs.item(i).localName == "digits" and isinstance(attrs.item(i).nodeValue, (str, unicode)): + result[attrs.item(i).localName] = eval(attrs.item(i).nodeValue) + return result + + for n in [i for i in de.childNodes]: + if n.nodeName=='node': + _Node.update(node_attributes(n)) + elif n.nodeName=='arrow': + _Arrow.update(node_attributes(n)) + + _Model_Obj = self.pool.get(str(_Model.model)) + + for _Field,_Value in _Model_Obj._columns.items(): + if _Value._type == 'one2many': + if _Value._obj==_Node['object']: + _Node_Obj = self.pool.get(_Value._obj) + _Node_Field = _Field + _Flag=False + for _Field_1,_Value_1 in _Node_Obj._columns.items(): + if _Value_1._type == 'one2many': + if _Value_1._obj==_Arrow['object']: + _Arrow_Obj = self.pool.get(_Value_1._obj) + for _Key,_Val in _Arrow_Obj._columns.items(): + if _Arrow['source'] == _Key: + if _Flag: + _Source_Field = _Field_1 + if _Arrow['destination'] == _Key: + if not _Flag: + _Destination_Field = _Field_1 + _Flag = True + nodes= [] + nodes_name = [] + transitions = [] + start = [] + tres = {} + no_ancester = [] + workflow = _Model_Obj.read(cr, uid, id, [],context) + for a in _Node_Obj.read(cr,uid, workflow[_Node_Field],[]): + nodes_name.append((a['id'],a['name'])) + nodes.append(a['id']) + if a['flow_start']: + start.append(a['id']) + else: + if not a[_Source_Field]: + no_ancester.append(a['id']) + + for t in _Arrow_Obj.read(cr,uid, a[_Destination_Field],[]): + transitions.append((a['id'], t[_Arrow['destination']][0])) + tres[t['id']] = (a['id'], t[_Arrow['destination']][0]) + + g = graph(nodes, transitions, no_ancester) + g.process(start) + g.scale(*scale) + result = g.result_get() + results = {} + + for node in nodes_name: + results[str(node[0])] = result[node[0]] + results[str(node[0])]['name'] = node[1] + + return {'nodes': results, 'transitions': tres} view() class view_sc(osv.osv): From d6c5fa26d32cbdc55f280b781dd042d778f87429 Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Fri, 5 Feb 2010 18:28:52 +0530 Subject: [PATCH 003/433] [IMP]:improved the graph_get method for generic. bzr revid: apa@tinyerp.com-20100205125852-ykgf5ti2vuhswfle --- bin/addons/base/ir/ir_ui_view.py | 125 +++++++++++-------------------- 1 file changed, 45 insertions(+), 80 deletions(-) diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index 6c932eb312e..af4445e0b32 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -132,89 +132,54 @@ class view(osv.osv): return super(view, self).write(cr, uid, ids, vals, context) - def graph_get(self, cr, uid, id, scale, context={}): + def graph_get(self, cr, uid, id, model, node_obj, conn_obj, src_node, des_node, scale,context={}): + nodes= [] + nodes_name = [] + transitions = [] + start = [] + tres = {} + no_ancester = [] - _Node={} - _Arrow={} - _Ids = self.search(cr, uid, [('type','=','diagram')], context=context) - _Models = self.browse(cr, uid, _Ids, context) + _Model_Obj = self.pool.get(model) + _Node_Obj = self.pool.get(node_obj) + _Arrow_Obj = self.pool.get(conn_obj) - for _Model in _Models: + for model_key,model_value in _Model_Obj._columns.items(): + if model_value._type == 'one2many': + if model_value._obj==node_obj: + _Node_Field=model_key + flag=False + for node_key,node_value in _Node_Obj._columns.items(): + if node_value._type=='one2many': + if src_node in _Arrow_Obj._columns: + if flag: + _Source_Field = node_key + if des_node in _Arrow_Obj._columns: + if not flag: + _Destination_Field = node_key + flag = True - from lxml import etree - import StringIO,xml.dom.minidom - - d = xml.dom.minidom.parseString(str(_Model.arch)) - de = d.documentElement - - def node_attributes(node): - result = {} - attrs = node.attributes - if attrs is None: - return {} - for i in range(attrs.length): - result[attrs.item(i).localName] = str(attrs.item(i).nodeValue) - if attrs.item(i).localName == "digits" and isinstance(attrs.item(i).nodeValue, (str, unicode)): - result[attrs.item(i).localName] = eval(attrs.item(i).nodeValue) - return result - - for n in [i for i in de.childNodes]: - if n.nodeName=='node': - _Node.update(node_attributes(n)) - elif n.nodeName=='arrow': - _Arrow.update(node_attributes(n)) - - _Model_Obj = self.pool.get(str(_Model.model)) - - for _Field,_Value in _Model_Obj._columns.items(): - if _Value._type == 'one2many': - if _Value._obj==_Node['object']: - _Node_Obj = self.pool.get(_Value._obj) - _Node_Field = _Field - _Flag=False - for _Field_1,_Value_1 in _Node_Obj._columns.items(): - if _Value_1._type == 'one2many': - if _Value_1._obj==_Arrow['object']: - _Arrow_Obj = self.pool.get(_Value_1._obj) - for _Key,_Val in _Arrow_Obj._columns.items(): - if _Arrow['source'] == _Key: - if _Flag: - _Source_Field = _Field_1 - if _Arrow['destination'] == _Key: - if not _Flag: - _Destination_Field = _Field_1 - _Flag = True - nodes= [] - nodes_name = [] - transitions = [] - start = [] - tres = {} - no_ancester = [] - workflow = _Model_Obj.read(cr, uid, id, [],context) - for a in _Node_Obj.read(cr,uid, workflow[_Node_Field],[]): - nodes_name.append((a['id'],a['name'])) - nodes.append(a['id']) - if a['flow_start']: - start.append(a['id']) - else: - if not a[_Source_Field]: - no_ancester.append(a['id']) - - for t in _Arrow_Obj.read(cr,uid, a[_Destination_Field],[]): - transitions.append((a['id'], t[_Arrow['destination']][0])) - tres[t['id']] = (a['id'], t[_Arrow['destination']][0]) - - g = graph(nodes, transitions, no_ancester) - g.process(start) - g.scale(*scale) - result = g.result_get() - results = {} - - for node in nodes_name: - results[str(node[0])] = result[node[0]] - results[str(node[0])]['name'] = node[1] - - return {'nodes': results, 'transitions': tres} + datas = _Model_Obj.read(cr, uid, id, [],context) + for a in _Node_Obj.read(cr,uid,datas[_Node_Field],[]): + nodes_name.append((a['id'],a['name'])) + nodes.append(a['id']) + if a['flow_start']: + start.append(a['id']) + else: + if not a[_Source_Field]: + no_ancester.append(a['id']) + for t in _Arrow_Obj.read(cr,uid, a[_Destination_Field],[]): + transitions.append((a['id'], t[des_node][0])) + tres[t['id']] = (a['id'], t[des_node][0]) + g = graph(nodes, transitions, no_ancester) + g.process(start) + g.scale(*scale) + result = g.result_get() + results = {} + for node in nodes_name: + results[str(node[0])] = result[node[0]] + results[str(node[0])]['name'] = node[1] + return {'nodes': results, 'transitions': tres} view() class view_sc(osv.osv): From e3bac5fec496f84f7f08314453fdf6737819c3bb Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Fri, 5 Feb 2010 20:08:13 +0530 Subject: [PATCH 004/433] [IMP]:improve code bzr revid: apa@tinyerp.com-20100205143813-s9nt379rgqdjx6pw --- bin/addons/base/ir/ir_ui_view.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index af4445e0b32..10d2b694ad2 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -145,19 +145,17 @@ class view(osv.osv): _Arrow_Obj = self.pool.get(conn_obj) for model_key,model_value in _Model_Obj._columns.items(): - if model_value._type == 'one2many': + if model_value._type=='one2many' and model_value._obj==node_obj: if model_value._obj==node_obj: _Node_Field=model_key flag=False for node_key,node_value in _Node_Obj._columns.items(): if node_value._type=='one2many': - if src_node in _Arrow_Obj._columns: - if flag: - _Source_Field = node_key - if des_node in _Arrow_Obj._columns: - if not flag: - _Destination_Field = node_key - flag = True + if src_node in _Arrow_Obj._columns and flag: + _Source_Field=node_key + if des_node in _Arrow_Obj._columns and not flag: + _Destination_Field=node_key + flag = True datas = _Model_Obj.read(cr, uid, id, [],context) for a in _Node_Obj.read(cr,uid,datas[_Node_Field],[]): From 01e68a6a56ad961d575f26c3e11b22b3587e84a4 Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Fri, 5 Feb 2010 20:09:02 +0530 Subject: [PATCH 005/433] [IMP]:improve code bzr revid: apa@tinyerp.com-20100205143902-ih121kafmupku6pz --- bin/addons/base/ir/ir_ui_view.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index 10d2b694ad2..59d0e431f3a 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -145,7 +145,7 @@ class view(osv.osv): _Arrow_Obj = self.pool.get(conn_obj) for model_key,model_value in _Model_Obj._columns.items(): - if model_value._type=='one2many' and model_value._obj==node_obj: + if model_value._type=='one2many': if model_value._obj==node_obj: _Node_Field=model_key flag=False From 7308ba4ca4796a01b73059841fc414f889dbbcb0 Mon Sep 17 00:00:00 2001 From: "Ysa (Open ERP)" Date: Tue, 9 Feb 2010 13:11:27 +0530 Subject: [PATCH 006/433] [IMP] add shape and bgcolor attribute add in diagram node bzr revid: ysa@tinyerp.co.in-20100209074127-okyugub65gmj56yo --- bin/addons/base/ir/workflow/workflow_view.xml | 2 +- bin/addons/base/rng/view.rng | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bin/addons/base/ir/workflow/workflow_view.xml b/bin/addons/base/ir/workflow/workflow_view.xml index 6d3ddf9f5cc..435d0f3d61f 100644 --- a/bin/addons/base/ir/workflow/workflow_view.xml +++ b/bin/addons/base/ir/workflow/workflow_view.xml @@ -30,7 +30,7 @@ diagram - + diff --git a/bin/addons/base/rng/view.rng b/bin/addons/base/rng/view.rng index 82112a834c7..90ca81251bc 100644 --- a/bin/addons/base/rng/view.rng +++ b/bin/addons/base/rng/view.rng @@ -44,7 +44,9 @@ - + + + From cc4bf70f1baa7920a278832ea4ab6b47d4e6737d Mon Sep 17 00:00:00 2001 From: "Ysa (Open ERP)" Date: Tue, 9 Feb 2010 15:41:32 +0530 Subject: [PATCH 007/433] [IMP] workflow get_graph method keep in comment bzr revid: ysa@tinyerp.co.in-20100209101132-kem10xbj4at56l0f --- bin/addons/base/ir/workflow/workflow.py | 68 ++++++++++++------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/bin/addons/base/ir/workflow/workflow.py b/bin/addons/base/ir/workflow/workflow.py index 89e18a08fb4..bc51ee1f8e4 100644 --- a/bin/addons/base/ir/workflow/workflow.py +++ b/bin/addons/base/ir/workflow/workflow.py @@ -49,40 +49,40 @@ class workflow(osv.osv): # - def graph_get(self, cr, uid, id, scale, context={}): - - nodes= [] - nodes_name = [] - transitions = [] - start = [] - tres = {} - no_ancester = [] - workflow = self.browse(cr, uid, id, context) - for a in workflow.activities: - nodes_name.append((a.id,a.name)) - nodes.append(a.id) - if a.flow_start: - start.append(a.id) - else: - if not a.in_transitions: - no_ancester.append(a.id) - - for t in a.out_transitions: - transitions.append((a.id, t.act_to.id)) - tres[t.id] = (a.id, t.act_to.id) - - - g = graph(nodes, transitions, no_ancester) - g.process(start) - g.scale(*scale) - result = g.result_get() - results = {} - - for node in nodes_name: - results[str(node[0])] = result[node[0]] - results[str(node[0])]['name'] = node[1] - - return {'nodes': results, 'transitions': tres} +# def graph_get(self, cr, uid, id, scale, context={}): +# +# nodes= [] +# nodes_name = [] +# transitions = [] +# start = [] +# tres = {} +# no_ancester = [] +# workflow = self.browse(cr, uid, id, context) +# for a in workflow.activities: +# nodes_name.append((a.id,a.name)) +# nodes.append(a.id) +# if a.flow_start: +# start.append(a.id) +# else: +# if not a.in_transitions: +# no_ancester.append(a.id) +# +# for t in a.out_transitions: +# transitions.append((a.id, t.act_to.id)) +# tres[t.id] = (a.id, t.act_to.id) +# +# +# g = graph(nodes, transitions, no_ancester) +# g.process(start) +# g.scale(*scale) +# result = g.result_get() +# results = {} +# +# for node in nodes_name: +# results[str(node[0])] = result[node[0]] +# results[str(node[0])]['name'] = node[1] +# +# return {'nodes': results, 'transitions': tres} def create(self, cr, user, vals, context=None): From 03f896fed992c0a62ef5d38bb80e29a9fa753ead Mon Sep 17 00:00:00 2001 From: "Ysa (Open ERP)" Date: Wed, 10 Feb 2010 14:28:03 +0530 Subject: [PATCH 008/433] [IMP] make optional node attribute in diagram view bzr revid: ysa@tinyerp.co.in-20100210085803-gp59xfor6zvv0taw --- bin/addons/base/rng/view.rng | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/addons/base/rng/view.rng b/bin/addons/base/rng/view.rng index 54cae3f5688..3b9d63ec989 100644 --- a/bin/addons/base/rng/view.rng +++ b/bin/addons/base/rng/view.rng @@ -45,8 +45,8 @@ - - + + From dfb5786fe03ab88a76e320f5fbb39d79b51a433c Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Wed, 10 Feb 2010 16:14:16 +0530 Subject: [PATCH 009/433] [IMP]:Improved the generic method for diagram view. bzr revid: apa@tinyerp.com-20100210104416-u5esh24kpb9j9ljq --- bin/addons/base/ir/ir_ui_view.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index 59d0e431f3a..036ab1c582b 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -144,6 +144,7 @@ class view(osv.osv): _Node_Obj = self.pool.get(node_obj) _Arrow_Obj = self.pool.get(conn_obj) + print model, node_obj, conn_obj, src_node, des_node for model_key,model_value in _Model_Obj._columns.items(): if model_value._type=='one2many': if model_value._obj==node_obj: @@ -151,17 +152,19 @@ class view(osv.osv): flag=False for node_key,node_value in _Node_Obj._columns.items(): if node_value._type=='one2many': - if src_node in _Arrow_Obj._columns and flag: - _Source_Field=node_key - if des_node in _Arrow_Obj._columns and not flag: - _Destination_Field=node_key - flag = True + if node_value._obj==conn_obj: + if src_node in _Arrow_Obj._columns and flag: + _Source_Field=node_key + if des_node in _Arrow_Obj._columns and not flag: + _Destination_Field=node_key + flag = True datas = _Model_Obj.read(cr, uid, id, [],context) + print ":::::::::::::::::",_Node_Field,_Source_Field,_Destination_Field for a in _Node_Obj.read(cr,uid,datas[_Node_Field],[]): nodes_name.append((a['id'],a['name'])) nodes.append(a['id']) - if a['flow_start']: + if a.has_key('flow_start') and a['flow_start']: start.append(a['id']) else: if not a[_Source_Field]: @@ -169,7 +172,10 @@ class view(osv.osv): for t in _Arrow_Obj.read(cr,uid, a[_Destination_Field],[]): transitions.append((a['id'], t[des_node][0])) tres[t['id']] = (a['id'], t[des_node][0]) + + print nodes, transitions, no_ancester g = graph(nodes, transitions, no_ancester) +# print start g.process(start) g.scale(*scale) result = g.result_get() @@ -177,6 +183,7 @@ class view(osv.osv): for node in nodes_name: results[str(node[0])] = result[node[0]] results[str(node[0])]['name'] = node[1] +# print {'nodes': results, 'transitions': tres} return {'nodes': results, 'transitions': tres} view() From c3b91a0a9d04bbc6897caeb96ec35b5d6db777a5 Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Wed, 10 Feb 2010 17:15:18 +0530 Subject: [PATCH 010/433] [IMP]:improved code bzr revid: apa@tinyerp.com-20100210114518-ck2on1npoatsan1n --- bin/addons/base/ir/ir_ui_view.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index 036ab1c582b..58fd6255399 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -144,11 +144,11 @@ class view(osv.osv): _Node_Obj = self.pool.get(node_obj) _Arrow_Obj = self.pool.get(conn_obj) - print model, node_obj, conn_obj, src_node, des_node for model_key,model_value in _Model_Obj._columns.items(): if model_value._type=='one2many': if model_value._obj==node_obj: _Node_Field=model_key + _Model_Field=model_value._fields_id flag=False for node_key,node_value in _Node_Obj._columns.items(): if node_value._type=='one2many': @@ -160,7 +160,6 @@ class view(osv.osv): flag = True datas = _Model_Obj.read(cr, uid, id, [],context) - print ":::::::::::::::::",_Node_Field,_Source_Field,_Destination_Field for a in _Node_Obj.read(cr,uid,datas[_Node_Field],[]): nodes_name.append((a['id'],a['name'])) nodes.append(a['id']) @@ -173,9 +172,7 @@ class view(osv.osv): transitions.append((a['id'], t[des_node][0])) tres[t['id']] = (a['id'], t[des_node][0]) - print nodes, transitions, no_ancester g = graph(nodes, transitions, no_ancester) -# print start g.process(start) g.scale(*scale) result = g.result_get() @@ -183,7 +180,6 @@ class view(osv.osv): for node in nodes_name: results[str(node[0])] = result[node[0]] results[str(node[0])]['name'] = node[1] -# print {'nodes': results, 'transitions': tres} return {'nodes': results, 'transitions': tres} view() From bff06b021a86ed6a8b9a74391826ed8486403fee Mon Sep 17 00:00:00 2001 From: "Ysa (Open ERP)" Date: Thu, 18 Feb 2010 12:08:58 +0530 Subject: [PATCH 011/433] Improve graph_get method. bzr revid: ysa@tinyerp.co.in-20100218063858-by8e5t1ycoei9snc --- bin/addons/base/ir/ir_ui_view.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index 58fd6255399..4241d79178e 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -138,6 +138,7 @@ class view(osv.osv): transitions = [] start = [] tres = {} + signal = {} no_ancester = [] _Model_Obj = self.pool.get(model) @@ -170,8 +171,12 @@ class view(osv.osv): no_ancester.append(a['id']) for t in _Arrow_Obj.read(cr,uid, a[_Destination_Field],[]): transitions.append((a['id'], t[des_node][0])) - tres[t['id']] = (a['id'], t[des_node][0]) - + tres[str(t['id'])] = (a['id'],t[des_node][0]) + if t['signal']: + signal[str(t['id'])] = t['signal'] + else: + signal[str(t['id'])] = t['condition'] + g = graph(nodes, transitions, no_ancester) g.process(start) g.scale(*scale) @@ -180,7 +185,7 @@ class view(osv.osv): for node in nodes_name: results[str(node[0])] = result[node[0]] results[str(node[0])]['name'] = node[1] - return {'nodes': results, 'transitions': tres} + return {'nodes': results, 'transitions': tres, 'signal' : signal} view() class view_sc(osv.osv): From cc6685b7612580e28124101e4166b7d65ce2454a Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Thu, 18 Feb 2010 14:48:04 +0530 Subject: [PATCH 012/433] [IMP]:code comment bzr revid: apa@tinyerp.com-20100218091804-0hcpceryiib2pmfh --- bin/addons/base/ir/ir_ui_view.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index 4241d79178e..b59ddbf720f 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -172,11 +172,10 @@ class view(osv.osv): for t in _Arrow_Obj.read(cr,uid, a[_Destination_Field],[]): transitions.append((a['id'], t[des_node][0])) tres[str(t['id'])] = (a['id'],t[des_node][0]) - if t['signal']: - signal[str(t['id'])] = t['signal'] - else: - signal[str(t['id'])] = t['condition'] - +# if t['signal']: +# signal[str(t['id'])] = t['signal'] +# else: +# signal[str(t['id'])] = t['condition'] g = graph(nodes, transitions, no_ancester) g.process(start) g.scale(*scale) @@ -185,7 +184,8 @@ class view(osv.osv): for node in nodes_name: results[str(node[0])] = result[node[0]] results[str(node[0])]['name'] = node[1] - return {'nodes': results, 'transitions': tres, 'signal' : signal} + return {'nodes': results, 'transitions': tres} +# return {'nodes': results, 'transitions': tres, 'signal' : signal} view() class view_sc(osv.osv): From 7b96c8e03a7c586f99d3d1bd7e28b6f475383bb6 Mon Sep 17 00:00:00 2001 From: "Ysa (Open ERP)" Date: Thu, 18 Feb 2010 16:59:35 +0530 Subject: [PATCH 013/433] Improve code bzr revid: ysa@tinyerp.co.in-20100218112935-mqfj2gum9l0z977f --- bin/addons/base/ir/ir_ui_view.py | 11 +++++------ bin/addons/base/ir/workflow/workflow_view.xml | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index b59ddbf720f..a092f2b2f45 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -172,10 +172,10 @@ class view(osv.osv): for t in _Arrow_Obj.read(cr,uid, a[_Destination_Field],[]): transitions.append((a['id'], t[des_node][0])) tres[str(t['id'])] = (a['id'],t[des_node][0]) -# if t['signal']: -# signal[str(t['id'])] = t['signal'] -# else: -# signal[str(t['id'])] = t['condition'] + if t['signal']: + signal[str(t['id'])] = t['signal'] + else: + signal[str(t['id'])] = t['condition'] g = graph(nodes, transitions, no_ancester) g.process(start) g.scale(*scale) @@ -184,8 +184,7 @@ class view(osv.osv): for node in nodes_name: results[str(node[0])] = result[node[0]] results[str(node[0])]['name'] = node[1] - return {'nodes': results, 'transitions': tres} -# return {'nodes': results, 'transitions': tres, 'signal' : signal} + return {'nodes': results, 'transitions': tres, 'signal' : signal} view() class view_sc(osv.osv): diff --git a/bin/addons/base/ir/workflow/workflow_view.xml b/bin/addons/base/ir/workflow/workflow_view.xml index 435d0f3d61f..5cc8933c698 100644 --- a/bin/addons/base/ir/workflow/workflow_view.xml +++ b/bin/addons/base/ir/workflow/workflow_view.xml @@ -33,7 +33,7 @@ - + From 34d8f3faa0ede721bb13ebe68be8c887fd422dc6 Mon Sep 17 00:00:00 2001 From: "ksh (Axelor)" Date: Thu, 18 Feb 2010 17:10:34 +0530 Subject: [PATCH 014/433] [IMP] get active activities for the workflow for the record bzr revid: ksh@openerp.co.in-20100218114034-8gcx0yxege2taaid --- bin/addons/base/ir/workflow/workflow.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/bin/addons/base/ir/workflow/workflow.py b/bin/addons/base/ir/workflow/workflow.py index bc51ee1f8e4..2a551e9549f 100644 --- a/bin/addons/base/ir/workflow/workflow.py +++ b/bin/addons/base/ir/workflow/workflow.py @@ -44,6 +44,25 @@ class workflow(osv.osv): wf_service.clear_cache(cr, user) return super(workflow, self).write(cr, user, ids, vals, context=context) + def get_active_workitems(self, cr, uid, res, res_id, context={}): + + cr.execute('select * from wkf where osv=%s limit 1',(res,)) + wkfinfo = cr.dictfetchone() + workitems = [] + + if wkfinfo: + cr.execute('SELECT id FROM wkf_instance \ + WHERE res_id=%s AND wkf_id=%s \ + ORDER BY state LIMIT 1', + (res_id, wkfinfo['id'])) + inst_id = cr.fetchone() + + cr.execute('select act_id,count(*) from wkf_workitem where inst_id=%s group by act_id', (inst_id,)) + workitems = dict(cr.fetchall()) + + return {'wkf': wkfinfo, 'workitems': workitems} + + # # scale = (vertical-distance, horizontal-distance, min-node-width(optional), min-node-height(optional), margin(default=20)) # From 6eadc92bee06569e984cf9bcb034c90b1e0d76f8 Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Mon, 22 Feb 2010 15:48:23 +0530 Subject: [PATCH 015/433] [IMP]:improved diagram code with signal in graph. bzr revid: apa@tinyerp.com-20100222101823-ksphjjdecxjn6cnp --- bin/addons/base/ir/ir_ui_view.py | 31 +++++++++++++++---------------- bin/addons/base/rng/view.rng | 15 ++++++++------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index a092f2b2f45..e7be5117828 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -132,18 +132,18 @@ class view(osv.osv): return super(view, self).write(cr, uid, ids, vals, context) - def graph_get(self, cr, uid, id, model, node_obj, conn_obj, src_node, des_node, scale,context={}): - nodes= [] - nodes_name = [] - transitions = [] - start = [] - tres = {} - signal = {} - no_ancester = [] + def graph_get(self, cr, uid, id, model, node_obj, conn_obj, src_node, des_node,signal,scale,context={}): + nodes=[] + nodes_name=[] + transitions=[] + start=[] + tres={} + sig={} + no_ancester=[] - _Model_Obj = self.pool.get(model) - _Node_Obj = self.pool.get(node_obj) - _Arrow_Obj = self.pool.get(conn_obj) + _Model_Obj=self.pool.get(model) + _Node_Obj=self.pool.get(node_obj) + _Arrow_Obj=self.pool.get(conn_obj) for model_key,model_value in _Model_Obj._columns.items(): if model_value._type=='one2many': @@ -172,10 +172,9 @@ class view(osv.osv): for t in _Arrow_Obj.read(cr,uid, a[_Destination_Field],[]): transitions.append((a['id'], t[des_node][0])) tres[str(t['id'])] = (a['id'],t[des_node][0]) - if t['signal']: - signal[str(t['id'])] = t['signal'] - else: - signal[str(t['id'])] = t['condition'] + if t.has_key(str(signal)) and str(t[signal])=='False': + t[signal]=' ' + sig[str(t['id'])] = (a['id'],t.get(signal,' ')) g = graph(nodes, transitions, no_ancester) g.process(start) g.scale(*scale) @@ -184,7 +183,7 @@ class view(osv.osv): for node in nodes_name: results[str(node[0])] = result[node[0]] results[str(node[0])]['name'] = node[1] - return {'nodes': results, 'transitions': tres, 'signal' : signal} + return {'nodes': results, 'transitions': tres, 'signal' : sig} view() class view_sc(osv.osv): diff --git a/bin/addons/base/rng/view.rng b/bin/addons/base/rng/view.rng index 3b9d63ec989..a69f06d9c39 100644 --- a/bin/addons/base/rng/view.rng +++ b/bin/addons/base/rng/view.rng @@ -32,7 +32,7 @@ - + @@ -41,7 +41,7 @@ - + @@ -49,25 +49,26 @@ - + - + - + + - + - + From 7da66c83aef25ac247f5ace6a1bfb0763fe1be44 Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Mon, 22 Feb 2010 16:34:19 +0530 Subject: [PATCH 016/433] smallchanges bzr revid: apa@tinyerp.com-20100222110419-0k51dftd64uycz02 --- bin/addons/base/ir/workflow/workflow_view.xml | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/bin/addons/base/ir/workflow/workflow_view.xml b/bin/addons/base/ir/workflow/workflow_view.xml index 5cc8933c698..db42935b36f 100644 --- a/bin/addons/base/ir/workflow/workflow_view.xml +++ b/bin/addons/base/ir/workflow/workflow_view.xml @@ -2,13 +2,13 @@ - + - + workflow.form workflow @@ -23,20 +23,20 @@ - + workflow.diagram workflow diagram - + - + @@ -51,7 +51,7 @@ - + Workflows workflow @@ -126,7 +126,7 @@ - + Activities workflow.activity @@ -134,14 +134,14 @@ - - + + - + workflow.transition.form workflow.transition @@ -174,8 +174,8 @@ - - + + Transitions workflow.transition @@ -183,13 +183,13 @@ - + - + workflow.instance.form workflow.instance @@ -218,7 +218,7 @@ - + Instances workflow.instance @@ -226,13 +226,13 @@ - + - + workflow.workitem.form workflow.workitem @@ -259,7 +259,7 @@ - + Workitems workflow.workitem @@ -267,6 +267,6 @@ - + From 134979d1d1c2e462328da19e01fddf91746c10a1 Mon Sep 17 00:00:00 2001 From: "rpa (Open ERP)" Date: Mon, 22 Feb 2010 19:15:25 +0530 Subject: [PATCH 017/433] [IMP]: mrp: Added new osv_memory wizard to change production qty, Improvement in logic to change production qty as per new move_lines computation bzr revid: rpa@openerp.co.in-20100222134525-uxhwpj9jvi2torl5 --- addons/mrp/__terp__.py | 1 + addons/mrp/mrp.py | 15 +++ addons/mrp/mrp_view.xml | 15 +-- addons/mrp/wizard/__init__.py | 2 + .../wizard/wizard_change_production_qty.py | 2 + addons/mrp/wizard/wizard_mrp.py | 113 ++++++++++++++++++ 6 files changed, 139 insertions(+), 9 deletions(-) create mode 100644 addons/mrp/wizard/wizard_mrp.py diff --git a/addons/mrp/__terp__.py b/addons/mrp/__terp__.py index 3bf2410cff9..aef16034573 100644 --- a/addons/mrp/__terp__.py +++ b/addons/mrp/__terp__.py @@ -60,6 +60,7 @@ 'security/ir.model.access.csv', 'mrp_workflow.xml', 'mrp_data.xml', + 'wizard/wizard_mrp.xml', 'mrp_view.xml', 'mrp_wizard.xml', 'mrp_report.xml', diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index 5e789c569da..1f941b8195c 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -641,6 +641,21 @@ class mrp_production(osv.osv): } ) return amount + def action_in_production_my(self, cr, uid, ids, qty=None): + print 'action_in_production', ids, qty + move_obj = self.pool.get('stock.move') + move_ids = [] + for production in self.browse(cr, uid, ids): + move_ids = map(lambda x: x.id, production.move_lines + production.move_lines2) + if not production.date_start: + self.write(cr, uid, [production.id], + {'date_start': time.strftime('%Y-%m-%d %H:%M:%S')}) + print 'MMMMMMMMMMMMMMMMMMMMMMMM', move_ids + for move in move_obj.browse(cr, uid, move_ids): + move_obj.consume_moves(cr, uid, move.id, qty, move.location_id.id) + +# self.write(cr, uid, ids, {'state': 'in_production'}) + return True def action_in_production(self, cr, uid, ids): move_ids = [] for production in self.browse(cr, uid, ids): diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index 2ee0c1cd9fb..d3d334601fb 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -439,14 +439,6 @@ - - mrp.production.form mrp.production @@ -462,7 +454,11 @@ - +