summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--django/contrib/admin/options.py6
-rw-r--r--tests/regressiontests/admin_views/tests.py30
3 files changed, 36 insertions, 1 deletions
diff --git a/AUTHORS b/AUTHORS
index 7bb1408d5f..c00e20c7d0 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -394,6 +394,7 @@ answer newbie questions, and generally made Django that much better:
Ben Slavin <benjamin.slavin@gmail.com>
sloonz <simon.lipp@insa-lyon.fr>
SmileyChris <smileychris@gmail.com>
+ Paul Smith <blinkylights23@gmail.com>
Warren Smith <warren@wandrsmith.net>
smurf@smurf.noris.de
Vsevolod Solovyov
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index 6fa8f5c8dd..a230416152 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -689,6 +689,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))
@@ -700,6 +703,9 @@ class ModelAdmin(BaseModelAdmin):
return response
else:
return HttpResponseRedirect(".")
+ else:
+ msg = "No action selected."
+ self.message_user(request, _(msg))
def add_view(self, request, form_url='', extra_context=None):
"The 'add' admin view for this model."
diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py
index f18e578d3f..bdc0c0376d 100644
--- a/tests/regressiontests/admin_views/tests.py
+++ b/tests/regressiontests/admin_views/tests.py
@@ -1156,7 +1156,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).
@@ -1174,6 +1173,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']