diff options
| author | niv-openerp <nicolas.vanhoren@openerp.com> | 2013-08-06 14:07:24 +0200 |
|---|---|---|
| committer | niv-openerp <nicolas.vanhoren@openerp.com> | 2013-08-06 14:07:24 +0200 |
| commit | 392e9d260bb692e4fa404848e70c6dc7ea61c36a (patch) | |
| tree | d3d65a03e90c29deb73cf72a7a5b758d303dd647 /addons/web/controllers | |
| parent | 122f0aa9b39f0ed26dc26d09e4afffd949730cd1 (diff) | |
| parent | cb55e11c700efa298a74da781a108185682325da (diff) | |
[IMP] Mostly improvements of openerpframework.js . Moved a lot of necessary features to it (jsonrpc, models, translations,...). Added tests. Also some other style improvements.
bzr revid: nicolas.vanhoren@openerp.com-20130806120724-55nsh8ay9qiac72r
Diffstat (limited to 'addons/web/controllers')
| -rw-r--r-- | addons/web/controllers/main.py | 43 | ||||
| -rw-r--r-- | addons/web/controllers/testing.py | 10 |
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 |
