Skip to content

Commit

Permalink
Edits
Browse files Browse the repository at this point in the history
  • Loading branch information
carltongibson committed May 8, 2018
1 parent 9c1c6b2 commit ed3a971
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
6 changes: 3 additions & 3 deletions django/contrib/admin/options.py
Expand Up @@ -1511,10 +1511,10 @@ def add_view(self, request, form_url='', extra_context=None):
def change_view(self, request, object_id, form_url='', extra_context=None):
return self.changeform_view(request, object_id, form_url, extra_context)

def get_edited_object_pks(self, request, pk_pattern):
regexp = re.compile('{prefix}-\d+-{pk_name}$'.format(prefix=pk_pattern, pk_name=self.model._meta.pk.name))
def get_edited_object_pks(self, request, prefix):
pk_pattern = re.compile('{prefix}-\d+-{pk_name}$'.format(prefix=prefix, pk_name=self.model._meta.pk.name))
return [
value for key, value in request.POST.items() if regexp.match(key)
value for key, value in request.POST.items() if pk_pattern.match(key)
]

@csrf_protect_m
Expand Down
11 changes: 7 additions & 4 deletions tests/admin_changelist/tests.py
Expand Up @@ -703,8 +703,7 @@ def test_multiuser_edit(self):

def test_get_edited_object_ids(self):
"""
Check that we're only getting object pks of objects that were edited
#28462 memory usage is too high for large datasets
Primary keys from form data are correctly parsed. (#28462)
"""
a = Swallow.objects.create(origin='Swallow A', load=4, speed=1)
b = Swallow.objects.create(origin='Swallow B', load=2, speed=2)
Expand All @@ -715,6 +714,10 @@ def test_get_edited_object_ids(self):
changelist_url = reverse('admin:admin_changelist_swallow_changelist')
m = SwallowAdmin(Swallow, custom_site)
data = {
'form-TOTAL_FORMS': '3',
'form-INITIAL_FORMS': '3',
'form-MIN_NUM_FORMS': '0',
'form-MAX_NUM_FORMS': '1000',
'form-0-uuid': str(a.pk),
'form-1-uuid': str(b.pk),
'form-2-uuid': str(c.pk),
Expand All @@ -727,8 +730,8 @@ def test_get_edited_object_ids(self):
'_save': 'Save',
}
request = self.factory.post(changelist_url, data=data)
ids = m.get_edited_object_pks(request, 'form')
self.assertEqual(sorted(ids), sorted([str(a.pk), str(b.pk), str(c.pk)]))
pks = m.get_edited_object_pks(request, prefix='form')
self.assertEqual(sorted(pks), sorted([str(a.pk), str(b.pk), str(c.pk)]))

def test_deterministic_order_for_unordered_model(self):
"""
Expand Down

0 comments on commit ed3a971

Please sign in to comment.