diff options
author | Dan McGee <dan@archlinux.org> | 2011-03-07 21:50:13 -0600 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-03-07 21:50:13 -0600 |
commit | 6a429a8d898d5f0789f5b5a3f2858c6578fa5227 (patch) | |
tree | 017e857cb1d5ab8838699ca1d37de576e25285e9 /packages/templatetags/package_extras.py | |
parent | e82a4d5b9c17fbc5ee63d14a1c87ef12718fa343 (diff) |
Clean up current_query and preserve multiple args
When implementing search for multiple architectures or repositories, I
didn't update this method to accomidate the new query parameters. Clean
it up a bit by not appending/stripping the leading '?' anywhere but in
the template itself, and ensure we can handle multiple of any parameter
passed in. Fixes FS#23180.
Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'packages/templatetags/package_extras.py')
-rw-r--r-- | packages/templatetags/package_extras.py | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/packages/templatetags/package_extras.py b/packages/templatetags/package_extras.py index d59a5562..24264af0 100644 --- a/packages/templatetags/package_extras.py +++ b/packages/templatetags/package_extras.py @@ -1,4 +1,6 @@ -import cgi, urllib +import urllib +import urlparse + from django import template from django.utils.html import escape @@ -9,15 +11,15 @@ class BuildQueryStringNode(template.Node): self.sortfield = sortfield def render(self, context): - qs = dict(cgi.parse_qsl(context['current_query'][1:])) - if qs.has_key('sort') and qs['sort'] == self.sortfield: + qs = urlparse.parse_qs(context['current_query']) + if qs.has_key('sort') and self.sortfield in qs['sort']: if self.sortfield.startswith('-'): - qs['sort'] = self.sortfield[1:] + qs['sort'] = [self.sortfield[1:]] else: - qs['sort'] = '-' + self.sortfield + qs['sort'] = ['-' + self.sortfield] else: - qs['sort'] = self.sortfield - return '?' + urllib.urlencode(qs) + qs['sort'] = [self.sortfield] + return urllib.urlencode(qs, True) @register.tag(name='buildsortqs') def do_buildsortqs(parser, token): |