From edf7ad36faab8d45aafe1f96feaf46794de22fc1 Mon Sep 17 00:00:00 2001 From: Preston Holmes Date: Sat, 17 Nov 2012 22:53:31 +0100 Subject: Fixed #18658 -- Improved ModelAdmin.message_user API Thanks to Lowe Thiderman for the patch and tests --- tests/regressiontests/admin_views/admin.py | 25 ++++++++++++- tests/regressiontests/admin_views/models.py | 4 ++ tests/regressiontests/admin_views/tests.py | 58 +++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/regressiontests/admin_views/admin.py b/tests/regressiontests/admin_views/admin.py index 6bb6ba59b0..40e800419e 100644 --- a/tests/regressiontests/admin_views/admin.py +++ b/tests/regressiontests/admin_views/admin.py @@ -27,7 +27,7 @@ from .models import (Article, Chapter, Account, Media, Child, Parent, Picture, Album, Question, Answer, ComplexSortedPerson, PrePopulatedPostLargeSlug, AdminOrderedField, AdminOrderedModelMethod, AdminOrderedAdminMethod, AdminOrderedCallable, Report, Color2, UnorderedObject, MainPrepopulated, - RelatedPrepopulated, UndeletableObject, Simple) + RelatedPrepopulated, UndeletableObject, UserMessenger, Simple) def callable_year(dt_value): @@ -592,6 +592,28 @@ def callable_on_unknown(obj): class AttributeErrorRaisingAdmin(admin.ModelAdmin): list_display = [callable_on_unknown, ] +class MessageTestingAdmin(admin.ModelAdmin): + actions = ["message_debug", "message_info", "message_success", + "message_warning", "message_error", "message_extra_tags"] + + def message_debug(self, request, selected): + self.message_user(request, "Test debug", level="debug") + + def message_info(self, request, selected): + self.message_user(request, "Test info", level="info") + + def message_success(self, request, selected): + self.message_user(request, "Test success", level="success") + + def message_warning(self, request, selected): + self.message_user(request, "Test warning", level="warning") + + def message_error(self, request, selected): + self.message_user(request, "Test error", level="error") + + def message_extra_tags(self, request, selected): + self.message_user(request, "Test tags", extra_tags="extra_tag") + site = admin.AdminSite(name="admin") site.register(Article, ArticleAdmin) @@ -667,6 +689,7 @@ site.register(AdminOrderedAdminMethod, AdminOrderedAdminMethodAdmin) site.register(AdminOrderedCallable, AdminOrderedCallableAdmin) site.register(Color2, CustomTemplateFilterColorAdmin) site.register(Simple, AttributeErrorRaisingAdmin) +site.register(UserMessenger, MessageTestingAdmin) # Register core models we need in our tests from django.contrib.auth.models import User, Group diff --git a/tests/regressiontests/admin_views/models.py b/tests/regressiontests/admin_views/models.py index 2b143004d9..6f2ddc23a2 100644 --- a/tests/regressiontests/admin_views/models.py +++ b/tests/regressiontests/admin_views/models.py @@ -651,6 +651,10 @@ class UndeletableObject(models.Model): """ name = models.CharField(max_length=255) +class UserMessenger(models.Model): + """ + Dummy class for testing message_user functions on ModelAdmin + """ class Simple(models.Model): """ diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py index b5e0f407e5..313809ec1c 100644 --- a/tests/regressiontests/admin_views/tests.py +++ b/tests/regressiontests/admin_views/tests.py @@ -3697,3 +3697,61 @@ class AdminViewLogoutTest(TestCase): self.assertEqual(response.template_name, 'admin/login.html') self.assertEqual(response.request['PATH_INFO'], '/test_admin/admin/') self.assertContains(response, '') + + +@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',)) +class AdminUserMessageTest(TestCase): + urls = "regressiontests.admin_views.urls" + fixtures = ['admin-views-users.xml'] + + def setUp(self): + self.client.login(username='super', password='secret') + + def tearDown(self): + self.client.logout() + + def send_message(self, level): + """ + Helper that sends a post to the dummy test methods and asserts that a + message with the level has appeared in the response. + """ + action_data = { + ACTION_CHECKBOX_NAME: [1], + 'action': 'message_%s' % level, + 'index': 0, + } + + response = self.client.post('/test_admin/admin/admin_views/usermessenger/', + action_data, follow=True) + self.assertContains(response, + '
  • Test %s
  • ' % (level, level), + html=True) + + @override_settings(MESSAGE_LEVEL=10) # Set to DEBUG for this request + def test_message_debug(self): + self.send_message('debug') + + def test_message_info(self): + self.send_message('info') + + def test_message_success(self): + self.send_message('success') + + def test_message_warning(self): + self.send_message('warning') + + def test_message_error(self): + self.send_message('error') + + def test_message_extra_tags(self): + action_data = { + ACTION_CHECKBOX_NAME: [1], + 'action': 'message_extra_tags', + 'index': 0, + } + + response = self.client.post('/test_admin/admin/admin_views/usermessenger/', + action_data, follow=True) + self.assertContains(response, + '
  • Test tags
  • ', + html=True) -- cgit v1.3