summaryrefslogtreecommitdiff
path: root/addons/web/http.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/http.py')
-rw-r--r--addons/web/http.py25
1 files changed, 15 insertions, 10 deletions
diff --git a/addons/web/http.py b/addons/web/http.py
index fc80cb03864..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,12 +93,12 @@ 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)
if lang is None:
- lang = self.session.eval_context(self.context).get('lang')
+ lang = self.context.get('lang')
if lang is None:
lang = self.httprequest.cookies.get('lang')
if lang is 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
@@ -402,8 +405,10 @@ def session_context(request, session_store, session_lock, sid):
for k, v in request.session.iteritems():
stored = in_store.get(k)
if stored and isinstance(v, session.OpenERPSession):
- v.contexts_store.update(stored.contexts_store)
- v.domains_store.update(stored.domains_store)
+ if hasattr(v, 'contexts_store'):
+ del v.contexts_store
+ if hasattr(v, 'domains_store'):
+ del v.domains_store
if not hasattr(v, 'jsonp_requests'):
v.jsonp_requests = {}
v.jsonp_requests.update(getattr(