summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Rosner <brosner@gmail.com>2008-06-30 17:38:13 +0000
committerBrian Rosner <brosner@gmail.com>2008-06-30 17:38:13 +0000
commit595e9191f519af9b1c0c4b657fd3923c0997938c (patch)
treeedaaa6371811b9de03d8e47e730a92db2f44f89b
parent829fd5a9670a581309797f56bfc7e5140550e873 (diff)
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
-rw-r--r--django/contrib/admin/views/main.py10
1 files 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('?' + '&amp;'.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)