summaryrefslogtreecommitdiff
path: root/addons/web/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/controllers')
-rw-r--r--addons/web/controllers/main.py56
1 files changed, 28 insertions, 28 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index 29cbd8960bb..5ed0c8326f4 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -527,28 +527,42 @@ class Home(http.Controller):
@http.route('/', type='http', auth="none")
def index(self, s_action=None, db=None, debug=False, **kw):
+ query = dict(urlparse.parse_qsl(request.httprequest.query_string, keep_blank_values=True))
+ redirect = '/web' + '?' + urllib.urlencode(query)
+ return redirect_with_hash(redirect)
+
+ @http.route('/web', type='http', auth="none")
+ def web_client(self, s_action=None, db=None, debug=False, **kw):
debug = debug != False
- if db is not None:
- lst = http.db_list(True)
- if db in lst and db != request.session.db:
- request.session.logout()
- request.session.db = db
- if db != request.session.db:
+ lst = http.db_list(True)
+ if db not in lst:
+ db = None
+ guessed_db = http.db_monodb(request.httprequest)
+ if guessed_db is None and len(lst) > 0:
+ guessed_db = lst[0]
+
+ def redirect(db):
query = dict(urlparse.parse_qsl(request.httprequest.query_string, keep_blank_values=True))
- query.update({'db': request.session.db})
+ query.update({'db': db})
redirect = request.httprequest.path + '?' + urllib.urlencode(query)
return redirect_with_hash(redirect)
-
- db = request.session.db
- js = "\n ".join('<script type="text/javascript" src="%s"></script>' % i for i in manifest_list('js', db=db, debug=debug))
- css = "\n ".join('<link rel="stylesheet" href="%s">' % i for i in manifest_list('css', db=db, debug=debug))
+ if db is None and guessed_db is not None:
+ return redirect(guessed_db)
+
+ if db is not None and db != guessed_db:
+ request.session.logout()
+ request.session.db = db
+ guessed_db = db
+
+ js = "\n ".join('<script type="text/javascript" src="%s"></script>' % i for i in manifest_list('js', db=guessed_db, debug=debug))
+ css = "\n ".join('<link rel="stylesheet" href="%s">' % i for i in manifest_list('css', db=guessed_db, debug=debug))
r = html_template % {
'js': js,
'css': css,
- 'modules': simplejson.dumps(module_boot(db=db)),
+ 'modules': simplejson.dumps(module_boot(db=guessed_db)),
'init': 'var wc = new s.web.WebClient();wc.appendTo($(document.body));'
}
return request.make_response(r, {'Cache-Control': 'no-cache', 'Content-Type': 'text/html; charset=utf-8'})
@@ -729,7 +743,7 @@ class Database(http.Controller):
def get_list(self):
# TODO change js to avoid calling this method if in monodb mode
try:
- return db_list()
+ return http.db_list()
except openerp.exceptions.AccessDenied:
monodb = db_monodb()
if monodb:
@@ -852,11 +866,6 @@ class Session(http.Controller):
return {'error': _('The old password you provided is incorrect, your password was not changed.'), 'title': _('Change Password')}
return {'error': _('Error, password not changed !'), 'title': _('Change Password')}
- @http.route('/web/session/sc_list', type='json', auth="user")
- def sc_list(self):
- return request.session.model('ir.ui.view_sc').get_sc(
- request.session.uid, "ir.ui.menu", request.context)
-
@http.route('/web/session/get_lang_list', type='json', auth="none")
def get_lang_list(self):
try:
@@ -1002,13 +1011,6 @@ class Menu(http.Controller):
"""
return request.session.model('ir.ui.menu').get_needaction_data(menu_ids, request.context)
- @http.route('/web/menu/action', type='json', auth="user")
- def action(self, menu_id):
- # still used by web_shortcut
- actions = load_actions_from_ir_values('action', 'tree_but_open',
- [('ir.ui.menu', menu_id)], False)
- return {"action": actions}
-
class DataSet(http.Controller):
@http.route('/web/dataset/search_read', type='json', auth="user")
@@ -1078,7 +1080,7 @@ class DataSet(http.Controller):
return records
if method.startswith('_'):
- raise Exception("Access denied")
+ raise Exception("Access Denied: Underscore prefixed methods cannot be remotely called")
return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
@@ -1683,8 +1685,6 @@ class Reports(http.Controller):
if 'ids' in action['datas']:
report_ids = action['datas'].pop('ids')
report_data.update(action['datas'])
- if not report_ids:
- raise ValueError("action['datas']['ids'] and context['active_ids'] are undefined")
report_id = report_srv.report(
request.session.db, request.session.uid, request.session.password,