diff options
| author | Christophe Simonis <chs@openerp.com> | 2014-02-07 16:47:03 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@openerp.com> | 2014-02-07 16:47:03 +0100 |
| commit | 0b9bf8e2bfb85736f2a0e2cf4e32ec01a5c13b22 (patch) | |
| tree | e0ec78f35fd60d35911b417c11a17fb4c65098b1 /addons | |
| parent | 7ac7b2599edc3d1ba35fba41a6b06162f08409c6 (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')
| -rw-r--r-- | addons/web/controllers/main.py | 14 |
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 |
