summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Lambacher <chris@kateandchris.net>2012-04-27 11:06:59 -0400
committerChristopher Lambacher <chris@kateandchris.net>2012-04-27 11:06:59 -0400
commit0e0c83fabc77e2888e26c56df9acda7a5c839530 (patch)
tree3239425a90e4d47f189765625528f2ae298522d2
parenta79f67b6036835a3945d95d7bd9a27d0934c6f8f (diff)
downloadpyramid-0e0c83fabc77e2888e26c56df9acda7a5c839530.tar.gz
pyramid-0e0c83fabc77e2888e26c56df9acda7a5c839530.tar.bz2
pyramid-0e0c83fabc77e2888e26c56df9acda7a5c839530.zip
Don't add a ? to url if query string is empty.
-rw-r--r--pyramid/tests/test_url.py17
-rw-r--r--pyramid/url.py8
2 files changed, 23 insertions, 2 deletions
diff --git a/pyramid/tests/test_url.py b/pyramid/tests/test_url.py
index 0dff1e648..50deb63f3 100644
--- a/pyramid/tests/test_url.py
+++ b/pyramid/tests/test_url.py
@@ -113,6 +113,14 @@ class TestURLMethodsMixin(unittest.TestCase):
self.assertEqual(result,
'http://example.com:5432/context/a?a=hi+there&b=La+Pe%C3%B1a')
+ def test_resource_url_with_query_empty(self):
+ request = self._makeOne()
+ self._registerResourceURL(request.registry)
+ context = DummyContext()
+ result = request.resource_url(context, 'a', query=[])
+ self.assertEqual(result,
+ 'http://example.com:5432/context/a')
+
def test_resource_url_anchor_is_after_root_when_no_elements(self):
request = self._makeOne()
self._registerResourceURL(request.registry)
@@ -334,6 +342,15 @@ class TestURLMethodsMixin(unittest.TestCase):
self.assertEqual(result,
'http://example.com:5432/1/2/3?q=1')
+ def test_route_url_with_empty_query(self):
+ from pyramid.interfaces import IRoutesMapper
+ request = self._makeOne()
+ mapper = DummyRoutesMapper(route=DummyRoute('/1/2/3'))
+ request.registry.registerUtility(mapper, IRoutesMapper)
+ result = request.route_url('flub', _query={})
+ self.assertEqual(result,
+ 'http://example.com:5432/1/2/3')
+
def test_route_url_with_app_url(self):
from pyramid.interfaces import IRoutesMapper
request = self._makeOne()
diff --git a/pyramid/url.py b/pyramid/url.py
index 022867967..dd83bb631 100644
--- a/pyramid/url.py
+++ b/pyramid/url.py
@@ -218,7 +218,9 @@ class URLMethodsMixin(object):
port = None
if '_query' in kw:
- qs = '?' + urlencode(kw.pop('_query'), doseq=True)
+ query = kw.pop('_query')
+ if query:
+ qs = '?' + urlencode(query, doseq=True)
if '_anchor' in kw:
anchor = kw.pop('_anchor')
@@ -494,7 +496,9 @@ class URLMethodsMixin(object):
anchor = ''
if 'query' in kw:
- qs = '?' + urlencode(kw['query'], doseq=True)
+ query = kw['query']
+ if query:
+ qs = '?' + urlencode(query, doseq=True)
if 'anchor' in kw:
anchor = kw['anchor']