diff options
| author | Tom Lazar <tomster@pyfidelity.com> | 2013-08-17 15:06:22 +0200 |
|---|---|---|
| committer | Tom Lazar <tomster@pyfidelity.com> | 2013-08-17 15:06:22 +0200 |
| commit | edbc1dd142564a654fdbc8f7e13ddf496bc73950 (patch) | |
| tree | 435f583e3ad43db6931ec925cfad9964c15f8d29 | |
| parent | 33b638478a5d4e9d3190ec0130902091817601a0 (diff) | |
| download | pyramid-edbc1dd142564a654fdbc8f7e13ddf496bc73950.tar.gz pyramid-edbc1dd142564a654fdbc8f7e13ddf496bc73950.tar.bz2 pyramid-edbc1dd142564a654fdbc8f7e13ddf496bc73950.zip | |
if `_app_url` is given it takes precedence
| -rw-r--r-- | pyramid/config/routes.py | 15 | ||||
| -rw-r--r-- | 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 |
