summaryrefslogtreecommitdiff
path: root/tests/admin_changelist
diff options
context:
space:
mode:
authorBaptiste Mispelon <bmispelon@gmail.com>2019-11-24 23:09:07 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-11-26 08:48:10 +0100
commit52936efacec4df05df2d9872c09c3332335bf21b (patch)
tree8fbd85fb80b463ece3125f4edecb1a032e3678d4 /tests/admin_changelist
parent5573a54d409bb98b5c5acdb308310bed02d392c2 (diff)
Fixed #31031 -- Fixed data loss in admin changelist view when formset's prefix contains regex special chars.
Regression in b18650a2634890aa758abae2f33875daa13a9ba3.
Diffstat (limited to 'tests/admin_changelist')
-rw-r--r--tests/admin_changelist/tests.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/admin_changelist/tests.py b/tests/admin_changelist/tests.py
index 05490b061a..8cb6f7eff9 100644
--- a/tests/admin_changelist/tests.py
+++ b/tests/admin_changelist/tests.py
@@ -844,6 +844,26 @@ class ChangeListTests(TestCase):
queryset = m._get_list_editable_queryset(request, prefix='form')
self.assertEqual(queryset.count(), 2)
+ def test_get_list_editable_queryset_with_regex_chars_in_prefix(self):
+ a = Swallow.objects.create(origin='Swallow A', load=4, speed=1)
+ Swallow.objects.create(origin='Swallow B', load=2, speed=2)
+ data = {
+ 'form$-TOTAL_FORMS': '2',
+ 'form$-INITIAL_FORMS': '2',
+ 'form$-MIN_NUM_FORMS': '0',
+ 'form$-MAX_NUM_FORMS': '1000',
+ 'form$-0-uuid': str(a.pk),
+ 'form$-0-load': '10',
+ '_save': 'Save',
+ }
+ superuser = self._create_superuser('superuser')
+ self.client.force_login(superuser)
+ changelist_url = reverse('admin:admin_changelist_swallow_changelist')
+ m = SwallowAdmin(Swallow, custom_site)
+ request = self.factory.post(changelist_url, data=data)
+ queryset = m._get_list_editable_queryset(request, prefix='form$')
+ self.assertEqual(queryset.count(), 1)
+
def test_changelist_view_list_editable_changed_objects_uses_filter(self):
"""list_editable edits use a filtered queryset to limit memory usage."""
a = Swallow.objects.create(origin='Swallow A', load=4, speed=1)