summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-10-13 02:29:17 -0400
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-10-13 02:29:17 -0400
commit5fd9a8bc5de3649ca6423377baec96f527f863e5 (patch)
tree9dc77ec4e147675248e9a01ead751fa45fd889de
parentea576dbd7ac84fe0867a1e7bf2e7f965be8df2ee (diff)
downloadaskbot-5fd9a8bc5de3649ca6423377baec96f527f863e5.tar.gz
askbot-5fd9a8bc5de3649ca6423377baec96f527f863e5.tar.bz2
askbot-5fd9a8bc5de3649ca6423377baec96f527f863e5.zip
allowed user to post new answer after deleting a previous answer
-rw-r--r--askbot/models/__init__.py2
-rw-r--r--askbot/models/question.py2
-rw-r--r--askbot/tests/db_api_tests.py21
3 files changed, 23 insertions, 2 deletions
diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py
index e3afcbb9..f217b816 100644
--- a/askbot/models/__init__.py
+++ b/askbot/models/__init__.py
@@ -886,7 +886,7 @@ def user_assert_can_delete_answer(self, answer = None):
'you can delete only your own posts'
)
low_rep_error_message = _(
- 'Sorry, to deleted other people\' posts, a minimum '
+ 'Sorry, to delete other people\'s posts, a minimum '
'reputation of %(min_rep)s is required'
) % \
{'min_rep': askbot_settings.MIN_REP_TO_DELETE_OTHERS_POSTS}
diff --git a/askbot/models/question.py b/askbot/models/question.py
index 004ffe19..ef35f577 100644
--- a/askbot/models/question.py
+++ b/askbot/models/question.py
@@ -717,7 +717,7 @@ class Thread(models.Model):
def get_answers_by_user(self, user):
"""regardless - deleted or not"""
- return self.posts.filter(post_type = 'answer', author = user)
+ return self.posts.filter(post_type='answer', author=user, deleted=False)
def has_answer_by_user(self, user):
#use len to cache the queryset
diff --git a/askbot/tests/db_api_tests.py b/askbot/tests/db_api_tests.py
index b9e8f5b9..5477990a 100644
--- a/askbot/tests/db_api_tests.py
+++ b/askbot/tests/db_api_tests.py
@@ -9,6 +9,7 @@ from django.test.client import Client
from django.conf import settings
from django.contrib.auth.models import AnonymousUser
from django import forms
+from askbot import exceptions as askbot_exceptions
from askbot.tests.utils import AskbotTestCase
from askbot.tests.utils import with_settings
from askbot import models
@@ -38,6 +39,7 @@ class DBApiTests(AskbotTestCase):
user = user,
question = question,
)
+ return self.answer
def assert_post_is_deleted(self, post):
self.assertTrue(post.deleted == True)
@@ -82,6 +84,25 @@ class DBApiTests(AskbotTestCase):
)
return self.reload_object(q)
+ def test_user_cannot_post_two_answers(self):
+ question = self.post_question(user=self.user)
+ answer = self.post_answer(question=question, user=self.user)
+ self.assertRaises(
+ askbot_exceptions.AnswerAlreadyGiven,
+ self.post_answer,
+ question=question,
+ user=self.user
+ )
+
+ def test_user_can_post_answer_after_deleting_one(self):
+ question = self.post_question(user=self.user)
+ answer = self.post_answer(question=question, user=self.user)
+ self.user.delete_answer(answer=answer)
+ answer2 = self.post_answer(question=question, user=self.user)
+ answers = question.thread.get_answers(user=self.user)
+ self.assertEqual(answers.count(), 1)
+ self.assertEqual(answers[0], answer2)
+
def test_post_anonymous_question(self):
q = self.ask_anonymous_question()
self.assertTrue(q.is_anonymous)