From 66d6b3b51190955d8a57129c9919e1013ebdfeb9 Mon Sep 17 00:00:00 2001 From: Massimo Date: Tue, 1 Oct 2013 15:25:34 -0500 Subject: [PATCH] fixed issue 1696:webclient not built to handle lists, thanks Yair --- VERSION | 2 +- gluon/contrib/webclient.py | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index adc62538..c74f875b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.6.4-stable+timestamp.2013.09.27.13.07.13 +Version 2.6.4-stable+timestamp.2013.10.01.15.24.15 diff --git a/gluon/contrib/webclient.py b/gluon/contrib/webclient.py index ab0828bf..34f311a4 100644 --- a/gluon/contrib/webclient.py +++ b/gluon/contrib/webclient.py @@ -48,6 +48,18 @@ class WebClient(object): self.sessions = {} self.session_regex = session_regex and re.compile(session_regex) + def web2py_url_encode(self, data): + output = [] + for var in data: + val = data[var] + if type(val)==list: + for item in val: + output += ['%s=%s' % (urllib.quote_plus(var), urllib.quote_plus(item)),] + else: + output += ['%s=%s' % (urllib.quote_plus(var), urllib.quote_plus(val)),] + + return '&'.join(output) + def get(self, url, cookies=None, headers=None, auth=None): return self.post(url, data=None, cookies=cookies, headers=headers, method='GET') @@ -119,7 +131,7 @@ class WebClient(object): data['_formkey'] = self.forms[data['_formname']] # time the POST request - data = urllib.urlencode(data) + data = self.web2py_url_encode(data) else: self.method = 'GET' if method=='auto' else method data = None