Reviewers: ,
Please review this at http://codereview.tryton.org/549003/
Affected files:
M tryton/common/common.py
Index: tryton/common/common.py
===================================================================
--- a/tryton/common/common.py
+++ b/tryton/common/common.py
@@ -988,6 +988,8 @@
def process_exception(exception, *args, **kwargs):
+ rpc_execute = kwargs.get('rpc_execute', rpc.execute)
+
if isinstance(exception, TrytonError):
if exception.faultCode == 'BadFingerprint':
warning(
@@ -1013,14 +1015,15 @@
'always': (res == 'always'),
}, rpc.CONTEXT)
try:
- rpc.execute(*args2)
+ rpc_execute(*args2)
except TrytonServerError, exception:
process_exception(exception, *args2)
if args:
try:
- return rpc.execute(*args)
+ return rpc_execute(*args)
except TrytonServerError, exception:
- return process_exception(exception, *args)
+ return process_exception(exception, *args,
+ rpc_execute=rpc_execute)
return True
return False
elif exception.faultCode == 'UserError':
@@ -1033,9 +1036,10 @@
if '_timestamp' in args[5]:
del args[5]['_timestamp']
try:
- return rpc.execute(*args)
+ return rpc_execute(*args)
except TrytonServerError, exception:
- return process_exception(exception, *args)
+ return process_exception(exception, *args,
+ rpc_execute=rpc_execute)
return False
else:
message(_('Concurrency Exception'),
msg_type=gtk.MESSAGE_ERROR)
@@ -1063,9 +1067,10 @@
continue
if args:
try:
- return rpc.execute(*args)
+ return rpc_execute(*args)
except TrytonServerError, exception:
- return process_exception(exception, *args)
+ return process_exception(exception, *args,
+ rpc_execute=rpc_execute)
return True
finally:
PLOCK.release()
@@ -1243,12 +1248,14 @@
self.parent.window.set_cursor(None)
if self.exception:
if process_exception_p:
- if process_exception(self.exception):
- self.res = None
- self.error = False
- self.exception = None
- return self.run(process_exception_p)
- raise RPCException(self.exception)
+ def rpc_execute(*args):
+ return RPCProgress('execute',
+ args).run(process_exception_p, main_iteration_p)
+ result = process_exception(self.exception, *self.args,
+ rpc_execute=rpc_execute)
+ if result is False:
+ raise RPCException(self.exception)
+ return result
else:
raise self.exception
return self.res
--
[email protected] mailing list