[MERGE] ir_cron: expose the method (that can be extended) called when an exception occurs on a callback.
bzr revid: vmt@openerp.com-20110524110707-hfdulmtxprhxx6bw
This commit is contained in:
commit
7dbb430fba
|
@ -86,7 +86,12 @@ class ir_cron(osv.osv, netsvc.Agent):
|
|||
(_check_args, 'Invalid arguments', ['args']),
|
||||
]
|
||||
|
||||
def _callback(self, cr, uid, model, func, args):
|
||||
def _handle_callback_exception(self, cr, uid, model, func, args, job_id, job_exception):
|
||||
cr.rollback()
|
||||
logger=logging.getLogger('cron')
|
||||
logger.exception("Call of self.pool.get('%s').%s(cr, uid, *%r) failed in Job %s" % (model, func, args, job_id))
|
||||
|
||||
def _callback(self, cr, uid, model, func, args, job_id):
|
||||
args = str2tuple(args)
|
||||
m = self.pool.get(model)
|
||||
if m and hasattr(m, func):
|
||||
|
@ -96,9 +101,7 @@ class ir_cron(osv.osv, netsvc.Agent):
|
|||
depth=(None if self._logger.isEnabledFor(logging.DEBUG_RPC_ANSWER) else 1), fn='object.execute')
|
||||
f(cr, uid, *args)
|
||||
except Exception, e:
|
||||
cr.rollback()
|
||||
logger=logging.getLogger('cron')
|
||||
logger.exception("Job call of self.pool.get('%s').%s(cr, uid, *%r) failed" % (model, func, args))
|
||||
self._handle_callback_exception(cr, uid, model, func, args, job_id, e)
|
||||
|
||||
|
||||
def _poolJobs(self, db_name, check=False):
|
||||
|
@ -120,7 +123,7 @@ class ir_cron(osv.osv, netsvc.Agent):
|
|||
if numbercall > 0:
|
||||
numbercall -= 1
|
||||
if not ok or job['doall']:
|
||||
self._callback(cr, job['user_id'], job['model'], job['function'], job['args'])
|
||||
self._callback(cr, job['user_id'], job['model'], job['function'], job['args'], job['id'])
|
||||
if numbercall:
|
||||
nextcall += _intervalTypes[job['interval_type']](job['interval_number'])
|
||||
ok = True
|
||||
|
|
Loading…
Reference in New Issue