summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lazar <tomster@pyfidelity.com>2013-08-17 15:06:22 +0200
committerTom Lazar <tomster@pyfidelity.com>2013-08-17 15:06:22 +0200
commitedbc1dd142564a654fdbc8f7e13ddf496bc73950 (patch)
tree435f583e3ad43db6931ec925cfad9964c15f8d29
parent33b638478a5d4e9d3190ec0130902091817601a0 (diff)
downloadpyramid-edbc1dd142564a654fdbc8f7e13ddf496bc73950.tar.gz
pyramid-edbc1dd142564a654fdbc8f7e13ddf496bc73950.tar.bz2
pyramid-edbc1dd142564a654fdbc8f7e13ddf496bc73950.zip
if `_app_url` is given it takes precedence
-rw-r--r--pyramid/config/routes.py15
-rw-r--r--pyramid/tests/test_url.py8
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