mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #13166 - Added JavaScript warnings to admin changelist to help against ambiguity between action and list_editable form submission. Thanks to blinkylights and aaugustin for the report and initial patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13072 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -1120,6 +1120,8 @@ class AdminViewListEditable(TestCase):
|
||||
"form-2-alive": "checked",
|
||||
"form-2-gender": "1",
|
||||
"form-2-id": "3",
|
||||
|
||||
"_save": "Save",
|
||||
}
|
||||
response = self.client.post('/test_admin/admin/admin_views/person/',
|
||||
data, follow=True)
|
||||
@@ -1140,6 +1142,8 @@ class AdminViewListEditable(TestCase):
|
||||
"form-2-alive": "checked",
|
||||
"form-2-gender": "1",
|
||||
"form-2-id": "3",
|
||||
|
||||
"_save": "Save",
|
||||
}
|
||||
self.client.post('/test_admin/admin/admin_views/person/', data)
|
||||
|
||||
@@ -1159,6 +1163,8 @@ class AdminViewListEditable(TestCase):
|
||||
"form-1-id": "3",
|
||||
"form-1-gender": "1",
|
||||
"form-1-alive": "checked",
|
||||
|
||||
"_save": "Save",
|
||||
}
|
||||
self.client.post('/test_admin/admin/admin_views/person/?gender__exact=1', data)
|
||||
|
||||
@@ -1171,7 +1177,9 @@ class AdminViewListEditable(TestCase):
|
||||
"form-MAX_NUM_FORMS": "0",
|
||||
|
||||
"form-0-id": "1",
|
||||
"form-0-gender": "1"
|
||||
"form-0-gender": "1",
|
||||
|
||||
"_save": "Save",
|
||||
}
|
||||
self.client.post('/test_admin/admin/admin_views/person/?q=mauchly', data)
|
||||
|
||||
@@ -1187,6 +1195,10 @@ class AdminViewListEditable(TestCase):
|
||||
"form-0-id": "2",
|
||||
"form-0-alive": "1",
|
||||
"form-0-gender": "2",
|
||||
|
||||
# Ensure that the form processing understands this as a list_editable "Save"
|
||||
# and not an action "Go".
|
||||
"_save": "Save",
|
||||
}
|
||||
response = self.client.post('/test_admin/admin/admin_views/person/', data)
|
||||
self.assertContains(response, "Grace is not a Zombie")
|
||||
@@ -1201,6 +1213,8 @@ class AdminViewListEditable(TestCase):
|
||||
"form-0-id": "2",
|
||||
"form-0-alive": "1",
|
||||
"form-0-gender": "2",
|
||||
|
||||
"_save": "Save",
|
||||
}
|
||||
response = self.client.post('/test_admin/admin/admin_views/person/', data)
|
||||
non_form_errors = response.context['cl'].formset.non_form_errors()
|
||||
@@ -1236,6 +1250,10 @@ class AdminViewListEditable(TestCase):
|
||||
"form-3-order": "0",
|
||||
"form-3-id": "4",
|
||||
"form-3-collector": "1",
|
||||
|
||||
# Ensure that the form processing understands this as a list_editable "Save"
|
||||
# and not an action "Go".
|
||||
"_save": "Save",
|
||||
}
|
||||
response = self.client.post('/test_admin/admin/admin_views/category/', data)
|
||||
# Successful post will redirect
|
||||
@@ -1247,6 +1265,63 @@ class AdminViewListEditable(TestCase):
|
||||
self.failUnlessEqual(Category.objects.get(id=3).order, 1)
|
||||
self.failUnlessEqual(Category.objects.get(id=4).order, 0)
|
||||
|
||||
def test_list_editable_action_submit(self):
|
||||
# List editable changes should not be executed if the action "Go" button is
|
||||
# used to submit the form.
|
||||
data = {
|
||||
"form-TOTAL_FORMS": "3",
|
||||
"form-INITIAL_FORMS": "3",
|
||||
"form-MAX_NUM_FORMS": "0",
|
||||
|
||||
"form-0-gender": "1",
|
||||
"form-0-id": "1",
|
||||
|
||||
"form-1-gender": "2",
|
||||
"form-1-id": "2",
|
||||
|
||||
"form-2-alive": "checked",
|
||||
"form-2-gender": "1",
|
||||
"form-2-id": "3",
|
||||
|
||||
"index": "0",
|
||||
"_selected_action": [u'3'],
|
||||
"action": [u'', u'delete_selected'],
|
||||
}
|
||||
self.client.post('/test_admin/admin/admin_views/person/', data)
|
||||
|
||||
self.failUnlessEqual(Person.objects.get(name="John Mauchly").alive, True)
|
||||
self.failUnlessEqual(Person.objects.get(name="Grace Hopper").gender, 1)
|
||||
|
||||
def test_list_editable_action_choices(self):
|
||||
# List editable changes should be executed if the "Save" button is
|
||||
# used to submit the form - any action choices should be ignored.
|
||||
data = {
|
||||
"form-TOTAL_FORMS": "3",
|
||||
"form-INITIAL_FORMS": "3",
|
||||
"form-MAX_NUM_FORMS": "0",
|
||||
|
||||
"form-0-gender": "1",
|
||||
"form-0-id": "1",
|
||||
|
||||
"form-1-gender": "2",
|
||||
"form-1-id": "2",
|
||||
|
||||
"form-2-alive": "checked",
|
||||
"form-2-gender": "1",
|
||||
"form-2-id": "3",
|
||||
|
||||
"_save": "Save",
|
||||
"_selected_action": [u'1'],
|
||||
"action": [u'', u'delete_selected'],
|
||||
}
|
||||
self.client.post('/test_admin/admin/admin_views/person/', data)
|
||||
|
||||
self.failUnlessEqual(Person.objects.get(name="John Mauchly").alive, False)
|
||||
self.failUnlessEqual(Person.objects.get(name="Grace Hopper").gender, 2)
|
||||
|
||||
|
||||
|
||||
|
||||
class AdminSearchTest(TestCase):
|
||||
fixtures = ['admin-views-users','multiple-child-classes']
|
||||
|
||||
|
||||
Reference in New Issue
Block a user