]> git.ozlabs.org Git - patchwork/blobdiff - apps/patchwork/filters.py
filters: fix exception in filter querystring generation
[patchwork] / apps / patchwork / filters.py
index 77fc768dd485f3b6afbe3a2c0e5e9e42f5b1d946..8323fe86a0fe5549701646b5bbda75ee5cf82f74 100644 (file)
@@ -22,6 +22,7 @@ from patchwork.models import Person, State
 from django.utils.safestring import mark_safe
 from django.utils.html import escape
 from django.contrib.auth.models import User
+from urllib import quote
 
 class Filter(object):
     def __init__(self, filters):
@@ -444,7 +445,15 @@ class Filters:
             if remove.param in params.keys():
                 del params[remove.param]
 
-        return '?' + '&'.join(['%s=%s' % x for x in params.iteritems()])
+        pairs = params.iteritems()
+
+        def sanitise(s):
+            if not isinstance(s, basestring):
+                s = unicode(s)
+            return quote(s.encode('utf-8'))
+
+        return '?' + '&'.join(['%s=%s' % (sanitise(k), sanitise(v))
+                                    for (k, v) in pairs])
 
     def querystring_without_filter(self, filter):
         return self.querystring(filter)