summaryrefslogtreecommitdiff
path: root/addons/web/http.py
diff options
context:
space:
mode:
authorFabien Meghazi <fme@openerp.com>2013-08-07 12:06:43 +0200
committerFabien Meghazi <fme@openerp.com>2013-08-07 12:06:43 +0200
commit11fb809e6081ff3196fc6853ca5d286ee5049c8a (patch)
treec2afa35df9c0b69c535258460edbd892065f9984 /addons/web/http.py
parent55e3a0dedd98b512ec6f649d5ff645add53c38ab (diff)
parent1f726f78266ff6130f1ed701799ca969671a1dfc (diff)
[MERGE] upstream
bzr revid: fme@openerp.com-20130807100643-0olinq3584kzc3we
Diffstat (limited to 'addons/web/http.py')
-rw-r--r--addons/web/http.py23
1 files changed, 10 insertions, 13 deletions
diff --git a/addons/web/http.py b/addons/web/http.py
index ff74949518d..58bbe8431cb 100644
--- a/addons/web/http.py
+++ b/addons/web/http.py
@@ -114,7 +114,7 @@ class WebRequest(object):
threading.current_thread().dbname = self.db
if self.session.uid:
threading.current_thread().uid = self.session.uid
- self.context = self.session.context
+ self.context = dict(self.session.context)
self.lang = self.context["lang"]
def _authenticate(self):
@@ -275,13 +275,12 @@ class JsonRequest(WebRequest):
self.jsonp = jsonp
request = None
request_id = args.get('id')
-
+
if jsonp and self.httprequest.method == 'POST':
# jsonp 2 steps step1 POST: save call
- self.init(args)
-
def handler():
self.session.jsonp_requests[request_id] = self.httprequest.form['r']
+ self.session.modified = True
headers=[('Content-Type', 'text/plain; charset=utf-8')]
r = werkzeug.wrappers.Response(request_id, headers=headers)
return r
@@ -292,7 +291,6 @@ class JsonRequest(WebRequest):
request = args.get('r')
elif jsonp and request_id:
# jsonp 2 steps step2 GET: run and return result
- self.init(args)
request = self.session.jsonp_requests.pop(request_id, "")
else:
# regular jsonrpc2
@@ -576,6 +574,8 @@ class Model(object):
raise Exception("Trying to use Model with badly configured database or user.")
mod = request.registry.get(self.model)
+ if method.startswith('_'):
+ raise Exception("Access denied")
meth = getattr(mod, method)
cr = request.cr
result = meth(cr, request.uid, *args, **kw)
@@ -608,7 +608,7 @@ class OpenERPSession(werkzeug.contrib.sessions.Session):
return self.__setitem__(k, v)
object.__setattr__(self, k, v)
- def authenticate(self, db, login=None, password=None, env=None, uid=None):
+ def authenticate(self, db, login=None, password=None, uid=None):
"""
Authenticate the current user with the given db, login and password. If successful, store
the authentication parameters in the current session and request.
@@ -617,7 +617,8 @@ class OpenERPSession(werkzeug.contrib.sessions.Session):
"""
if uid is None:
- uid = openerp.netsvc.dispatch_rpc('common', 'authenticate', [db, login, password, env])
+ uid = openerp.netsvc.dispatch_rpc('common', 'authenticate', [db, login, password,
+ request.httprequest.environ])
else:
security.check(db, uid, password)
self.db = db
@@ -946,13 +947,9 @@ class Root(object):
if httprequest.args.get('jsonp'):
return JsonRequest(httprequest)
- content = httprequest.stream.read()
- import cStringIO
- httprequest.stream = cStringIO.StringIO(content)
- try:
- simplejson.loads(content)
+ if httprequest.headers["Content-Type"] == "application/json":
return JsonRequest(httprequest)
- except:
+ else:
return HttpRequest(httprequest)
def load_addons(self):