diff options
author | sailingcai <sailingcai@gmail.com> | 2009-10-13 23:05:39 +0800 |
---|---|---|
committer | sailingcai <sailingcai@gmail.com> | 2009-10-13 23:05:39 +0800 |
commit | 0a6e82562c5c910cef4711e30a04ef866b805e32 (patch) | |
tree | cf2e172e7a91b6f538e9db7f47c5c812e78bb76e /forum | |
parent | 68050eb048190c0b924c8c0612540c405dcd5ea6 (diff) | |
download | askbot-0a6e82562c5c910cef4711e30a04ef866b805e32.tar.gz askbot-0a6e82562c5c910cef4711e30a04ef866b805e32.tar.bz2 askbot-0a6e82562c5c910cef4711e30a04ef866b805e32.zip |
1. refactor get_answers_from_question
2. refactor order_by for answers
Diffstat (limited to 'forum')
-rw-r--r-- | forum/managers.py | 17 | ||||
-rw-r--r-- | forum/views.py | 6 |
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: |