From f652660cb620a1bd6425890fbf8ff2b107b75684 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Fri, 9 May 2014 14:23:23 +0200 Subject: [PATCH] [FIX] is_multilang_url by checking against werkzeug's routing map using query string too bzr revid: fme@openerp.com-20140509122323-2ext0livjgr5njb0 --- addons/website/models/website.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 3320ad9a038..fcaa184d86e 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -57,17 +57,21 @@ def url_for(path_or_uri, lang=None): return location.decode('utf-8') -def is_multilang_url(path, langs=None): +def is_multilang_url(local_url, langs=None): if not langs: langs = [lg[0] for lg in request.website.get_languages()] - spath = path.split('/') + spath = local_url.split('/') # if a language is already in the path, remove it if spath[1] in langs: spath.pop(1) - path = '/'.join(spath) + local_url = '/'.join(spath) try: + # Try to match an endpoint in werkzeug's routing table + url = local_url.split('?') + path = url[0] + query_string = url[1] if len(url) > 1 else None router = request.httprequest.app.get_db_router(request.db).bind('') - func = router.match(path)[0] + func = router.match(path, query_args=query_string)[0] return func.routing.get('multilang', False) except Exception: return False