summaryrefslogtreecommitdiff
path: root/bin/addons/base/ir/workflow/workflow.py
diff options
context:
space:
mode:
authorced <>2007-07-26 08:31:36 +0000
committerced <>2007-07-26 08:31:36 +0000
commitcfbf7686547d7c9ac2c4165ea5b8d66af3c17b03 (patch)
treee8dec50cc406474504c194e29e6a0282e149cbcd /bin/addons/base/ir/workflow/workflow.py
parent1029e1323b2a303c707bfc3872abe67744cf310b (diff)
kernel: improve workflow
- add index on workitem, instance - add cache on wkf bzr revid: ced-81afcda4514578d17d998c4e3a8ff516d3346b97
Diffstat (limited to 'bin/addons/base/ir/workflow/workflow.py')
-rw-r--r--bin/addons/base/ir/workflow/workflow.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/bin/addons/base/ir/workflow/workflow.py b/bin/addons/base/ir/workflow/workflow.py
index ccecd477fde..0ff035c564a 100644
--- a/bin/addons/base/ir/workflow/workflow.py
+++ b/bin/addons/base/ir/workflow/workflow.py
@@ -28,6 +28,7 @@
##############################################################################
from osv import fields, osv
+import netsvc
class workflow(osv.osv):
_name = "workflow"
@@ -42,6 +43,20 @@ class workflow(osv.osv):
_defaults = {
'on_create': lambda *a: True
}
+
+ def write(self, cr, user, ids, vals, context=None):
+ if not context:
+ context={}
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.clear_cache(cr, user)
+ return super(workflow, self).write(cr, user, ids, vals, context=context)
+
+ def create(self, cr, user, vals, context=None):
+ if not context:
+ context={}
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.clear_cache(cr, user)
+ return super(workflow, self).create(cr, user, vals, context=context)
workflow()
class wkf_activity(osv.osv):
@@ -100,6 +115,12 @@ class wkf_instance(osv.osv):
'res_type': fields.char('Resource Model', size=64),
'state': fields.char('State', size=32),
}
+ def _auto_init(self, cr):
+ super(wkf_instance, self)._auto_init(cr)
+ cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = \'wkf_instance_res_id_res_type_state_index\'')
+ if not cr.fetchone():
+ cr.execute('CREATE INDEX wkf_instance_res_id_res_type_state_index ON wkf_instance (res_id, res_type, state)')
+ cr.commit()
wkf_instance()
class wkf_workitem(osv.osv):
@@ -110,7 +131,7 @@ class wkf_workitem(osv.osv):
_columns = {
'act_id': fields.many2one('workflow.activity', 'Activity', required=True, ondelete="cascade"),
'subflow_id': fields.many2one('workflow.instance', 'Subflow', ondelete="cascade"),
- 'inst_id': fields.many2one('workflow.instance', 'Instance', required=True, ondelete="cascade"),
+ 'inst_id': fields.many2one('workflow.instance', 'Instance', required=True, ondelete="cascade", select=1),
'state': fields.char('State', size=64),
}
wkf_workitem()