summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2013-06-27 19:39:20 -0400
committerTim Graham <timograham@gmail.com>2013-06-27 19:39:20 -0400
commit534ced5aadf964eca4cf29a689dc70185f582772 (patch)
treed3e8a4fceea1476d15b570029d0a74eb95a921c9
parentc1284c3d3c6131a9d0ded9601ae0feb9a2e81a65 (diff)
Fixed #20664 -- Fixed a bug with raw_id_fields on Python 3.
Thanks jefftriplett for the report.
-rw-r--r--django/contrib/admin/templatetags/admin_list.py6
-rw-r--r--tests/admin_views/tests.py8
2 files changed, 11 insertions, 3 deletions
diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py
index e81b13cda4..8596dfb825 100644
--- a/django/contrib/admin/templatetags/admin_list.py
+++ b/django/contrib/admin/templatetags/admin_list.py
@@ -11,7 +11,7 @@ from django.contrib.admin.templatetags.admin_static import static
from django.core.exceptions import ObjectDoesNotExist
from django.db import models
from django.utils import formats
-from django.utils.html import format_html
+from django.utils.html import escapejs, format_html
from django.utils.safestring import mark_safe
from django.utils.text import capfirst
from django.utils.translation import ugettext as _
@@ -226,12 +226,12 @@ def items_for_result(cl, result, form):
else:
attr = pk
value = result.serializable_value(attr)
- result_id = repr(force_text(value))[1:]
+ result_id = escapejs(value)
yield format_html('<{0}{1}><a href="{2}"{3}>{4}</a></{5}>',
table_tag,
row_class,
url,
- format_html(' onclick="opener.dismissRelatedLookupPopup(window, {0}); return false;"', result_id)
+ format_html(' onclick="opener.dismissRelatedLookupPopup(window, &#39;{0}&#39;); return false;"', result_id)
if cl.is_popup else '',
result_repr,
table_tag)
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index 064979801e..a695d50ea2 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -583,6 +583,14 @@ class AdminViewBasicTest(TestCase):
response = self.client.get("/test_admin/admin/admin_views/inquisition/?leader__name=Palin&leader__age=27")
self.assertEqual(response.status_code, 200)
+ def test_popup_dismiss_related(self):
+ """
+ Regression test for ticket 20664 - ensure the pk is properly quoted.
+ """
+ actor = Actor.objects.create(name="Palin", age=27)
+ response = self.client.get("/test_admin/admin/admin_views/actor/?%s" % IS_POPUP_VAR)
+ self.assertContains(response, "opener.dismissRelatedLookupPopup(window, &#39;%s&#39;)" % actor.pk)
+
def test_hide_change_password(self):
"""
Tests if the "change password" link in the admin is hidden if the User