Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #13743 -- Fixed CommentsAdmin to not blow up if the delete_sele…

…cted action is disabled. Thanks, Daniel Lindsley.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14996 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 7655cd8eac4d745d791feb4349bbbcf69e892948 1 parent e299ac0
@jezdez jezdez authored
View
8 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):
View
11 tests/regressiontests/comment_tests/tests/moderation_view_tests.py
@@ -190,3 +190,14 @@ def testActionsModerator(self):
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"
+ )
View
6 tests/regressiontests/comment_tests/urls_admin.py
@@ -8,6 +8,12 @@
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)),
)
Please sign in to comment.
Something went wrong with that request. Please try again.