diff options
| author | Tim Graham <timograham@gmail.com> | 2013-06-27 19:39:20 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2013-06-27 19:39:20 -0400 |
| commit | 534ced5aadf964eca4cf29a689dc70185f582772 (patch) | |
| tree | d3e8a4fceea1476d15b570029d0a74eb95a921c9 | |
| parent | c1284c3d3c6131a9d0ded9601ae0feb9a2e81a65 (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.py | 6 | ||||
| -rw-r--r-- | tests/admin_views/tests.py | 8 |
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, '{0}'); 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, '%s')" % actor.pk) + def test_hide_change_password(self): """ Tests if the "change password" link in the admin is hidden if the User |
