summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaren Tracey <kmtracey@gmail.com>2009-12-12 22:02:55 +0000
committerKaren Tracey <kmtracey@gmail.com>2009-12-12 22:02:55 +0000
commit6c91e6ecbc10b32dd2c0f3f4e68d16647e4fb38d (patch)
tree049c403e6370980e607362f0b1f7d24b73fd67e6
parent31618e3ea43b5bc17dd2a09be3d0631d4559f641 (diff)
[1.1.X] Fixed #12281: Added some helpful messages when Go is pressed in admin actions and there
is nothing to do because no action was selected or no items are selected. r11837 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.1.X@11838 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-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']