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.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/packages/templatetags/package_extras.py b/packages/templatetags/package_extras.py
index f14fab1e..f7392a96 100644
--- a/packages/templatetags/package_extras.py
+++ b/packages/templatetags/package_extras.py
@@ -37,6 +37,12 @@ class BuildQueryStringNode(template.Node):
def render(self, context):
qs = parse_qs(context['current_query'])
+ # This is really dirty. The crazy round trips we do on our query string
+ # mean we get things like u'\xe2\x98\x83' in our views, when we should
+ # have simply u'\u2603' or a byte string of the UTF-8 value. Force the
+ # keys and list of values to be byte strings only.
+ qs = {k.encode('latin-1'): [v.encode('latin-1') for v in vals]
+ for k, vals in qs.items()}
if 'sort' in qs and self.sortfield in qs['sort']:
if self.sortfield.startswith('-'):
qs['sort'] = [self.sortfield[1:]]
@@ -53,10 +59,10 @@ def do_buildsortqs(parser, token):
tagname, sortfield = token.split_contents()
except ValueError:
raise template.TemplateSyntaxError(
- "%r tag requires a single argument" % tagname)
+ "%r tag requires a single argument" % token)
if not (sortfield[0] == sortfield[-1] and sortfield[0] in ('"', "'")):
raise template.TemplateSyntaxError(
- "%r tag's argument should be in quotes" % tagname)
+ "%r tag's argument should be in quotes" % token)
return BuildQueryStringNode(sortfield[1:-1])