Commit 9184dba1 authored by Jannis Leidel's avatar Jannis Leidel
Browse files

[1.2.X] Fixed #13743 -- Fixed CommentsAdmin to not blow up if the...

[1.2.X] Fixed #13743 -- Fixed CommentsAdmin to not blow up if the delete_selected action is disabled. Thanks, Daniel Lindsley.

Backport from trunk (r14996).

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@15001 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent eb7f2789
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -28,10 +28,12 @@ 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'):
            if 'approve_comments' in actions:
                actions.pop('approve_comments')
            if 'remove_comments' in actions:
                actions.pop('remove_comments')
        return actions

+11 −0
Original line number Diff line number Diff line
@@ -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"
        )
+6 −0
Original line number Diff line number Diff line
@@ -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)),
)