diff options
| author | Vidhin Mehta <vme@tinyerp.com> | 2013-01-28 15:10:49 +0530 |
|---|---|---|
| committer | Vidhin Mehta <vme@tinyerp.com> | 2013-01-28 15:10:49 +0530 |
| commit | b45cea4ab860743d21c1ff9991c2f881bc841608 (patch) | |
| tree | 972f7fe2b131995481b68d775b9a52a32301f7ad /addons/process/process.py | |
| parent | ef72f482fbeaa1998a5d857d1081d21b9e759ddd (diff) | |
| parent | b390a5697cd4eb8cced5f4cdcf2c34b6cad3a7e4 (diff) | |
[MERGE]Trunk.
bzr revid: vme@tinyerp.com-20130128094049-oddx6ks274hrfq4c
Diffstat (limited to 'addons/process/process.py')
| -rw-r--r-- | addons/process/process.py | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/addons/process/process.py b/addons/process/process.py index fa7596287a3..30b37a8b0e2 100644 --- a/addons/process/process.py +++ b/addons/process/process.py @@ -19,9 +19,9 @@ # ############################################################################## -import pooler -import tools -from osv import fields, osv +from openerp import pooler +from openerp import tools +from openerp.osv import fields, osv class Env(dict): @@ -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: |
