From 3e0267178ccfd2bf12d5a4a4e6d9aeb08e4a5cb2 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Fri, 30 Mar 2012 23:49:06 +0200 Subject: [PATCH] [IMP] workflow: preventing deleting an activity with existing workitems, as a safeguard Now that workitems will be cascade-deleted along with their activities it is important to prevent accidental deletion. bzr revid: odo@openerp.com-20120330214906-ioo3gpg5a1j1e85o --- openerp/addons/base/ir/workflow/workflow.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/ir/workflow/workflow.py b/openerp/addons/base/ir/workflow/workflow.py index 8ec843230d4..d734dda133b 100644 --- a/openerp/addons/base/ir/workflow/workflow.py +++ b/openerp/addons/base/ir/workflow/workflow.py @@ -19,9 +19,10 @@ # ############################################################################## -from osv import fields, osv -from tools import graph -import netsvc +from openerp.osv import fields, osv +from openerp.tools import graph +from openerp.tools.translate import _ +from openerp import netsvc class workflow(osv.osv): _name = "workflow" @@ -138,6 +139,14 @@ class wkf_activity(osv.osv): 'join_mode': lambda *a: 'XOR', 'split_mode': lambda *a: 'XOR', } + + def unlink(self, cr, uid, ids, context=None): + if context is None: context = {} + if not context.get('_force_unlink') and self.pool.get('workflow.workitem').search(cr, uid, [('act_id', 'in', ids)]): + raise osv.except_osv(_('Operation forbidden'), + _('Please make sure no workitems refer to an activity before deleting it!')) + super(wkf_activity, self).unlink(cr, uid, ids, context=context) + wkf_activity() class wkf_transition(osv.osv):