req.py
changeset 10662 10942ed172de
parent 10603 65ad6980976e
child 10669 155c29e0ed1c
equal deleted inserted replaced
10661:e6eb0c7c2e98 10662:10942ed172de
   297         return u'%s%s?%s' % (base_url, path, self.build_url_params(**kwargs))
   297         return u'%s%s?%s' % (base_url, path, self.build_url_params(**kwargs))
   298 
   298 
   299     def build_url_params(self, **kwargs):
   299     def build_url_params(self, **kwargs):
   300         """return encoded params to incorporate them in a URL"""
   300         """return encoded params to incorporate them in a URL"""
   301         args = []
   301         args = []
   302         for param, values in kwargs.iteritems():
   302         for param, values in kwargs.items():
   303             if not isinstance(values, (list, tuple)):
   303             if not isinstance(values, (list, tuple)):
   304                 values = (values,)
   304                 values = (values,)
   305             for value in values:
   305             for value in values:
   306                 assert value is not None
   306                 assert value is not None
   307                 args.append(u'%s=%s' % (param, self.url_quote(value)))
   307                 args.append(u'%s=%s' % (param, self.url_quote(value)))
   350         if isinstance(url, unicode):
   350         if isinstance(url, unicode):
   351             url = url.encode(self.encoding)
   351             url = url.encode(self.encoding)
   352         schema, netloc, path, query, fragment = urlsplit(url)
   352         schema, netloc, path, query, fragment = urlsplit(url)
   353         query = parse_qs(query)
   353         query = parse_qs(query)
   354         # sort for testing predictability
   354         # sort for testing predictability
   355         for key, val in sorted(newparams.iteritems()):
   355         for key, val in sorted(newparams.items()):
   356             query[key] = (self.url_quote(val),)
   356             query[key] = (self.url_quote(val),)
   357         query = '&'.join(u'%s=%s' % (param, value)
   357         query = '&'.join(u'%s=%s' % (param, value)
   358                          for param, values in sorted(query.items())
   358                          for param, values in sorted(query.items())
   359                          for value in values)
   359                          for value in values)
   360         return urlunsplit((schema, netloc, path, query, fragment))
   360         return urlunsplit((schema, netloc, path, query, fragment))