Skip to content

Commit 019bcf1

Browse files
committed
fix fields handling
1 parent 5a58e4f commit 019bcf1

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

webapp/graphite/tags/http.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,20 @@ def request(self, method, url, fields, requestContext=None):
2323
if 'Authorization' not in headers and self.username and self.password:
2424
headers['Authorization'] = 'Basic ' + ('%s:%s' % (self.username, self.password)).encode('base64')
2525

26+
req_fields = []
27+
for (field, value) in fields.items():
28+
if value is None:
29+
continue
30+
31+
if isinstance(value, list) or isinstance(value, tuple):
32+
req_fields.extend([(field, v) for v in value if v is not None])
33+
else:
34+
req_fields.append((field, value))
35+
2636
result = http.request(
2737
method,
2838
self.base_url + url,
29-
fields={field: value for (field, value) in fields.items() if value is not None},
39+
fields=req_fields,
3040
headers=headers,
3141
timeout=self.settings.REMOTE_FIND_TIMEOUT,
3242
)

webapp/tests/test_tags.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -308,10 +308,17 @@ def mockRequest(method, url, fields=None, headers=None, timeout=None):
308308
else:
309309
self.assertEqual(headers, {})
310310

311+
req_fields = {}
312+
for (field, value) in fields:
313+
if field in req_fields:
314+
req_fields[field].append(value)
315+
else:
316+
req_fields[field] = [value]
317+
311318
if method == 'POST':
312-
result = self.client.post(url, fields)
319+
result = self.client.post(url, req_fields)
313320
elif method == 'GET':
314-
result = self.client.get(url, fields)
321+
result = self.client.get(url, req_fields)
315322
else:
316323
raise Exception('Invalid HTTP method %s' % method)
317324

0 commit comments

Comments
 (0)