diff options
author | Dan McGee <dan@archlinux.org> | 2012-02-13 04:54:05 +0100 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2012-02-13 04:54:05 +0100 |
commit | 30acd5c81689545ba02dfa392b118f262f3511b8 (patch) | |
tree | 393d3b50680a9d997df7d0ecbf20d24fe83997d8 /packages/templatetags/package_extras.py | |
parent | c3ebf7deae0bb04f1637e9a52e7f9f38d454fec7 (diff) | |
download | archweb-30acd5c81689545ba02dfa392b118f262f3511b8.tar.gz archweb-30acd5c81689545ba02dfa392b118f262f3511b8.tar.xz |
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 <dan@archlinux.org>
Diffstat (limited to 'packages/templatetags/package_extras.py')
-rw-r--r-- | packages/templatetags/package_extras.py | 7 |
1 files changed, 5 insertions, 2 deletions
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 |