diff options
| author | Jannis Leidel <jannis@leidel.info> | 2010-12-21 14:56:48 +0000 |
|---|---|---|
| committer | Jannis Leidel <jannis@leidel.info> | 2010-12-21 14:56:48 +0000 |
| commit | 7655cd8eac4d745d791feb4349bbbcf69e892948 (patch) | |
| tree | 0944b4332a283f08abc6aeb87ba0d1c88ac89367 | |
| parent | e299ac0cae6623df3fe4c5fe26f2c1c3db8be1d6 (diff) | |
Fixed #13743 -- Fixed CommentsAdmin to not blow up if the delete_selected action is disabled. Thanks, Daniel Lindsley.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@14996 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/contrib/comments/admin.py | 8 | ||||
| -rw-r--r-- | tests/regressiontests/comment_tests/tests/moderation_view_tests.py | 11 | ||||
| -rw-r--r-- | tests/regressiontests/comment_tests/urls_admin.py | 6 |
3 files changed, 22 insertions, 3 deletions
diff --git a/django/contrib/comments/admin.py b/django/contrib/comments/admin.py index 28678e045a..4cb90663a0 100644 --- a/django/contrib/comments/admin.py +++ b/django/contrib/comments/admin.py @@ -28,11 +28,13 @@ class CommentsAdmin(admin.ModelAdmin): def get_actions(self, request): actions = super(CommentsAdmin, self).get_actions(request) # Only superusers should be able to delete the comments from the DB. - if not request.user.is_superuser: + if not request.user.is_superuser and 'delete_selected' in actions: actions.pop('delete_selected') if not request.user.has_perm('comments.can_moderate'): - actions.pop('approve_comments') - actions.pop('remove_comments') + if 'approve_comments' in actions: + actions.pop('approve_comments') + if 'remove_comments' in actions: + actions.pop('remove_comments') return actions def flag_comments(self, request, queryset): diff --git a/tests/regressiontests/comment_tests/tests/moderation_view_tests.py b/tests/regressiontests/comment_tests/tests/moderation_view_tests.py index ef79b4dc15..e5094ab0cc 100644 --- a/tests/regressiontests/comment_tests/tests/moderation_view_tests.py +++ b/tests/regressiontests/comment_tests/tests/moderation_view_tests.py @@ -190,3 +190,14 @@ class AdminActionsTests(CommentTestCase): self.client.login(username="normaluser", password="normaluser") response = self.client.get("/admin/comments/comment/") self.assertEquals("approve_comments" in response.content, True) + + def testActionsDisabledDelete(self): + "Tests a CommentAdmin where 'delete_selected' has been disabled." + comments = self.createSomeComments() + self.client.login(username="normaluser", password="normaluser") + response = self.client.get('/admin2/comments/comment/') + self.assertEqual(response.status_code, 200) + self.assert_( + '<option value="delete_selected">' not in response.content, + "Found an unexpected delete_selected in response" + ) diff --git a/tests/regressiontests/comment_tests/urls_admin.py b/tests/regressiontests/comment_tests/urls_admin.py index 341285d7ef..d7e1a4e916 100644 --- a/tests/regressiontests/comment_tests/urls_admin.py +++ b/tests/regressiontests/comment_tests/urls_admin.py @@ -8,6 +8,12 @@ from django.contrib.comments.models import Comment admin_site = admin.AdminSite() admin_site.register(Comment, CommentsAdmin) +# To demonstrate proper functionality even when ``delete_selected`` is removed. +admin_site2 = admin.AdminSite() +admin_site2.disable_action('delete_selected') +admin_site2.register(Comment, CommentsAdmin) + urlpatterns = patterns('', (r'^admin/', include(admin_site.urls)), + (r'^admin2/', include(admin_site2.urls)), ) |
