Fix marking posts as spam/ham.

This commit is contained in:
Ray Schamp 2014-03-13 18:22:23 -04:00
parent b184a30ae4
commit 5f9acb2df4
2 changed files with 51 additions and 2 deletions

View file

@ -260,6 +260,54 @@ class ForumSpamTests(TestCase):
self.assertNotContains(response, "postmarkspam")
self.client.logout()
def test_mod_can_mark_spam(self):
self.client.login(
username=self.moderator.username, password=self.password)
ps = PostStatus.objects.create_for_post(self.test_post)
ps.state = PostStatus.FILTERED_HAM
ps.save()
response = self.client.get(
reverse("djangobb:mark_post_spam", args=[self.test_post.id,]))
self.assertEqual(self.test_post.poststatus.state, PostStatus.MARKED_SPAM)
self.client.logout()
def test_mod_can_mark_ham(self):
self.client.login(
username=self.moderator.username, password=self.password)
ps = PostStatus.objects.create_for_post(self.test_post)
ps.state = PostStatus.FILTERED_SPAM
ps.save()
response = self.client.get(
reverse("djangobb:mark_post_ham", args=[self.test_post.id,]))
self.assertEqual(self.test_post.poststatus.state, PostStatus.MARKED_HAM)
self.client.logout()
def test_normal_user_cannot_mark(self):
self.client.login(
username=self.user.username, password=self.password)
ps = PostStatus.objects.create_for_post(self.test_post)
ps.state = PostStatus.FILTERED_HAM
ps.save()
response = self.client.get(
reverse("djangobb:mark_post_spam", args=[self.test_post.id,]))
self.assertEqual(self.test_post.poststatus.state, PostStatus.FILTERED_HAM)
self.assertEqual(response.status_code, 403)
response = self.client.get(
reverse("djangobb:mark_post_ham", args=[self.test_post.id,]))
self.assertEqual(PostStatus.objects.get(post=self.test_post).state, PostStatus.FILTERED_HAM)
self.assertEqual(response.status_code, 403)
ps.state = PostStatus.FILTERED_SPAM
ps.save()
response = self.client.get(
reverse("djangobb:mark_post_spam", args=[self.test_post.id,]))
self.assertEqual(PostStatus.objects.get(post=self.test_post).state, PostStatus.FILTERED_SPAM)
self.assertEqual(response.status_code, 403)
response = self.client.get(
reverse("djangobb:mark_post_ham", args=[self.test_post.id,]))
self.assertEqual(PostStatus.objects.get(post=self.test_post).state, PostStatus.FILTERED_SPAM)
self.assertEqual(response.status_code, 403)
self.client.logout()
# Template tags
def test_can_proceed_tag(self):
self.post_status = PostStatus.objects.create_for_post(self.test_post)

View file

@ -22,6 +22,7 @@ from django.utils.translation import ugettext as _
from django.utils import timezone
from django.views.decorators.csrf import csrf_exempt
from django_fsm.db.fields import can_proceed
from haystack.query import SearchQuerySet, SQ
from djangobb_forum import settings as forum_settings
@ -990,7 +991,7 @@ def mark_spam(request, post_id):
request.user.is_superuser or
request.user in post.topic.forum.moderators.all()):
messages.success(request, _("You don't have permission to mark this post."))
return HttpResponseRedirect(post.get_absolute_url())
return HttpResponseForbidden(post.get_absolute_url())
if post_status is None:
messages.success(request, _("There was not enough data collected to mark this post."))
@ -1022,7 +1023,7 @@ def mark_ham(request, post_id):
request.user.is_superuser or
request.user in post.topic.forum.moderators.all()):
messages.success(request, _("You don't have permission to mark this post."))
return HttpResponseRedirect(post.get_absolute_url())
return HttpResponseForbidden(post.get_absolute_url())
if post_status is None:
messages.success(request, _("There was not enough data collected to mark this post."))