summaryrefslogtreecommitdiff
path: root/addons/web/controllers
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/controllers
parent55e3a0dedd98b512ec6f649d5ff645add53c38ab (diff)
parent1f726f78266ff6130f1ed701799ca969671a1dfc (diff)
[MERGE] upstream
bzr revid: fme@openerp.com-20130807100643-0olinq3584kzc3we
Diffstat (limited to 'addons/web/controllers')
-rw-r--r--addons/web/controllers/main.py43
-rw-r--r--addons/web/controllers/testing.py10
2 files changed, 30 insertions, 23 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index 5d176122fcf..29cbd8960bb 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -347,13 +347,7 @@ def make_conditional(response, last_modified=None, etag=None):
return response.make_conditional(request.httprequest)
def login_and_redirect(db, login, key, redirect_url='/'):
- wsgienv = request.httprequest.environ
- env = dict(
- base_location=request.httprequest.url_root.rstrip('/'),
- HTTP_HOST=wsgienv['HTTP_HOST'],
- REMOTE_ADDR=wsgienv['REMOTE_ADDR'],
- )
- request.session.authenticate(db, login, key, env)
+ request.session.authenticate(db, login, key)
return set_cookie_and_redirect(redirect_url)
def set_cookie_and_redirect(redirect_url):
@@ -605,7 +599,7 @@ class WebClient(http.Controller):
data = re.sub(
rx_url,
- r"""url(\1%s/""" % (web_dir,),
+ r"url(\1%s/" % (web_dir,),
data,
)
return data.encode('utf-8')
@@ -677,20 +671,26 @@ class WebClient(http.Controller):
return {"modules": translations_per_module,
"lang_parameters": None}
- @http.route('/web/webclient/translations', type='json', auth="user")
- def translations(self, mods, lang):
- res_lang = request.session.model('res.lang')
- ids = res_lang.search([("code", "=", lang)])
+ @http.route('/web/webclient/translations', type='json', auth="admin")
+ def translations(self, mods=None, lang=None):
+ if mods is None:
+ m = request.registry.get('ir.module.module')
+ mods = [x['name'] for x in m.search_read(request.cr, request.uid,
+ [('state','=','installed')], ['name'])]
+ if lang is None:
+ lang = request.context["lang"]
+ res_lang = request.registry.get('res.lang')
+ ids = res_lang.search(request.cr, request.uid, [("code", "=", lang)])
lang_params = None
if ids:
- lang_params = res_lang.read(ids[0], ["direction", "date_format", "time_format",
+ lang_params = res_lang.read(request.cr, request.uid, ids[0], ["direction", "date_format", "time_format",
"grouping", "decimal_point", "thousands_sep"])
# Regional languages (ll_CC) must inherit/override their parent lang (ll), but this is
# done server-side when the language is loaded, so we only need to load the user's lang.
- ir_translation = request.session.model('ir.translation')
+ ir_translation = request.registry.get('ir.translation')
translations_per_module = {}
- messages = ir_translation.search_read([('module','in',mods),('lang','=',lang),
+ messages = ir_translation.search_read(request.cr, request.uid, [('module','in',mods),('lang','=',lang),
('comments','like','openerp-web'),('value','!=',False),
('value','!=','')],
['module','src','value','lang'], order='module')
@@ -832,13 +832,7 @@ class Session(http.Controller):
@http.route('/web/session/authenticate', type='json', auth="none")
def authenticate(self, db, login, password, base_location=None):
- wsgienv = request.httprequest.environ
- env = dict(
- base_location=base_location,
- HTTP_HOST=wsgienv['HTTP_HOST'],
- REMOTE_ADDR=wsgienv['REMOTE_ADDR'],
- )
- request.session.authenticate(db, login, password, env)
+ request.session.authenticate(db, login, password)
return self.session_info()
@@ -1083,7 +1077,10 @@ class DataSet(http.Controller):
names.get(record['id']) or "%s#%d" % (model, (record['id']))
return records
- return getattr(request.session.model(model), method)(*args, **kwargs)
+ if method.startswith('_'):
+ raise Exception("Access denied")
+
+ return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
@http.route('/web/dataset/call', type='json', auth="user")
def call(self, model, method, args, domain_id=None, context_id=None):
diff --git a/addons/web/controllers/testing.py b/addons/web/controllers/testing.py
index 36afbd1e653..b51b12fc53d 100644
--- a/addons/web/controllers/testing.py
+++ b/addons/web/controllers/testing.py
@@ -13,6 +13,8 @@ from openerp.modules import module
from .main import module_topological_sort
from .. import http
+from ..http import request
+
NOMODULE_TEMPLATE = Template(u"""<!DOCTYPE html>
<html>
<head>
@@ -162,3 +164,11 @@ class TestRunnerController(http.Controller):
for path in glob.glob(normalized_pattern):
# replace OS path separators (from join & normpath) by URI ones
yield path[len(root):].replace(os.path.sep, '/')
+
+ @http.route('/web/tests/set_session_value', type='json', auth="none")
+ def set_session_value(self, value):
+ request.session.some_test_value = value
+
+ @http.route('/web/tests/get_session_value', type='json', auth="none")
+ def get_session_value(self):
+ return request.session.some_test_value \ No newline at end of file