def test_comment_count_denormalization(self): class AllIsSpamModerator(EntryCommentModerator): spam_checker_backends = ["zinnia.spam_checker.backends.all_is_spam"] class NoMailNoSpamModerator(EntryCommentModerator): def email(self, *ka, **kw): pass def moderate(self, *ka, **kw): return False datas = {"name": "Jim Bob", "email": "*****@*****.**", "url": "", "comment": "This is my comment"} f = CommentForm(self.entry) datas.update(f.initial) url = reverse("comments-post-comment") moderator_stack.unregister(Entry) moderator_stack.register(Entry, AllIsSpamModerator) self.assertEqual(self.entry.comment_count, 0) connect_discussion_signals() self.client.post(url, datas) entry_reloaded = Entry.objects.get(pk=self.entry.pk) self.assertEqual(entry_reloaded.comment_count, 0) moderator_stack.unregister(Entry) moderator_stack.register(Entry, NoMailNoSpamModerator) datas["comment"] = "This a published comment" self.client.post(url, datas) disconnect_discussion_signals() entry_reloaded = Entry.objects.get(pk=self.entry.pk) self.assertEqual(entry_reloaded.comment_count, 1)
def test_integrity_error_on_duplicate_spam_comments(self): class AllIsSpamModerator(EntryCommentModerator): spam_checker_backends = [ 'zinnia.spam_checker.backends.all_is_spam' ] moderator_stack.unregister(Entry) moderator_stack.register(Entry, AllIsSpamModerator) datas = { 'name': 'Jim Bob', 'email': '*****@*****.**', 'url': '', 'comment': 'This is my comment' } f = CommentForm(self.entry) datas.update(f.initial) url = reverse('comments-post-comment') self.assertEquals(self.entry.comment_count, 0) connect_discussion_signals() self.client.post(url, datas) self.client.post(url, datas) disconnect_discussion_signals() self.assertEqual(comments.get_model().objects.count(), 1) entry_reloaded = Entry.objects.get(pk=self.entry.pk) self.assertEquals(entry_reloaded.comment_count, 0)
def test_integrity_error_on_duplicate_spam_comments(self): class AllIsSpamModerator(EntryCommentModerator): spam_checker_backends = ["zinnia.spam_checker.backends.all_is_spam"] moderator_stack.unregister(Entry) moderator_stack.register(Entry, AllIsSpamModerator) datas = {"name": "Jim Bob", "email": "*****@*****.**", "url": "", "comment": "This is my comment"} f = CommentForm(self.entry) datas.update(f.initial) url = reverse("comments-post-comment") self.assertEquals(self.entry.comment_count, 0) connect_discussion_signals() self.client.post(url, datas) self.client.post(url, datas) disconnect_discussion_signals() self.assertEqual(comments.get_model().objects.count(), 1) entry = Entry.objects.get(pk=self.entry.pk) self.assertEquals(entry.comment_count, 0)
def test_comment_count_denormalization(self): class AllIsSpamModerator(EntryCommentModerator): spam_checker_backends = [ 'zinnia.spam_checker.backends.all_is_spam' ] class NoMailNoSpamModerator(EntryCommentModerator): def email(self, *ka, **kw): pass def moderate(self, *ka, **kw): return False datas = { 'name': 'Jim Bob', 'email': '*****@*****.**', 'url': '', 'comment': 'This is my comment' } f = CommentForm(self.entry) datas.update(f.initial) url = reverse('comments-post-comment') moderator_stack.unregister(Entry) moderator_stack.register(Entry, AllIsSpamModerator) self.assertEquals(self.entry.comment_count, 0) connect_discussion_signals() self.client.post(url, datas) entry_reloaded = Entry.objects.get(pk=self.entry.pk) self.assertEquals(entry_reloaded.comment_count, 0) moderator_stack.unregister(Entry) moderator_stack.register(Entry, NoMailNoSpamModerator) datas['comment'] = 'This a published comment' self.client.post(url, datas) disconnect_discussion_signals() entry_reloaded = Entry.objects.get(pk=self.entry.pk) self.assertEquals(entry_reloaded.comment_count, 1)
def test_integrity_error_on_duplicate_spam_comments(self): class AllIsSpamModerator(EntryCommentModerator): spam_checker_backends = [ 'zinnia.spam_checker.backends.all_is_spam'] moderator_stack.unregister(Entry) moderator_stack.register(Entry, AllIsSpamModerator) datas = {'name': 'Jim Bob', 'email': '*****@*****.**', 'url': '', 'comment': 'This is my comment'} f = CommentForm(self.entry) datas.update(f.initial) url = reverse('comments-post-comment') self.client.post(url, datas) self.client.post(url, datas) self.assertEqual(comments.get_model().objects.count(), 1) self.assertEqual( comments.get_model().objects.all()[0].flags.count(), 1)
def test_comment_count_denormalization(self): class AllIsSpamModerator(EntryCommentModerator): spam_checker_backends = [ 'zinnia.spam_checker.backends.all_is_spam'] class NoMailNoSpamModerator(EntryCommentModerator): def email(self, *ka, **kw): pass def moderate(self, *ka, **kw): return False datas = {'name': 'Jim Bob', 'email': '*****@*****.**', 'url': '', 'comment': 'This is my comment'} f = CommentForm(self.entry) datas.update(f.initial) url = reverse('comments-post-comment') moderator_stack.unregister(Entry) moderator_stack.register(Entry, AllIsSpamModerator) self.assertEquals(self.entry.comment_count, 0) connect_discussion_signals() self.client.post(url, datas) entry_reloaded = Entry.objects.get(pk=self.entry.pk) self.assertEquals(entry_reloaded.comment_count, 0) moderator_stack.unregister(Entry) moderator_stack.register(Entry, NoMailNoSpamModerator) datas['comment'] = 'This a published comment' self.client.post(url, datas) disconnect_discussion_signals() entry_reloaded = Entry.objects.get(pk=self.entry.pk) self.assertEquals(entry_reloaded.comment_count, 1)
def tearDown(self): moderator.unregister(Entry)
def tearDown(self): moderator.unregister(Entry)
from django.conf import settings from django.utils.translation import activate from django.utils.translation import get_language from django.contrib.comments.moderation import moderator from zinnia.models import Entry from zinnia.moderator import EntryCommentModerator class ProjectEntryCommentModerator(EntryCommentModerator): def email(self, comment, content_object, request): """Always send mail on new comments""" current_language = get_language() try: activate(settings.LANGUAGE_CODE) if self.mail_comment_notification_recipients: self.do_email_notification(comment, content_object, request) if self.email_authors: self.do_email_authors(comment, content_object, request) if self.email_reply: self.do_email_reply(comment, content_object, request) finally: activate(current_language) moderator.unregister(Entry) moderator.register(Entry, ProjectEntryCommentModerator)
# Exemple, in the urls.py module of your project. # # import myproject.project_moderation from django.conf import settings from django.utils.translation import activate from django.utils.translation import get_language from django.contrib.comments.moderation import moderator from zinnia.models import Entry from zinnia.moderator import EntryCommentModerator class ProjectEntryCommentModerator(EntryCommentModerator): def email(self, comment, content_object, request): """Always send mail on new comments""" current_language = get_language() try: activate(settings.LANGUAGE_CODE) if self.mail_comment_notification_recipients: self.do_email_notification(comment, content_object, request) if self.email_authors: self.do_email_authors(comment, content_object, request) if self.email_reply: self.do_email_reply(comment, content_object, request) finally: activate(current_language) moderator.unregister(Entry) moderator.register(Entry, ProjectEntryCommentModerator)