diff --git a/django/contrib/admin/utils.py b/django/contrib/admin/utils.py index 2d8c4b9d00..c8b59b3892 100644 --- a/django/contrib/admin/utils.py +++ b/django/contrib/admin/utils.py @@ -68,7 +68,7 @@ def quote(s): res = list(s) for i in range(len(res)): c = res[i] - if c in """:/_#?;@&=+$,"[]<>%\\""": + if c in """:/_#?;@&=+$,"[]<>%\n\\""": res[i] = '_%02X' % ord(c) return ''.join(res) diff --git a/tests/admin_utils/tests.py b/tests/admin_utils/tests.py index 7296af7eb2..18c95bf768 100644 --- a/tests/admin_utils/tests.py +++ b/tests/admin_utils/tests.py @@ -9,7 +9,7 @@ from django.contrib import admin from django.contrib.admin import helpers from django.contrib.admin.utils import ( NestedObjects, display_for_field, flatten, flatten_fieldsets, - label_for_field, lookup_field, + label_for_field, lookup_field, quote, ) from django.db import DEFAULT_DB_ALIAS, models from django.test import TestCase, override_settings @@ -379,3 +379,6 @@ class UtilsTests(TestCase): }), ) self.assertEqual(flatten_fieldsets(fieldsets), ['url', 'title', 'content', 'sites']) + + def test_quote(self): + self.assertEqual(quote('something\nor\nother'), 'something_0Aor_0Aother')