def question_details(request, question_key): ctx = {} question = get_object_or_404(Question, key=question_key) if request.method == 'POST': user = users.get_current_user() if user is None: return redirect(users.create_login_url(request.path)) initial = { 'author': users.get_current_user(), 'question': question, } form = AnswerForm(request.POST, initial=initial) if form.is_valid(): # XXX FIXME - why initial data does not exist in cleaned data? form.cleaned_data.update(initial) form.save() return redirect(reverse('questions_question_list')) ctx['answer_form'] = form else: ctx['answer_form'] = AnswerForm() ctx['question'] = question return render(request, 'questions/question_details.html', ctx)
def create_answer(request): if request.method == 'POST': # Set the submission_date automatically. form = AnswerForm(request.POST) if form.is_valid(): print form.cleaned_data form.save() return HttpResponseRedirect(reverse('answers:list')) else: context = {'form': form} return render(request, 'answers/new.html', context) else: form = AnswerForm() context = {'form': form} return render(request, 'answers/new.html', context)
def answer(request, qid): #fromDB!!! 4DZ mainQuestion = Question.manager.get(pk=int(qid)) userAnswers = Answer.manager.all_answers_by_question(qid) userAnswers = paginate(userAnswers, request, 5) if request.method == "POST": form = AnswerForm(request.POST) if form.is_valid(): answer = form.save(mainQuestion, request.user) return HttpResponseRedirect( reverse('questions:answer', kwargs={'qid': mainQuestion.pk})) else: form = AnswerForm() topMembers = UserImaged.objects.order_by('-rating').all()[:5] topTags = Tag.objects.get_popular_tags() context = { 'form': form, 'mainQuestion': mainQuestion, 'userAnswers': userAnswers, 'topMembers': topMembers, 'topTags': topTags } return render(request, 'answer/answer.html', context)
def add_answer(request, pk): context = RequestContext(request) registered = False if request.method == 'POST': answer_form = AnswerForm(data=request.POST, initial={'user': request.user, 'question': pk}) if answer_form.is_valid(): answer_form.instance.user = request.user answer_form.instance.question = Question.objects.get(id=pk) answer_form.save() registered = True else: print answer_form.errors else: answer_form = AnswerForm() return render(request, 'answer/new.html', { 'answer_form': answer_form, 'registered': registered, 'question': Question.objects.get(id=pk) })
def question_view(request, question_id): question = Questions.objects.get_by_id(question_id) answers = Answers.objects.get_answers_by_question_id(question_id) if request.method == "POST": form = AnswerForm(request.POST) if form.is_valid(): form.save(request.user, question) return redirect(resolve_url('question', question_id=question_id)) else: form = AnswerForm(None) return render( request, 'question.html', { 'question': question, 'question_id': question_id, 'answers': answers, 'form': form })
def create_answer(request, question_id): form = AnswerForm(request.POST) new_answer = form.save(commit=False) new_answer.date = datetime.datetime.now() question = get_object_or_404(Question, pk=question_id) new_answer.question = question new_answer.user = request.user new_answer.save() return redirect('questions:show', question_id)
def question_detail(request, slug=None): global upvote, downvote, vote_count same_user = False upvote = False downvote = False question = get_object_or_404(Question, slug=slug) # votes = Vote.objects.filter(question_id=question.id) # vote_count = votes.filter(Q(upvote__exact=1) | Q(downvote__exact=1)).count() # print(vote_count) try: q = QuestionTotal.objects.get(question_id=question.id) vote_count = q.total except: vote_count = 0 print(vote_count) answers_list = Answer.objects.filter(question=question) context = {"question": question, "answers_list": answers_list, "vote_count": vote_count, "same_user": same_user, "upvote": upvote, "downvote": downvote } if request.user.is_authenticated: form = AnswerForm(request.POST or None) if form.is_valid(): answer = form.save(commit=False) answer.user = request.user answer.question = question answer.save() # messages.success(request, 'Answer was Posted.') form = AnswerForm() try: v = Vote.objects.get(question_id=question.id, user_id=request.user.id) if v: same_user = True else: same_user = False if v.upvote == 1 and v.downvote == 0: upvote = True downvote = False elif v.upvote == 0 and v.downvote == 1: upvote = False downvote = True except: same_user = False context = {"question": question, "form": form, "answers_list": answers_list, "vote_count": vote_count, "same_user": same_user, "upvote": upvote, "downvote": downvote } return render(request, "questions/question_detail.html", context)
def add_answer_to_question(request, username, pk): question = get_object_or_404(Question, pk=pk) if request.method == "POST": form = AnswerForm(request.POST) if form.is_valid(): answer = form.save(commit=False) answer.question = question answer.save() return redirect('questions:single', username= question.user.username, pk=question.pk) else: form = AnswerForm() return render(request, 'questions/answer_form.html', {'form': form})
def single_question(request, question_number): try: question = Question.objects.get_with_rating(id=int(question_number)) except Question.DoesNotExist: return Http404() answers = Answer.objects.filter_with_rating(question_id=question.id) context = {'question': question, 'answers': answers} context = add_user(request, context) if request.method == 'POST': form = AnswerForm(request.POST, context["userinfo"], question) if form.is_valid(): form.save() return redirect('question', question_number) else: form = AnswerForm() context['form'] = form return render(request, 'question.html', context)
def question(request, question_id): question = Question.object.get_question(question_id) answers = Answer.object.get_question(question_id) answers_on_page = paginate(answers, request, 3) if request.POST: form = AnswerForm(request.user, question, data=request.POST) if form.is_valid(): answer = form.save() return redirect( reverse('question', kwargs={'question_id': question.pk})) else: form = AnswerForm(request.user, question) context = {'question': question, 'answers': answers_on_page, 'form': form} return render(request, 'question.html', context)
def handle_answer_submission(request, question): candidates = Candidate.objects.filter(member__id=request.user.id) if not candidates.exists(): return redirect('questions:answers', pk=question.id) candidate = candidates.get() if Answer.objects.filter( candidate=candidate, question=question).exclude(status='rejected').exists(): return redirect('questions:answers', pk=question.id) form = AnswerForm(request.POST) if not form.is_valid(): return show_answers(request, question, form) answer = form.save(commit=False) answer.candidate = candidate answer.question = question answer.save() return redirect('questions:answers', pk=question.id)
def answer_update(request, slug=None, pk=None): question = get_object_or_404(Question, slug=slug) instance = get_object_or_404(Answer, pk=pk) if instance.user != request.user: raise Http404 else: form = AnswerForm(request.POST or None, instance=instance) if form.is_valid(): answer = form.save(commit=False) answer.user = request.user answer.question = question answer.save() # messages.success(request, 'Answer was Updated.') return redirect(question.get_absolute_url()) context = {"form": form, "title": "Update Answer" } return render(request, "questions/answer.html", context)
def question(request, question_id=None): COUNT_ON_PAGE = 30 q = get_object_or_404(Question, id=question_id) if request.method == "POST": # Добавление ответа form = AnswerForm(request.user, q, request.POST) if form.is_valid(): new_answer = form.save() async_to_sync(channel_layer.group_send)( "question_%s" % question_id, { 'id': new_answer.pk, 'text': new_answer.text, 'avatar': new_answer.user.profile.avatar.url, 'type': 'new_answer' }) answers = q.answers.hot_answers() # Ищу индекс нового ответа index = 1 for ans in answers: if ans == new_answer: break index += 1 page = math.ceil(index / COUNT_ON_PAGE) # страница c новым ответом return HttpResponseRedirect( '/question/{}?page={}#answer_{}'.format( question_id, page, new_answer.pk)) else: form = AnswerForm(request.user, q) answers = q.answers.hot_answers() page, page_range = paginate(request, answers, default_limit=COUNT_ON_PAGE, pages_count=7) return render( request, 'questions/question.html', { 'question': q, 'answers': page.object_list, 'page': page, 'page_range': page_range, 'form': form })