Skip to content

Commit f670997

Browse files
author
Zach Moody
authored
Merge pull request #53 from mchrobak/urlencoding
fix some urlencoding problems
2 parents 07b71c2 + 3946543 commit f670997

File tree

3 files changed

+7
-9
lines changed

3 files changed

+7
-9
lines changed

pynetbox/lib/query.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,7 @@ def url_param_builder(param_dict):
2525
Creates URL paramters (e.g. '.../?xyz=r21&abc=123') from a dict
2626
passed in param_dict
2727
'''
28-
param_list = []
29-
for key, val in param_dict.items():
30-
param_list.append('{}={}'.format(key, val))
31-
return '?{}'.format('&'.join(param_list))
28+
return '?{}'.format(urlencode(param_dict))
3229

3330

3431
class RequestError(Exception):
@@ -150,9 +147,9 @@ def construct_url(input):
150147
for k, v in input.items():
151148
if isinstance(v, list):
152149
for i in v:
153-
yield "{}={}".format(k, i)
150+
yield urlencode({k: i})
154151
else:
155-
yield "{}={}".format(k, v)
152+
yield urlencode({k: v})
156153

157154
if self.key:
158155
return '{}/{key}/'.format(

tests/test_dcim.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,12 +169,12 @@ def test_get(self, mock):
169169
return_value=Response(fixture='dcim/devices.json')
170170
)
171171
def test_multi_filter(self, mock):
172-
ret = getattr(nb, self.name).filter(role=['test', 'test1'], site='TEST1')
172+
ret = getattr(nb, self.name).filter(role=['test', 'test1'], site='TEST#1')
173173
self.assertTrue(ret)
174174
self.assertTrue(isinstance(ret, list))
175175
self.assertTrue(isinstance(ret[0], self.ret))
176176
mock.assert_called_with(
177-
'http://localhost:8000/api/{}/{}/?role=test&role=test1&site=TEST1'.format(
177+
'http://localhost:8000/api/{}/{}/?role=test&role=test1&site=TEST%231'.format(
178178
self.app,
179179
self.name.replace('_', '-')
180180
),

tests/test_query.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ def test_url_param_builder(self):
1010
test_params = OrderedDict([
1111
('abc', '123'),
1212
('xyz', '321'),
13+
('enc', '#12'),
1314
])
14-
self.assertEqual(url_param_builder(test_params), '?abc=123&xyz=321')
15+
self.assertEqual(url_param_builder(test_params), '?abc=123&xyz=321&enc=%2312')

0 commit comments

Comments
 (0)