From: Jeremy Kersten Date: Mon, 8 Dec 2014 15:25:30 +0000 (+0100) Subject: [IMP] ir_http: don't handle exception in dev mode but use the werkzeug debugger excep... X-Git-Url: http://git.inspyration.org/?p=odoo%2Fodoo.git;a=commitdiff_plain;h=70ab2a6ed19f21319e4384b4a7f197f2ac1b9b7b [IMP] ir_http: don't handle exception in dev mode but use the werkzeug debugger except if cause has been already identified (website Qweb) --- diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py index 44f9dca..ac92036 100644 --- a/addons/website/models/ir_http.py +++ b/addons/website/models/ir_http.py @@ -211,6 +211,8 @@ class ir_http(orm.AbstractModel): # if parent excplicitely returns a plain response, then we don't touch it return response except Exception, e: + if openerp.tools.config['dev_mode'] and (not isinstance(exception, ir_qweb.QWebException) or not exception.qweb.get('cause')): + raise exception = e values = dict( diff --git a/openerp/addons/base/ir/ir_http.py b/openerp/addons/base/ir/ir_http.py index 64e6636..c70be2c 100644 --- a/openerp/addons/base/ir/ir_http.py +++ b/openerp/addons/base/ir/ir_http.py @@ -96,6 +96,10 @@ class ir_http(osv.AbstractModel): def _handle_exception(self, exception): # If handle_exception returns something different than None, it will be used as a response + + # Don't handle exception but use werkeug debugger if server in --dev mode + if openerp.tools.config['dev_mode']: + raise try: return request._handle_exception(exception) except openerp.exceptions.AccessDenied: @@ -119,7 +123,6 @@ class ir_http(osv.AbstractModel): if processing: return processing - # set and execute handler try: request.set_handler(func, arguments, auth_method) diff --git a/openerp/service/server.py b/openerp/service/server.py index 9d10e29..12f0505 100644 --- a/openerp/service/server.py +++ b/openerp/service/server.py @@ -19,6 +19,7 @@ import time import unittest2 import werkzeug.serving +from werkzeug.debug import DebuggedApplication if os.name == 'posix': # Unix only for workers @@ -894,6 +895,7 @@ def start(preload=None, stop=False): watcher.start() else: _logger.warning("'watchdog' module not installed. Code autoreload feature is disabled") + server.app = DebuggedApplication(server.app, evalex=True) rc = server.run(preload, stop)