summaryrefslogtreecommitdiff
path: root/packages/templatetags/package_extras.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/templatetags/package_extras.py')
-rw-r--r--packages/templatetags/package_extras.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/packages/templatetags/package_extras.py b/packages/templatetags/package_extras.py
index d59a5562..dd5b9347 100644
--- a/packages/templatetags/package_extras.py
+++ b/packages/templatetags/package_extras.py
@@ -1,4 +1,9 @@
-import cgi, urllib
+import urllib
+try:
+ from urlparse import parse_qs
+except ImportError:
+ from cgi import parse_qs
+
from django import template
from django.utils.html import escape
@@ -9,15 +14,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 = 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):