[FIX] correctly display crash manager in case of report error
lp bug: https://launchpad.net/bugs/917227 fixed bzr revid: xmo@openerp.com-20120119144837-dp6r7vqx581b4mrt
This commit is contained in:
parent
c078d23d16
commit
f9cbad5bf6
|
@ -3,6 +3,7 @@
|
|||
# OpenERP Web HTTP layer
|
||||
#----------------------------------------------------------
|
||||
import ast
|
||||
import cgi
|
||||
import contextlib
|
||||
import functools
|
||||
import logging
|
||||
|
@ -254,7 +255,30 @@ class HttpRequest(WebRequest):
|
|||
else:
|
||||
akw[key] = type(value)
|
||||
_logger.debug("%s --> %s.%s %r", self.httprequest.method, controller.__class__.__name__, method.__name__, akw)
|
||||
r = method(controller, self, **self.params)
|
||||
try:
|
||||
r = method(controller, self, **self.params)
|
||||
except xmlrpclib.Fault, e:
|
||||
r = werkzeug.exceptions.InternalServerError(cgi.escape(simplejson.dumps({
|
||||
'code': 200,
|
||||
'message': "OpenERP Server Error",
|
||||
'data': {
|
||||
'type': 'server_exception',
|
||||
'fault_code': e.faultCode,
|
||||
'debug': "Server %s\nClient %s" % (
|
||||
e.faultString, traceback.format_exc())
|
||||
}
|
||||
})))
|
||||
except Exception:
|
||||
logging.getLogger(__name__ + '.HttpRequest.dispatch').exception(
|
||||
"An error occurred while handling a json request")
|
||||
r = werkzeug.exceptions.InternalServerError(cgi.escape(simplejson.dumps({
|
||||
'code': 300,
|
||||
'message': "OpenERP WebClient Error",
|
||||
'data': {
|
||||
'type': 'client_exception',
|
||||
'debug': "Client %s" % traceback.format_exc()
|
||||
}
|
||||
})))
|
||||
if self.debug or 1:
|
||||
if isinstance(r, (werkzeug.wrappers.BaseResponse, werkzeug.exceptions.HTTPException)):
|
||||
_logger.debug('<-- %s', r)
|
||||
|
|
|
@ -6,6 +6,7 @@ import csv
|
|||
import glob
|
||||
import itertools
|
||||
import operator
|
||||
import traceback
|
||||
import os
|
||||
import re
|
||||
import simplejson
|
||||
|
@ -17,6 +18,7 @@ from xml.etree import ElementTree
|
|||
from cStringIO import StringIO
|
||||
|
||||
import babel.messages.pofile
|
||||
import werkzeug.exceptions
|
||||
import werkzeug.utils
|
||||
try:
|
||||
import xlwt
|
||||
|
@ -321,18 +323,13 @@ class Database(openerpweb.Controller):
|
|||
|
||||
@openerpweb.httprequest
|
||||
def backup(self, req, backup_db, backup_pwd, token):
|
||||
try:
|
||||
db_dump = base64.b64decode(
|
||||
req.session.proxy("db").dump(backup_pwd, backup_db))
|
||||
return req.make_response(db_dump,
|
||||
[('Content-Type', 'application/octet-stream; charset=binary'),
|
||||
('Content-Disposition', 'attachment; filename="' + backup_db + '.dump"')],
|
||||
{'fileToken': int(token)}
|
||||
)
|
||||
except xmlrpclib.Fault, e:
|
||||
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
|
||||
return 'Backup Database|' + e.faultCode
|
||||
return 'Backup Database|Could not generate database backup'
|
||||
db_dump = base64.b64decode(
|
||||
req.session.proxy("db").dump(backup_pwd, backup_db))
|
||||
return req.make_response(db_dump,
|
||||
[('Content-Type', 'application/octet-stream; charset=binary'),
|
||||
('Content-Disposition', 'attachment; filename="' + backup_db + '.dump"')],
|
||||
{'fileToken': int(token)}
|
||||
)
|
||||
|
||||
@openerpweb.httprequest
|
||||
def restore(self, req, db_file, restore_pwd, new_db):
|
||||
|
|
|
@ -472,16 +472,13 @@ openerp.web.Database = openerp.web.Widget.extend(/** @lends openerp.web.Database
|
|||
self.blockUI();
|
||||
self.session.get_file({
|
||||
form: form,
|
||||
error: function (body) {
|
||||
var error = body.firstChild.data.split('|');
|
||||
self.display_error({
|
||||
title: error[0],
|
||||
error: error[1]
|
||||
});
|
||||
success: function () {
|
||||
self.do_notify(_t("Backed"),
|
||||
_t("Database backed up successfully"));
|
||||
},
|
||||
error: openerp.webclient.crashmanager.on_rpc_error,
|
||||
complete: function() {
|
||||
self.unblockUI();
|
||||
self.do_notify(_t("Backed"), _t("Database backed up successfully"));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -809,8 +809,15 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
|
|||
.attr({id: id, name: id})
|
||||
.appendTo(document.body)
|
||||
.load(function () {
|
||||
if (options.error) { options.error(this.contentDocument.body); }
|
||||
complete();
|
||||
try {
|
||||
if (options.error) {
|
||||
options.error(JSON.parse(
|
||||
this.contentDocument.body.childNodes[1].textContent
|
||||
));
|
||||
}
|
||||
} finally {
|
||||
complete();
|
||||
}
|
||||
});
|
||||
|
||||
if (options.form) {
|
||||
|
|
|
@ -195,7 +195,8 @@ session.web.ActionManager = session.web.Widget.extend({
|
|||
on_closed();
|
||||
}
|
||||
self.dialog_stop();
|
||||
}
|
||||
},
|
||||
error: session.webclient.crashmanager.on_rpc_error
|
||||
})
|
||||
});
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue