diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index 8f7c5d4f70d..750c581b90c 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -550,36 +550,33 @@ class Home(http.Controller):
@http.route('/web', type='http', auth="none")
def web_client(self, s_action=None, db=None, debug=False, **kw):
- debug = debug != False
+ debug = bool(debug)
- 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]
+ # if db not provided, use the session one
+ if db is None:
+ db = request.session.db
- def redirect(db):
- query = dict(urlparse.parse_qsl(request.httprequest.query_string, keep_blank_values=True))
- query['db'] = db
- redirect = request.httprequest.path + '?' + urllib.urlencode(query)
- return redirect_with_hash(redirect)
+ # if no database provided and no database in session, use monodb
+ if db is None:
+ db = http.db_monodb(request.httprequest)
- if db is None and guessed_db is not None:
- return redirect(guessed_db)
+ # if no db can be found til here, send to the database selector
+ # the database selector will redirect to database manager if needed
+ if db is None:
+ return request.redirect('/database/selector', 303) # TODO: check status code semantic and forward debug
- if db is not None and db != request.session.db:
+ # always switch the session to the computed db
+ if db != request.session.db:
request.session.logout()
- request.session.db = db
- guessed_db = db
+ request.session.db = db
- js = "\n ".join('' % i for i in manifest_list('js', db=guessed_db, debug=debug))
- css = "\n ".join('' % i for i in manifest_list('css', db=guessed_db, debug=debug))
+ js = "\n ".join('' % i for i in manifest_list('js', db=db, debug=debug))
+ css = "\n ".join('' % i for i in manifest_list('css', db=db, debug=debug))
r = html_template % {
'js': js,
'css': css,
- 'modules': simplejson.dumps(module_boot(db=guessed_db)),
+ 'modules': simplejson.dumps(module_boot(db=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'})