def answer(request, id):#process a new answer """view that posts new answer anonymous users post into anonymous storage and redirected to login page authenticated users post directly """ question = get_object_or_404(models.Post, post_type='question', id=id) if request.method == "POST": form = forms.AnswerForm(request.POST, user=request.user) if form.is_valid(): wiki = form.cleaned_data['wiki'] text = form.cleaned_data['text'] update_time = datetime.datetime.now() if request.user.is_authenticated(): drafts = models.DraftAnswer.objects.filter( author=request.user, thread=question.thread ) drafts.delete() try: follow = form.cleaned_data['email_notify'] is_private = form.cleaned_data['post_privately'] user = form.get_post_user(request.user) answer = user.post_answer( question = question, body_text = text, follow = follow, wiki = wiki, is_private = is_private, timestamp = update_time, ) # by Jun __save_presentation(question, answer, text, user) return HttpResponseRedirect(answer.get_absolute_url()) except askbot_exceptions.AnswerAlreadyGiven, e: request.user.message_set.create(message = unicode(e)) answer = question.thread.get_answers_by_user(request.user)[0] return HttpResponseRedirect(answer.get_absolute_url()) except exceptions.PermissionDenied, e: request.user.message_set.create(message = unicode(e)) else: request.session.flush() models.AnonymousAnswer.objects.create( question=question, wiki=wiki, text=text, session_key=request.session.session_key, ip_addr=request.META['REMOTE_ADDR'], ) return HttpResponseRedirect(url_utils.get_login_url())
def answer(request, id): #process a new answer """view that posts new answer anonymous users post into anonymous storage and redirected to login page authenticated users post directly """ question = get_object_or_404(models.Question, id=id) if request.method == "POST": form = forms.AnswerForm(question, request.user, request.POST) if form.is_valid(): wiki = form.cleaned_data['wiki'] text = form.cleaned_data['text'] update_time = datetime.datetime.now() if request.user.is_authenticated(): try: follow = form.cleaned_data['email_notify'] answer = request.user.post_answer( question=question, body_text=text, follow=follow, wiki=wiki, timestamp=update_time, ) return HttpResponseRedirect(answer.get_absolute_url()) except exceptions.PermissionDenied, e: request.user.message_set.create(message=unicode(e)) else: request.session.flush() anon = models.AnonymousAnswer( question=question, wiki=wiki, text=text, summary=strip_tags(text)[:120], session_key=request.session.session_key, ip_addr=request.META['REMOTE_ADDR'], ) anon.save() return HttpResponseRedirect(reverse('user_signin_new_answer'))