diff options
| author | ced <> | 2007-07-26 08:31:36 +0000 |
|---|---|---|
| committer | ced <> | 2007-07-26 08:31:36 +0000 |
| commit | cfbf7686547d7c9ac2c4165ea5b8d66af3c17b03 (patch) | |
| tree | e8dec50cc406474504c194e29e6a0282e149cbcd /bin/addons/base/ir/workflow/workflow.py | |
| parent | 1029e1323b2a303c707bfc3872abe67744cf310b (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.py | 23 |
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() |
