summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsailingcai <sailingcai@gmail.com>2009-10-13 23:05:39 +0800
committersailingcai <sailingcai@gmail.com>2009-10-13 23:05:39 +0800
commit0a6e82562c5c910cef4711e30a04ef866b805e32 (patch)
treecf2e172e7a91b6f538e9db7f47c5c812e78bb76e
parent68050eb048190c0b924c8c0612540c405dcd5ea6 (diff)
downloadaskbot-0a6e82562c5c910cef4711e30a04ef866b805e32.tar.gz
askbot-0a6e82562c5c910cef4711e30a04ef866b805e32.tar.bz2
askbot-0a6e82562c5c910cef4711e30a04ef866b805e32.zip
1. refactor get_answers_from_question
2. refactor order_by for answers
-rw-r--r--forum/managers.py17
-rw-r--r--forum/views.py6
2 files changed, 12 insertions, 11 deletions
diff --git a/forum/managers.py b/forum/managers.py
index 2e3e4186..aa155415 100644
--- a/forum/managers.py
+++ b/forum/managers.py
@@ -165,17 +165,22 @@ class TagManager(models.Manager):
class AnswerManager(models.Manager):
GET_ANSWERS_FROM_USER_QUESTIONS = u'SELECT answer.* FROM answer INNER JOIN question ON answer.question_id = question.id WHERE question.author_id =%s AND answer.author_id <> %s'
- def get_answers_from_question(self, question, user=None):
+ def get_answers_from_question(self, question, user=None, other_orderby = None):
"""
Retrieves visibile answers for the given question. Delete answers
are only visibile to the person who deleted them.
- """
-
+ """
if user is None or not user.is_authenticated():
- return self.filter(question=question, deleted=False)
+ q = self.filter(question=question, deleted=False)
+ else:
+ q = self.filter(Q(question=question),
+ Q(deleted=False) | Q(deleted_by=user))
+ if other_orderby is None:
+ q = q.order_by("-accepted")
else:
- return self.filter(Q(question=question),
- Q(deleted=False) | Q(deleted_by=user))
+ q = q.order_by("-accepted", other_orderby)
+
+ return q
def get_answers_from_questions(self, user_id):
"""
diff --git a/forum/views.py b/forum/views.py
index 08f665f8..5e53644f 100644
--- a/forum/views.py
+++ b/forum/views.py
@@ -329,7 +329,7 @@ def question(request, id):
if question.deleted and not can_view_deleted_post(request.user, question):
raise Http404
answer_form = AnswerForm(question, request.user)
- answers = Answer.objects.get_answers_from_question(question, request.user)
+ answers = Answer.objects.get_answers_from_question(question, request.user, orderby)
answers = answers.select_related(depth=1)
favorited = question.has_favorite_by_user(request.user)
@@ -346,10 +346,6 @@ def question(request, id):
vote_value = 1
user_answer_votes[answer.id] = vote_value
-
- if answers is not None:
- answers = answers.order_by("-accepted", orderby)
-
filtered_answers = []
for answer in answers:
if answer.deleted == True: