Fixed #12218: 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.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@11837 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Karen Tracey 2009-12-12 21:51:47 +00:00
parent 627f4623b7
commit 8a59084c3a
3 changed files with 36 additions and 1 deletions

View File

@ -397,6 +397,7 @@ answer newbie questions, and generally made Django that much better:
Jozko Skrablin <jozko.skrablin@gmail.com> Jozko Skrablin <jozko.skrablin@gmail.com>
Ben Slavin <benjamin.slavin@gmail.com> Ben Slavin <benjamin.slavin@gmail.com>
sloonz <simon.lipp@insa-lyon.fr> sloonz <simon.lipp@insa-lyon.fr>
Paul Smith <blinkylights23@gmail.com>
Warren Smith <warren@wandrsmith.net> Warren Smith <warren@wandrsmith.net>
smurf@smurf.noris.de smurf@smurf.noris.de
Vsevolod Solovyov Vsevolod Solovyov

View File

@ -692,6 +692,9 @@ class ModelAdmin(BaseModelAdmin):
# perform an action on it, so bail. # perform an action on it, so bail.
selected = request.POST.getlist(helpers.ACTION_CHECKBOX_NAME) selected = request.POST.getlist(helpers.ACTION_CHECKBOX_NAME)
if not selected: 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 return None
response = func(self, request, queryset.filter(pk__in=selected)) response = func(self, request, queryset.filter(pk__in=selected))
@ -703,6 +706,9 @@ class ModelAdmin(BaseModelAdmin):
return response return response
else: else:
return HttpResponseRedirect(".") return HttpResponseRedirect(".")
else:
msg = "No action selected."
self.message_user(request, _(msg))
@csrf_protect @csrf_protect
@transaction.commit_on_success @transaction.commit_on_success

View File

@ -1157,7 +1157,6 @@ class AdminActionsTest(TestCase):
self.assert_('action-checkbox-column' in response.content, self.assert_('action-checkbox-column' in response.content,
"Expected an action-checkbox-column in response") "Expected an action-checkbox-column in response")
def test_multiple_actions_form(self): def test_multiple_actions_form(self):
""" """
Test that actions come from the form whose submit button was pressed (#10618). Test that actions come from the form whose submit button was pressed (#10618).
@ -1175,6 +1174,35 @@ class AdminActionsTest(TestCase):
self.assertEquals(len(mail.outbox), 1) self.assertEquals(len(mail.outbox), 1)
self.assertEquals(mail.outbox[0].subject, 'Greetings from a function action') 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): class TestInlineNotEditable(TestCase):
fixtures = ['admin-views-users.xml'] fixtures = ['admin-views-users.xml']