summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2012-04-27 11:15:37 -0400
committerChris McDonough <chrism@plope.com>2012-04-27 11:15:37 -0400
commit2bae012e5e108c0a9a584aea0611b6a29e6027b0 (patch)
tree5652446af4b03e6f57fc3ac9d12fe02c8ba3e799
parent32fc4511d0fb3c8103f789869647c153ea058a6a (diff)
parentfcb209534f069c79ecf90c5499d2955b049aca78 (diff)
downloadpyramid-2bae012e5e108c0a9a584aea0611b6a29e6027b0.tar.gz
pyramid-2bae012e5e108c0a9a584aea0611b6a29e6027b0.tar.bz2
pyramid-2bae012e5e108c0a9a584aea0611b6a29e6027b0.zip
Merge branch 'lambacck-master'
-rw-r--r--CHANGES.txt7
-rw-r--r--pyramid/tests/test_url.py17
-rw-r--r--pyramid/url.py8
3 files changed, 29 insertions, 3 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 337754162..b8d42ba6f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -9,7 +9,6 @@ Bug Fixes
return the empty list. This was incorrect, it should have unconditionally
returned ``[Everyone]``, and now does.
-
Features
--------
@@ -29,3 +28,9 @@ Features
- ``config.set_request_property`` now causes less code to be executed at
request construction time.
+
+- Don't add a ``?`` to URLs generated by request.resource_url if the
+ ``query`` argument is provided but empty.
+
+- Don't add a ``?`` to URLs generated by request.route_url if the
+ ``_query`` argument is provided but empty.
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']