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)
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)