diff options
| author | niv-openerp <nicolas.vanhoren@openerp.com> | 2013-06-10 17:45:14 +0200 |
|---|---|---|
| committer | niv-openerp <nicolas.vanhoren@openerp.com> | 2013-06-10 17:45:14 +0200 |
| commit | a94bbf8e5e3aafb236a059f82b855d16dc033d9e (patch) | |
| tree | 0b3f2cfa795a23150a10d561996052a023fd48f5 /addons/web/http.py | |
| parent | 901ba0cba5ea8413ea5cb64974ce8fc973093105 (diff) | |
| parent | 02aa3f211471a55fd956027a84b6baca1272ffa1 (diff) | |
[FIX] Merge fix in saas1 for the problem that made the server crash when install a db
bzr revid: nicolas.vanhoren@openerp.com-20130610144915-0nj8vpk7n84ocj3f
bzr revid: nicolas.vanhoren@openerp.com-20130610150657-3xddn91gm0iq0ubp
bzr revid: nicolas.vanhoren@openerp.com-20130610154514-oee6s4f9g17bx63z
Diffstat (limited to 'addons/web/http.py')
| -rw-r--r-- | addons/web/http.py | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/addons/web/http.py b/addons/web/http.py index 67d71ac7d37..2dc41c8cad9 100644 --- a/addons/web/http.py +++ b/addons/web/http.py @@ -121,6 +121,13 @@ class WebRequest(object): # we use _ as seprator where RFC2616 uses '-' self.lang = lang.replace('-', '_') + @contextlib.contextmanager + def registry_cr(self): + dbname = self.session._db or openerp.addons.web.controllers.main.db_monodb(self) + registry = openerp.modules.registry.RegistryManager.get(dbname.lower()) + with registry.cursor() as cr: + yield (registry, cr) + def reject_nonliteral(dct): if '__ref' in dct: raise ValueError( @@ -298,6 +305,8 @@ class HttpRequest(WebRequest): #_logger.debug("%s --> %s.%s %r", self.httprequest.method, method.im_class.__name__, method.__name__, akw) try: r = method(**self.params) + except werkzeug.exceptions.HTTPException, e: + r = e except Exception, e: _logger.exception("An exception occured during an http request") se = serialize_exception(e) @@ -307,11 +316,13 @@ class HttpRequest(WebRequest): 'data': se } r = werkzeug.exceptions.InternalServerError(cgi.escape(simplejson.dumps(error))) - if self.debug or 1: - if isinstance(r, (werkzeug.wrappers.BaseResponse, werkzeug.exceptions.HTTPException)): - _logger.debug('<-- %s', r) - else: - _logger.debug("<-- size: %s", len(r)) + else: + if not r: + r = werkzeug.wrappers.Response(status=204) # no content + if isinstance(r, (werkzeug.wrappers.BaseResponse, werkzeug.exceptions.HTTPException)): + _logger.debug('<-- %s', r) + else: + _logger.debug("<-- size: %s", len(r)) return r def make_response(self, data, headers=None, cookies=None): |
