* Improved `process` module
- process graph without resource - added prefered resource for the process bzr revid: ame@tinyerp.com-20081224102656-z0xi440xpnq7x42p
This commit is contained in:
parent
ba8937a200
commit
02cdbfb31a
|
@ -50,6 +50,7 @@ class process_process(osv.osv):
|
|||
_columns = {
|
||||
'name': fields.char('Name', size=30,required=True, translate=True),
|
||||
'active': fields.boolean('Active'),
|
||||
'model_id': fields.many2one('ir.model', 'Object', ondelete='set null'),
|
||||
'note': fields.text('Notes', translate=True),
|
||||
'node_ids': fields.one2many('process.node', 'process_id', 'Nodes')
|
||||
}
|
||||
|
@ -64,19 +65,24 @@ class process_process(osv.osv):
|
|||
if not model_ids:
|
||||
return []
|
||||
|
||||
nodes = pool.get('process.node').search(cr, uid, [('model_id', 'in', model_ids)])
|
||||
if not nodes:
|
||||
return []
|
||||
|
||||
nodes = pool.get('process.node').browse(cr, uid, nodes, context)
|
||||
|
||||
unique = []
|
||||
result = []
|
||||
|
||||
for node in nodes:
|
||||
if node.process_id.id not in unique:
|
||||
result.append((node.process_id.id, node.process_id.name))
|
||||
unique.append(node.process_id.id)
|
||||
|
||||
# search all processes
|
||||
res = pool.get('process.process').search(cr, uid, [('model_id', 'in', model_ids)])
|
||||
if res:
|
||||
res = pool.get('process.process').browse(cr, uid, res, context)
|
||||
for process in res:
|
||||
result.append((process.id, process.name))
|
||||
|
||||
return result
|
||||
|
||||
# else search process nodes
|
||||
res = pool.get('process.node').search(cr, uid, [('model_id', 'in', model_ids)])
|
||||
if res:
|
||||
res = pool.get('process.node').browse(cr, uid, res, context)
|
||||
for node in res:
|
||||
if (node.process_id.id, node.process_id.name) not in result:
|
||||
result.append((node.process_id.id, node.process_id.name))
|
||||
|
||||
return result
|
||||
|
||||
|
@ -85,21 +91,25 @@ class process_process(osv.osv):
|
|||
pool = pooler.get_pool(cr.dbname)
|
||||
|
||||
process = pool.get('process.process').browse(cr, uid, [id])[0]
|
||||
current_object = pool.get(res_model).browse(cr, uid, [res_id], context)[0]
|
||||
current_user = pool.get('res.users').browse(cr, uid, [uid], context)[0]
|
||||
|
||||
expr_context = Env(current_object, current_user)
|
||||
|
||||
notes = process.note
|
||||
states = dict(pool.get(res_model).fields_get(cr, uid, context=context).get('state', {}).get('selection', {}))
|
||||
|
||||
title = process.name
|
||||
|
||||
expr_context = {}
|
||||
perm = None
|
||||
|
||||
if res_id:
|
||||
current_object = pool.get(res_model).browse(cr, uid, [res_id], context)[0]
|
||||
current_user = pool.get('res.users').browse(cr, uid, [uid], context)[0]
|
||||
expr_context = Env(current_object, current_user)
|
||||
title = _("%s - Resource: %s, State: %s") % (process.name, current_object.name, states.get(getattr(current_object, 'state'), 'N/A'))
|
||||
perm = pool.get(res_model).perm_read(cr, uid, [res_id], context)[0]
|
||||
|
||||
notes = process.note or "N/A"
|
||||
nodes = {}
|
||||
start = []
|
||||
transitions = {}
|
||||
|
||||
states = dict(pool.get(res_model).fields_get(cr, uid, context=context).get('state', {}).get('selection', {}))
|
||||
title = "%s - Resource: %s, State: %s" % (process.name, current_object.name, states.get(getattr(current_object, 'state'), 'N/A'))
|
||||
|
||||
perm = pool.get(res_model).perm_read(cr, uid, [res_id], context)[0]
|
||||
|
||||
for node in process.node_ids:
|
||||
data = {}
|
||||
data['name'] = node.name
|
||||
|
@ -126,7 +136,6 @@ class process_process(osv.osv):
|
|||
try:
|
||||
data['active'] = eval(node.model_states, expr_context)
|
||||
except Exception, e:
|
||||
# waring: invalid state expression
|
||||
pass
|
||||
|
||||
if not data['active']:
|
||||
|
@ -212,10 +221,11 @@ class process_process(osv.osv):
|
|||
except:
|
||||
pass
|
||||
|
||||
for nid, node in nodes.items():
|
||||
if not node['gray'] and (node['active'] or node['model'] == res_model):
|
||||
update_relatives(nid, res_id, res_model)
|
||||
break
|
||||
if res_id:
|
||||
for nid, node in nodes.items():
|
||||
if not node['gray'] and (node['active'] or node['model'] == res_model):
|
||||
update_relatives(nid, res_id, res_model)
|
||||
break
|
||||
|
||||
# calculate graph layout
|
||||
g = tools.graph(nodes.keys(), map(lambda x: (x['source'], x['target']), transitions.values()))
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
<group colspan="4" string="Details">
|
||||
<field name="name" select="1"/>
|
||||
<field name="active" select="2"/>
|
||||
<field name="model_id" select="1"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Nodes">
|
||||
|
@ -120,6 +121,7 @@
|
|||
<field name="arch" type="xml">
|
||||
<tree string="Process">
|
||||
<field name="name"/>
|
||||
<field name="model_id" select="1"/>
|
||||
<field name="active"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
|
Loading…
Reference in New Issue