From 595e9191f519af9b1c0c4b657fd3923c0997938c Mon Sep 17 00:00:00 2001 From: Brian Rosner Date: Mon, 30 Jun 2008 17:38:13 +0000 Subject: [PATCH] newforms-admin: Fixed #4074 -- Properly urlencode the ChangeList query string when the value has an ampersand. Thanks Tony Perkins and SmileyChris. git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@7810 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/admin/views/main.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index d24a8625ce..a8718677f3 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -6,6 +6,7 @@ from django.db.models.query import QuerySet from django.utils.encoding import force_unicode, smart_str from django.utils.translation import ugettext from django.utils.safestring import mark_safe +from django.utils.http import urlencode import operator try: @@ -100,11 +101,12 @@ class ChangeList(object): if k.startswith(r): del p[k] for k, v in new_params.items(): - if k in p and v is None: - del p[k] - elif v is not None: + if v is None: + if k in p: + del p[k] + else: p[k] = v - return mark_safe('?' + '&'.join([u'%s=%s' % (k, v) for k, v in p.items()]).replace(' ', '%20')) + return '?%s' % urlencode(p) def get_results(self, request): paginator = QuerySetPaginator(self.query_set, self.list_per_page)