utils: allow to encode params with list/tuple

Change-Id: Ic71d5467f10d8707f6911c9d52c91fda10ce5300
This commit is contained in:
Julien Danjou 2016-04-11 18:05:49 +02:00
parent 8d0657306a
commit 36fc0bb742
2 changed files with 17 additions and 3 deletions

View File

@ -96,3 +96,10 @@ class SearchQueryBuilderTest(base.BaseTestCase):
{"start": "2016-02-10T13:54:53+00:00",
"stop": "2016-02-10T13:56:42+02:00"}),
expected)
self.assertEqual(
"groupby=foo&groupby=bar",
utils.dict_to_querystring({
"groupby": ["foo", "bar"]
}),
)

View File

@ -147,9 +147,16 @@ def dict_from_parsed_args(parsed_args, attrs):
def dict_to_querystring(objs):
return "&".join(["%s=%s" % (k, urllib_parse.quote(six.text_type(v)))
for k, v in objs.items()
if v is not None])
strings = []
for k, values in objs.items():
if values:
if not isinstance(values, (list, tuple)):
values = [values]
strings.append("&".join(
("%s=%s" % (k, v)
for v in map(urllib_parse.quote,
map(six.text_type, values)))))
return "&".join(strings)
# uuid5 namespace for id transformation.