summaryrefslogtreecommitdiff
path: root/addons/web/controllers
diff options
context:
space:
mode:
authorChristophe Simonis <chs@openerp.com>2014-02-07 16:47:03 +0100
committerChristophe Simonis <chs@openerp.com>2014-02-07 16:47:03 +0100
commit0b9bf8e2bfb85736f2a0e2cf4e32ec01a5c13b22 (patch)
treee0ec78f35fd60d35911b417c11a17fb4c65098b1 /addons/web/controllers
parent7ac7b2599edc3d1ba35fba41a6b06162f08409c6 (diff)
[FIX] ensure_db():
When user ask a specific database on a new session, 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... bzr revid: chs@openerp.com-20140207154703-o0gl58i2b56eridx
Diffstat (limited to 'addons/web/controllers')
-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