From edbc1dd142564a654fdbc8f7e13ddf496bc73950 Mon Sep 17 00:00:00 2001 From: Tom Lazar Date: Sat, 17 Aug 2013 15:06:22 +0200 Subject: if `_app_url` is given it takes precedence --- pyramid/config/routes.py | 15 ++++++++------- pyramid/tests/test_url.py | 8 ++++++++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/pyramid/config/routes.py b/pyramid/config/routes.py index f4f9ac888..642c72701 100644 --- a/pyramid/config/routes.py +++ b/pyramid/config/routes.py @@ -394,13 +394,14 @@ class RoutesConfiguratorMixin(object): pattern = parsed.path def external_url_pregenerator(request, elements, kw): - if '_scheme' in kw and parsed.scheme != kw['_scheme']: - scheme = kw['_scheme'] - elif parsed.scheme: - scheme = parsed.scheme - else: - scheme = request.scheme - kw['_app_url'] = '{0}://{1}'.format(scheme, parsed.netloc) + if not '_app_url' in kw: + if '_scheme' in kw and parsed.scheme != kw['_scheme']: + scheme = kw['_scheme'] + elif parsed.scheme: + scheme = parsed.scheme + else: + scheme = request.scheme + kw['_app_url'] = '{0}://{1}'.format(scheme, parsed.netloc) return elements, kw pregenerator = external_url_pregenerator diff --git a/pyramid/tests/test_url.py b/pyramid/tests/test_url.py index c7b8cfca1..197dfb3eb 100644 --- a/pyramid/tests/test_url.py +++ b/pyramid/tests/test_url.py @@ -1062,6 +1062,14 @@ class Test_external_static_url_integration(unittest.TestCase): 'https://acme.org/path/bar') + def test_generate_external_url_with_explicit_app_url(self): + self.config.add_route('acme', 'http://acme.org/path/{foo}') + request = self._makeRequest() + request.registry = self.config.registry + self.assertEqual(request.route_url('acme', foo='bar', _app_url='http://fakeme.com'), + 'http://fakeme.com/path/bar') + + class DummyContext(object): def __init__(self, next=None): self.next = next -- cgit v1.2.3