summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2012-06-14 11:32:40 +0200
committerClaude Paroz <claude@2xlibre.net>2012-06-14 11:32:40 +0200
commitfe873e276527534b3c0c22f457ee314cf029ced4 (patch)
tree457109194ae041c2de2bbc8c067b29e888edb593
parenta2022dae7ff70b00ab61e2ca2da0980a7747824b (diff)
Fixed #12140 -- Fixed http.urlencode result for empty lists
Thanks aneil for the report and the initial patch.
-rw-r--r--django/utils/http.py2
-rw-r--r--tests/regressiontests/utils/http.py8
2 files changed, 9 insertions, 1 deletions
diff --git a/django/utils/http.py b/django/utils/http.py
index dbd18d8ff0..87db284416 100644
--- a/django/utils/http.py
+++ b/django/utils/http.py
@@ -71,7 +71,7 @@ def urlencode(query, doseq=0):
query = query.items()
return urllib.urlencode(
[(smart_str(k),
- isinstance(v, (list,tuple)) and [smart_str(i) for i in v] or smart_str(v))
+ [smart_str(i) for i in v] if isinstance(v, (list,tuple)) else smart_str(v))
for k, v in query],
doseq)
diff --git a/tests/regressiontests/utils/http.py b/tests/regressiontests/utils/http.py
index 16c7daa32c..67dcd7af89 100644
--- a/tests/regressiontests/utils/http.py
+++ b/tests/regressiontests/utils/http.py
@@ -31,6 +31,7 @@ class TestUtilsHttp(unittest.TestCase):
# 2-tuples (the norm)
result = http.urlencode((('a', 1), ('b', 2), ('c', 3)))
self.assertEqual(result, 'a=1&b=2&c=3')
+
# A dictionary
result = http.urlencode({ 'a': 1, 'b': 2, 'c': 3})
acceptable_results = [
@@ -44,6 +45,13 @@ class TestUtilsHttp(unittest.TestCase):
'c=3&b=2&a=1'
]
self.assertTrue(result in acceptable_results)
+ result = http.urlencode({'a': [1, 2]}, doseq=False)
+ self.assertEqual(result, 'a=%5B%271%27%2C+%272%27%5D')
+ result = http.urlencode({'a': [1, 2]}, doseq=True)
+ self.assertEqual(result, 'a=1&a=2')
+ result = http.urlencode({'a': []}, doseq=True)
+ self.assertEqual(result, '')
+
# A MultiValueDict
result = http.urlencode(MultiValueDict({
'name': ['Adrian', 'Simon'],