summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/templatetags/package_extras.py7
-rw-r--r--packages/urls.py2
-rw-r--r--packages/views/__init__.py2
3 files changed, 7 insertions, 4 deletions
diff --git a/packages/templatetags/package_extras.py b/packages/templatetags/package_extras.py
index 25e943ff..5cc826ed 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
diff --git a/packages/urls.py b/packages/urls.py
index 6c616297..52b09d2c 100644
--- a/packages/urls.py
+++ b/packages/urls.py
@@ -28,7 +28,7 @@ urlpatterns = patterns('packages.views',
(r'^stale_relations/$', 'stale_relations'),
(r'^stale_relations/update/$','stale_relations_update'),
- (r'^(?P<name>[A-z0-9\-+.]+)/$',
+ (r'^(?P<name>[^ /]+)/$',
'details'),
(r'^(?P<repo>[A-z0-9\-]+)/(?P<name>[^ /]+)/$',
'details'),
diff --git a/packages/views/__init__.py b/packages/views/__init__.py
index 63942474..8f22a8a1 100644
--- a/packages/views/__init__.py
+++ b/packages/views/__init__.py
@@ -142,7 +142,7 @@ def details(request, name='', repo='', arch=''):
('q', name),
]
# only include non-blank values in the query we generate
- pkg_data = [(x, y) for x, y in pkg_data if y]
+ pkg_data = [(x, y.encode('utf-8')) for x, y in pkg_data if y]
return redirect("/packages/?%s" % urlencode(pkg_data))
def groups(request, arch=None):