X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=apps%2Fpatchwork%2Ffilters.py;h=002a0a855b491c93240eb23e77d404116e37406e;hb=bfb1ddb628ed1bea06d6eba5c6cc7a1c71abf5af;hp=a722a24f398d43f816141daeb995c1ca5d7eafe1;hpb=5799a55da8c20e0f3820b2e131c20083fe559675;p=patchwork diff --git a/apps/patchwork/filters.py b/apps/patchwork/filters.py index a722a24..002a0a8 100644 --- a/apps/patchwork/filters.py +++ b/apps/patchwork/filters.py @@ -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): @@ -438,13 +439,20 @@ class Filters: for (k, v) in self.dict.iteritems(): if k not in params: - params[k] = v[0] + params[k] = v if remove is not None: 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' % map(sanitise, p) for p in pairs]) def querystring_without_filter(self, filter): return self.querystring(filter)