diff options
Diffstat (limited to 'addons/web/http.py')
| -rw-r--r-- | addons/web/http.py | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/addons/web/http.py b/addons/web/http.py index 3fc8f63231f..d0b04428f0d 100644 --- a/addons/web/http.py +++ b/addons/web/http.py @@ -17,7 +17,6 @@ import tempfile import threading import time import traceback -import urllib import urlparse import uuid import xmlrpclib @@ -33,7 +32,6 @@ import werkzeug.wsgi import openerp -import nonliterals import session _logger = logging.getLogger(__name__) @@ -95,7 +93,7 @@ class WebRequest(object): if not self.session: self.session = session.OpenERPSession() self.httpsession[self.session_id] = self.session - self.context = self.params.pop('context', None) + self.context = self.params.pop('context', {}) self.debug = self.params.pop('debug', False) is not False # Determine self.lang lang = self.params.get('lang', None) @@ -112,6 +110,11 @@ class WebRequest(object): # we use _ as seprator where RFC2616 uses '-' self.lang = lang.replace('-', '_') +def reject_nonliteral(dct): + if '__ref' in dct: + raise ValueError( + "Non literal contexts can not be sent to the server anymore (%r)" % (dct,)) + return dct class JsonRequest(WebRequest): """ JSON-RPC2 over HTTP. @@ -182,9 +185,9 @@ class JsonRequest(WebRequest): try: # Read POST content or POST Form Data named "request" if requestf: - self.jsonrequest = simplejson.load(requestf, object_hook=nonliterals.non_literal_decoder) + self.jsonrequest = simplejson.load(requestf, object_hook=reject_nonliteral) else: - self.jsonrequest = simplejson.loads(request, object_hook=nonliterals.non_literal_decoder) + self.jsonrequest = simplejson.loads(request, object_hook=reject_nonliteral) self.init(self.jsonrequest.get("params", {})) if _logger.isEnabledFor(logging.DEBUG): _logger.debug("--> %s.%s\n%s", method.im_class.__name__, method.__name__, pprint.pformat(self.jsonrequest)) @@ -233,10 +236,10 @@ class JsonRequest(WebRequest): # We need then to manage http sessions manually. response['httpsessionid'] = self.httpsession.sid mime = 'application/javascript' - body = "%s(%s);" % (jsonp, simplejson.dumps(response, cls=nonliterals.NonLiteralEncoder),) + body = "%s(%s);" % (jsonp, simplejson.dumps(response),) else: mime = 'application/json' - body = simplejson.dumps(response, cls=nonliterals.NonLiteralEncoder) + body = simplejson.dumps(response) r = werkzeug.wrappers.Response(body, headers=[('Content-Type', mime), ('Content-Length', len(body))]) return r |
