summaryrefslogtreecommitdiff
path: root/addons/web
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web')
-rw-r--r--addons/web/controllers/main.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index 3f3a2465cf8..94357c0131b 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -133,6 +133,20 @@ def ensure_db(redirect='/web/database/selector'):
if db and db not in http.db_filter([db]):
db = None
+ if db and not request.session.db:
+ # User asked a specific database on a new session.
+ # That mean the nodb router has been used to find the route
+ # Depending on installed module in the database, the rendering of the page
+ # may depend on data injected by the database route dispatcher.
+ # Thus, we redirect the user to the same page but with the session cookie set.
+ # This will force using the database route dispatcher...
+ r = request.httprequest
+ response = werkzeug.utils.redirect(r.url, 302)
+ request.session.db = db
+ response = r.app.get_response(r, response, explicit_session=False)
+ werkzeug.exceptions.abort(response)
+ return
+
# if db not provided, use the session one
if not db:
db = request.session.db