def question_answers(request, question_id): question = Question.objects.question_by_id(question_id) answers = Answer.objects.answers_by_question(question) form = AddAnswerForm(request.POST or None) if request.method == "POST" and form.is_valid() and request.user.is_authenticated(): new_answer = Answer(text=form.cleaned_data['text']) new_answer.question = question new_answer.author = request.user new_answer.save() question.answers_count += 1 question.save() # Send email to question author subject = 'New answer for \"' + question.title + '\"' message = str(request.build_absolute_uri()) + '#' + str(new_answer.id) from_email = settings.EMAIL_HOST_USER to_email = str(question.author.email) send_mail(subject, message, from_email, [to_email], fail_silently=settings.DEBUG) return redirect(reverse('questions.views.question_answers', kwargs={'question_id': question_id}) + '#' + str(new_answer.id)) return render(request, 'question.html', { 'popular_tags': cron_cache.get_popular_tags(), 'best_members': cron_cache.get_best_members(), 'question': question, 'answers': answers, 'form': form, })
def question(request, questionslug): question = get_object_or_404(Question, slug=questionslug) if not question.is_published: return Http404() if request.user.is_authenticated(): person = request.user.get_profile() else: person = None answers = Answer.objects.filter(question=question) if request.method == 'POST': form = AddAnswerForm(request.POST) if form.is_valid(): person = request.user.get_profile() creation_args = { 'answer': form.cleaned_data['answer'], 'owner': person, 'question': question, 'date_added': datetime.now(), } answer = Answer.objects.create(**creation_args) url = question.get_absolute_url() return HttpResponseRedirect(url) else: form = AddAnswerForm() #answers_list = [] #for answer in Answer.objects.filter(question=question): # if answer in (x.answer for x in vote_list): # voted=True # else: # voted=False # if answer.added_by == laowai: # owner = True # else: # owner = False # answers_list.append(dict(answer=answer, voted=voted, owner=owner, vote_count=answer.vote_count)) #answers = sorted(answers_list, reverse=True, key=lambda k: k['vote_count']) return render(request, "questions/question.html", locals())
def add_answer(request, questionslug): question = get_object_or_404(Question, slug=questionslug) if request.method == 'POST': form = AddAnswerForm(request.POST) if form.is_valid(): person = request.user.get_profile() creation_args = { 'answer': form.cleaned_data['answer'], 'owner': person, 'question': question, 'date_added': datetime.now(), 'votes': 1, } answer = Answer.objects.create(**creation_args) url = question.get_absolute_url() return HttpResponseRedirect(url) else: form = AddAnswerForm() return render(request, "questions/forms/add_answer.html", locals())
def question_answers(request, question_id): question = Question.objects.question_by_id(question_id) answers = Answer.objects.answers_by_question(question) form = AddAnswerForm(request.POST or None) if request.method == "POST" and form.is_valid( ) and request.user.is_authenticated(): new_answer = Answer(text=form.cleaned_data['text']) new_answer.question = question new_answer.author = request.user new_answer.save() question.answers_count += 1 question.save() # Send email to question author subject = 'New answer for \"' + question.title + '\"' message = str(request.build_absolute_uri()) + '#' + str(new_answer.id) from_email = settings.EMAIL_HOST_USER to_email = str(question.author.email) send_mail(subject, message, from_email, [to_email], fail_silently=settings.DEBUG) return redirect( reverse('questions.views.question_answers', kwargs={'question_id': question_id}) + '#' + str(new_answer.id)) return render( request, 'question.html', { 'popular_tags': cron_cache.get_popular_tags(), 'best_members': cron_cache.get_best_members(), 'question': question, 'answers': answers, 'form': form, })