Loading AUTHORS +1 −0 Original line number Diff line number Diff line Loading @@ -397,6 +397,7 @@ answer newbie questions, and generally made Django that much better: Jozko Skrablin <jozko.skrablin@gmail.com> Ben Slavin <benjamin.slavin@gmail.com> sloonz <simon.lipp@insa-lyon.fr> Paul Smith <blinkylights23@gmail.com> Warren Smith <warren@wandrsmith.net> smurf@smurf.noris.de Vsevolod Solovyov Loading django/contrib/admin/options.py +6 −0 Original line number Diff line number Diff line Loading @@ -692,6 +692,9 @@ class ModelAdmin(BaseModelAdmin): # perform an action on it, so bail. selected = request.POST.getlist(helpers.ACTION_CHECKBOX_NAME) if not selected: # Reminder that something needs to be selected or nothing will happen msg = "Items must be selected in order to perform actions on them. No items have been changed." self.message_user(request, _(msg)) return None response = func(self, request, queryset.filter(pk__in=selected)) Loading @@ -703,6 +706,9 @@ class ModelAdmin(BaseModelAdmin): return response else: return HttpResponseRedirect(".") else: msg = "No action selected." self.message_user(request, _(msg)) @csrf_protect @transaction.commit_on_success Loading tests/regressiontests/admin_views/tests.py +29 −1 Original line number Diff line number Diff line Loading @@ -1157,7 +1157,6 @@ class AdminActionsTest(TestCase): self.assert_('action-checkbox-column' in response.content, "Expected an action-checkbox-column in response") def test_multiple_actions_form(self): """ Test that actions come from the form whose submit button was pressed (#10618). Loading @@ -1175,6 +1174,35 @@ class AdminActionsTest(TestCase): self.assertEquals(len(mail.outbox), 1) self.assertEquals(mail.outbox[0].subject, 'Greetings from a function action') def test_user_message_on_none_selected(self): """ User should see a warning when 'Go' is pressed and no items are selected. """ action_data = { ACTION_CHECKBOX_NAME: [], 'action' : 'delete_selected', 'index': 0, } response = self.client.post('/test_admin/admin/admin_views/subscriber/', action_data) msg = """Items must be selected in order to perform actions on them. No items have been changed.""" self.assertContains(response, msg) self.failUnlessEqual(Subscriber.objects.count(), 2) def test_user_message_on_no_action(self): """ User should see a warning when 'Go' is pressed and no action is selected. """ action_data = { ACTION_CHECKBOX_NAME: [1, 2], 'action' : '', 'index': 0, } response = self.client.post('/test_admin/admin/admin_views/subscriber/', action_data) msg = """No action selected.""" self.assertContains(response, msg) self.failUnlessEqual(Subscriber.objects.count(), 2) class TestInlineNotEditable(TestCase): fixtures = ['admin-views-users.xml'] Loading Loading
AUTHORS +1 −0 Original line number Diff line number Diff line Loading @@ -397,6 +397,7 @@ answer newbie questions, and generally made Django that much better: Jozko Skrablin <jozko.skrablin@gmail.com> Ben Slavin <benjamin.slavin@gmail.com> sloonz <simon.lipp@insa-lyon.fr> Paul Smith <blinkylights23@gmail.com> Warren Smith <warren@wandrsmith.net> smurf@smurf.noris.de Vsevolod Solovyov Loading
django/contrib/admin/options.py +6 −0 Original line number Diff line number Diff line Loading @@ -692,6 +692,9 @@ class ModelAdmin(BaseModelAdmin): # perform an action on it, so bail. selected = request.POST.getlist(helpers.ACTION_CHECKBOX_NAME) if not selected: # Reminder that something needs to be selected or nothing will happen msg = "Items must be selected in order to perform actions on them. No items have been changed." self.message_user(request, _(msg)) return None response = func(self, request, queryset.filter(pk__in=selected)) Loading @@ -703,6 +706,9 @@ class ModelAdmin(BaseModelAdmin): return response else: return HttpResponseRedirect(".") else: msg = "No action selected." self.message_user(request, _(msg)) @csrf_protect @transaction.commit_on_success Loading
tests/regressiontests/admin_views/tests.py +29 −1 Original line number Diff line number Diff line Loading @@ -1157,7 +1157,6 @@ class AdminActionsTest(TestCase): self.assert_('action-checkbox-column' in response.content, "Expected an action-checkbox-column in response") def test_multiple_actions_form(self): """ Test that actions come from the form whose submit button was pressed (#10618). Loading @@ -1175,6 +1174,35 @@ class AdminActionsTest(TestCase): self.assertEquals(len(mail.outbox), 1) self.assertEquals(mail.outbox[0].subject, 'Greetings from a function action') def test_user_message_on_none_selected(self): """ User should see a warning when 'Go' is pressed and no items are selected. """ action_data = { ACTION_CHECKBOX_NAME: [], 'action' : 'delete_selected', 'index': 0, } response = self.client.post('/test_admin/admin/admin_views/subscriber/', action_data) msg = """Items must be selected in order to perform actions on them. No items have been changed.""" self.assertContains(response, msg) self.failUnlessEqual(Subscriber.objects.count(), 2) def test_user_message_on_no_action(self): """ User should see a warning when 'Go' is pressed and no action is selected. """ action_data = { ACTION_CHECKBOX_NAME: [1, 2], 'action' : '', 'index': 0, } response = self.client.post('/test_admin/admin/admin_views/subscriber/', action_data) msg = """No action selected.""" self.assertContains(response, msg) self.failUnlessEqual(Subscriber.objects.count(), 2) class TestInlineNotEditable(TestCase): fixtures = ['admin-views-users.xml'] Loading