diff options
Diffstat (limited to 'addons/web/controllers/main.py')
| -rw-r--r-- | addons/web/controllers/main.py | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 9ed3e06026e..f1d44b0c885 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -437,18 +437,21 @@ class Database(openerpweb.Controller): @openerpweb.httprequest def backup(self, req, backup_db, backup_pwd, token): - db_dump = base64.b64decode( - req.session.proxy("db").dump(backup_pwd, backup_db)) - filename = "%(db)s_%(timestamp)s.dump" % { - 'db': backup_db, - 'timestamp': datetime.datetime.utcnow().strftime( - "%Y-%m-%d_%H-%M-%SZ") - } - return req.make_response(db_dump, - [('Content-Type', 'application/octet-stream; charset=binary'), - ('Content-Disposition', 'attachment; filename="' + filename + '"')], - {'fileToken': int(token)} - ) + try: + db_dump = base64.b64decode( + req.session.proxy("db").dump(backup_pwd, backup_db)) + filename = "%(db)s_%(timestamp)s.dump" % { + 'db': backup_db, + 'timestamp': datetime.datetime.utcnow().strftime( + "%Y-%m-%d_%H-%M-%SZ") + } + return req.make_response(db_dump, + [('Content-Type', 'application/octet-stream; charset=binary'), + ('Content-Disposition', 'attachment; filename="' + filename + '"')], + {'fileToken': int(token)} + ) + except xmlrpclib.Fault, e: + return simplejson.dumps([[],[{'error': e.faultCode, 'title': 'backup Database'}]]) @openerpweb.httprequest def restore(self, req, db_file, restore_pwd, new_db): @@ -1521,8 +1524,12 @@ class Action(openerpweb.Controller): @openerpweb.jsonrequest def run(self, req, action_id): - return clean_action(req, req.session.model('ir.actions.server').run( - [action_id], req.session.eval_context(req.context))) + return_action = req.session.model('ir.actions.server').run( + [action_id], req.session.eval_context(req.context)) + if return_action: + return clean_action(req, return_action) + else: + return False class Export(View): _cp_path = "/web/export" |
