예제 #1
0
파일: views.py 프로젝트: diegomatar/qanda
def responder(request, pk):
    pergunta = Pergunta.objects.get(pk=pk)
    
    if request.method == 'POST':
        form = RespostaForm(request.POST)
        form.helper.form_action = reverse('responder', args=[pergunta.id])
        if form.is_valid():
            form_data = form.save(commit=False)
            form_data.pergunta = pergunta
            form_data.autor = request.user
            form_data.resposta = sanitize_html(form_data.resposta)
            form_data.resposta = add_responsive_img_class(form_data.resposta)
            form_data.save()
            notif = new_Answer(pergunta.autor, request.user, pergunta, form_data)
            url = pergunta.get_absolute_url()
            
            # Add the first two topics of question to user knowledge
            question_tags = pergunta.tags.all()[0:2]
            profile = request.user.userprofile
            profile.knows_about.add(*question_tags)
            # Add the question to followed ones
            profile.follow_questions.add(pergunta)
            profile.save()
            
            # Check if user already has a bio for main question tag
            try:
                request.user.userbio_set.get(tag=pergunta.tags_o()[0])
            # If it does not, asks to create a new one
            except:
                request.session['new_answer'] = True
            
            return HttpResponseRedirect(url)
    else:
        form = RespostaForm()
        
    # Get related questions list
    related = related_questions(pergunta, 15)
    
    # Get users who can answer the question
    ask_users = user_to_answer(pergunta, 10)
    
    context = {
        'form': form,
        'pergunta': pergunta,
        'related': related,
        'ask_users': ask_users,
        'edit': 0,
        
    }
     
    return render(request, 'perguntas/responder.html', context)
예제 #2
0
파일: views.py 프로젝트: diegomatar/qanda
def pergunta(request, slug):
    
    pergunta = Pergunta.objects.get(slug=slug)
    respostas = []
    # If the user is answering the question
    if request.method == 'POST':
        form = RespostaForm(request.POST)
        form.helper.form_action = reverse('responder', args=[pergunta.id])
        if form.is_valid():
            form_data = form.save(commit=False)
            form_data.pergunta = pergunta
            form_data.autor = request.user
            form_data.resposta = sanitize_html(form_data.resposta)
            form_data.resposta = add_responsive_img_class(form_data.resposta)
            form_data.save()
            answer = form_data
            for usr in pergunta.follow_questions.all():
                notif = new_Answer(usr.user, request.user, pergunta, answer)
            
            # Add the first two topics of question to user knowledge
            question_tags = pergunta.tags_o()[0:2]
            profile = request.user.userprofile
            profile.knows_about.add(*question_tags)
            # Add question to followed questions
            profile.follow_questions.add(pergunta)
            profile.save()
            
            # Check if user already has a bio for main question tag
            try:
                request.user.userbio_set.get(tag=pergunta.tags_o()[0])
            # If it does not, asks to create a new one
            except:
                request.session['new_answer'] = True
            
            return HttpResponseRedirect(reverse('pergunta', args=[pergunta.slug] ))
    else:
        form = RespostaForm()
    
        resps = pergunta.resposta_set.all()
        respostas = perguntas = sorted(resps, key=lambda resposta: resposta.votes, reverse=True)
        
        profile = 0
        try:
            profile = request.user.userprofile
        except:
            pass            
        
        pergunta.views += 1
        pergunta.save()
        
        for resp in pergunta.resposta_set.all():
            resp.views += 1
            resp.save()
    
    # Get related questions list
    related = related_questions(pergunta, 15)
    
    # Get users who can answer the question
    ask_users = user_to_answer(pergunta, 10)

    
    context = {
        'pergunta': pergunta,
        'respostas': respostas,
        'form': form,
        'ask_users': ask_users,
        'related': related,
    }
    return render(request, 'perguntas/pergunta.html', context)