Ticket #15920: comments_banned.diff
File comments_banned.diff, 2.9 KB (added by , 14 years ago) |
---|
-
django/contrib/comments/templatetags/comments.py
diff --git a/django/contrib/comments/templatetags/comments.py b/django/contrib/comments/templatetags/comments.py index 8bc61cd..7c5299e 100644
a b class BaseCommentNode(template.Node): 91 91 qs = qs.filter(is_public=True) 92 92 if getattr(settings, 'COMMENTS_HIDE_REMOVED', True) and 'is_removed' in field_names: 93 93 qs = qs.filter(is_removed=False) 94 if getattr(settings, 'COMMENTS_BANNED_USERS_GROUP', None): 95 where = ['(user_id IS NULL OR user_id NOT IN (SELECT user_id FROM auth_user_groups WHERE group_id = %s))'] 96 params = [settings.COMMENTS_BANNED_USERS_GROUP] 97 qs = qs.extra(where=where, params=params) 94 98 95 99 return qs 96 100 -
tests/regressiontests/comment_tests/tests/templatetag_tests.py
diff --git a/tests/regressiontests/comment_tests/tests/templatetag_tests.py b/tests/regressiontests/comment_tests/tests/templatetag_tests.py index 0ead6c2..cd3eb02 100644
a b class CommentTemplateTagTests(CommentTestCase): 64 64 self.assertEqual(out, "") 65 65 self.assertEqual(list(ctx["cl"]), [c2]) 66 66 67 def testGetCommentListBanned(self, tag=None): 68 from django.conf import settings 69 from django.contrib.auth.models import User, Group 70 71 # Stow. 72 old_banned_group = getattr(settings, 'COMMENTS_BANNED_USERS_GROUP', None) 73 c1, c2, c3, c4 = self.createSomeComments() 74 75 try: 76 banned_group = Group.objects.get(pk=old_banned_group) 77 except Group.DoesNotExist: 78 banned_group = Group.objects.create( 79 name="Banned commentors" 80 ) 81 82 settings.COMMENTS_BANNED_USERS_GROUP = banned_group.pk 83 84 # Ensure it looks right pre-ban. 85 t = "{% load comments %}" + (tag or "{% get_comment_list for comment_tests.article 1 as cl %}") 86 ctx, out = self.render(t) 87 self.assertEqual(out, "") 88 self.assertEqual(list(ctx["cl"]), [c1, c3]) 89 90 # Ban the user. 91 user = User.objects.get(username='frank_nobody') 92 user.groups.add(banned_group) 93 94 t = "{% load comments %}" + (tag or "{% get_comment_list for comment_tests.article 1 as cl %}") 95 ctx, out = self.render(t) 96 self.assertEqual(out, "") 97 # The banned user's comment is no longer included. 98 self.assertEqual(list(ctx["cl"]), [c1]) 99 100 # Restore. 101 if old_banned_group: 102 settings.COMMENTS_BANNED_USERS_GROUP = old_banned_group 103 else: 104 del(settings.COMMENTS_BANNED_USERS_GROUP) 105 67 106 def testGetCommentListFromLiteral(self): 68 107 self.testGetCommentList("{% get_comment_list for comment_tests.author 1 as cl %}") 69 108