summaryrefslogtreecommitdiff
path: root/addons/process
diff options
context:
space:
mode:
authorOlivier Dony <odo@openerp.com>2012-12-18 03:11:23 +0100
committerOlivier Dony <odo@openerp.com>2012-12-18 03:11:23 +0100
commit84d7987f337ffc8f2dfa94342560c979cc4a5cb1 (patch)
treeeb5b9b628997ca4b50aa5f67dc2075f4a58afa0e /addons/process
parent5b56a77add9a4f92b5cf2f84d419caff9b0dc4e6 (diff)
parent9cd7630f1f7e66e195e97eed8fb30de5f3b4d478 (diff)
[MERGE] Bugfixes from 6.1 until revision 6900
rev.6900 = xal@openerp.com-20120720134532-t07xr3lp8ouhn2dv bzr revid: odo@openerp.com-20121218021123-9ligpn7bkr9zo4n7
Diffstat (limited to 'addons/process')
-rw-r--r--addons/process/process.py37
1 files changed, 22 insertions, 15 deletions
diff --git a/addons/process/process.py b/addons/process/process.py
index fa7596287a3..6dc3493231c 100644
--- a/addons/process/process.py
+++ b/addons/process/process.py
@@ -118,6 +118,7 @@ class process_process(osv.osv):
data['active'] = False
data['gray'] = False
data['url'] = node.help_url
+ data['model_states'] = node.model_states
# get assosiated workflow
if data['model']:
@@ -131,21 +132,21 @@ class process_process(osv.osv):
if node.menu_id:
data['menu'] = {'name': node.menu_id.complete_name, 'id': node.menu_id.id}
- if node.model_id and node.model_id.model == res_model:
- try:
- data['active'] = eval(node.model_states, expr_context)
- except Exception:
- pass
-
- if not data['active']:
- try:
- gray = True
- for cond in node.condition_ids:
- if cond.model_id and cond.model_id.model == res_model:
- gray = gray and eval(cond.model_states, expr_context)
- data['gray'] = not gray
- except:
- pass
+ try:
+ gray = True
+ for cond in node.condition_ids:
+ if cond.model_id and cond.model_id.model == res_model:
+ gray = gray and eval(cond.model_states, expr_context)
+ data['gray'] = not gray
+ except:
+ pass
+
+ if not data['gray']:
+ if node.model_id and node.model_id.model == res_model:
+ try:
+ data['active'] = eval(node.model_states, expr_context)
+ except Exception:
+ pass
nodes[node.id] = data
if node.flow_start:
@@ -198,6 +199,12 @@ class process_process(osv.osv):
resource['name'] = pool.get(ref_model).name_get(cr, uid, [ref_id], context=context)[0][1]
resource['perm'] = pool.get(ref_model).perm_read(cr, uid, [ref_id], context=context)[0]
+ ref_expr_context = Env(refobj, current_user)
+ try:
+ if not nodes[nid]['gray']:
+ nodes[nid]['active'] = eval(nodes[nid]['model_states'], ref_expr_context)
+ except:
+ pass
for r in relatives:
node = nodes[r]
if 'res' not in node: