From 30acd5c81689545ba02dfa392b118f262f3511b8 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sun, 12 Feb 2012 21:54:05 -0600 Subject: Protect urlencode calls against Unicode data These would cause page errors if passed anything not in the ASCII character set. This change allows for packages to have names composed of any Unicode characters, not just those in the ASCII set. Signed-off-by: Dan McGee --- packages/templatetags/package_extras.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'packages/templatetags') diff --git a/packages/templatetags/package_extras.py b/packages/templatetags/package_extras.py index 25e943f..5cc826e 100644 --- a/packages/templatetags/package_extras.py +++ b/packages/templatetags/package_extras.py @@ -9,8 +9,11 @@ from django.utils.html import escape register = template.Library() -def link_encode(url, query, doseq=False): - data = urlencode(query, doseq).replace('&', '&') +def link_encode(url, query): + # massage the data into all utf-8 encoded strings first, so urlencode + # doesn't barf at the data we pass it + query = dict((k, unicode(v).encode('utf-8')) for k, v in query.items()) + data = urlencode(query).replace('&', '&') return "%s?%s" % (url, data) @register.filter -- cgit v1.2.3-24-g4f1b