[FIX] ensure_db() werkzeug.BaseResponse.url usage leads to encoded hashes loss
authorFabien Meghazi <fme@openerp.com>
Tue, 11 Mar 2014 20:52:20 +0000 (21:52 +0100)
committerFabien Meghazi <fme@openerp.com>
Tue, 11 Mar 2014 20:52:20 +0000 (21:52 +0100)
bzr revid: fme@openerp.com-20140311205220-kk0pal10lodurcst

addons/web/controllers/main.py

index d13226c..0074a88 100644 (file)
@@ -141,7 +141,12 @@ def ensure_db(redirect='/web/database/selector'):
         # 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)
+        url_redirect = r.base_url
+        if r.query_string:
+            # Can't use werkzeug.wrappers.BaseRequest.url with encoded hashes:
+            # https://github.com/amigrave/werkzeug/commit/b4a62433f2f7678c234cdcac6247a869f90a7eb7
+            url_redirect += '?' + r.query_string
+        response = werkzeug.utils.redirect(url_redirect, 302)
         request.session.db = db
         response = r.app.get_response(r, response, explicit_session=False)
         werkzeug.exceptions.abort(response)