Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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) })
Пример #5
0
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
        })
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
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})
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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)
Пример #12
0
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)
Пример #13
0
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
        })