예제 #1
0
def reply_edit(request, id=None):
    """
    返信ページ
    """

    # 指定された質問を取ってくる
    q = get_object_or_404(Question, pk=id)

    if q.is_closed:
        return top_default(request, msg=m.INFO_REPLY_ALREADY_FINISH)

    replylist = get_object_or_404(ReplyList, question=q, has_replied=False)

    r = Reply()

    # edit
    if request.method == 'POST':
        form = ReplyEditForm(request.POST, instance=r)

        if form.is_valid():
            if q.questioner != request.user:
                # 回答した質問の制限時間をNoneにしておく
                r_list = get_object_or_404(ReplyList, question=q, answerer=request.user)
                if r_list.has_replied:
                    return top_default(request, msg=m.INFO_QUESTION_ALREADY_AUTO_PASS)
                r_list.update(time_limit_date=None)

                # 回答した人に、質問のタグを付加する
                tag_list = QuestionTag.objects.filter(question=q)
                for tag in tag_list:
                    if not UserTag.objects.filter(user=request.user, tag=tag.tag):
                        UserTag.objects.create(tag=tag.tag, user=request.user)

            r = form.save(commit=False)
            r.update(question=q, answerer=request.user, draft=form.cleaned_data['draft'])

            return top_default(request, msg=m.INFO_REPLY_SEND_OK)
        pass
    # new
    else:
        form = ReplyEditForm(instance=r)

    return render_to_response('question/reply_edit.html',
                              {'form': form, 'question': q, 'id': id, 'replylist': replylist},
                              context_instance=RequestContext(request))
예제 #2
0
    def search_replylist_by_keyword_extra(keyword, questioner, answerer):
        """
        キーワードに合致する回答のうち、自分の回答、または自分が投稿した質問の回答に関連づいた質問のReplyListのみ取り出す
        """
        replies = Reply.search_by_keyword(keyword=keyword)
        r_list = []
        for r in replies:
            if r.answerer == answerer:
                reply_lists = ReplyList.objects.filter(answerer=answerer)
                rl = [rl for rl in reply_lists if r.question.id == rl.question.id]
                r_list.extend(rl)
            elif r.question.questioner == questioner:
                reply_lists = ReplyList.objects.filter(question=r.question)
                rl = [rl for rl in reply_lists if r.question.id == rl.question.id]
                r_list.extend(rl)

        return list(set(r_list))
예제 #3
0
파일: views.py 프로젝트: sakaro01/one_month
def question_pass(request, id=None):
    """
    来た質問をパスする。
    次に質問を回す人は、質問者と既にパスした人にはならないようにする。
    また、質問者以外のユーザを質問が回り終わったら、質問者にお知らせする。
    """
    reply_list = ReplyList.objects.get(id=id)
    if reply_list.has_replied:
        msg = 'すでにパスした質問です。'
        return top_default(request, msg)

    qa_manager = QAManager()
    if qa_manager.pass_question(reply_list.question, qa_manager.reply_list_update_random_except):
        msg = '質問をパスしました。'

        # 何回目のパスでロボットが返信してくるか
        if reply_list.question.pass_counter() == 1 and not reply_list.question.has_reply():
            reply = Reply()
            reply.question = reply_list.question
            reply_data = ReplyRobot().reply(reply_list.question)
            if len(reply_data['reply_list']) == 0:
                reply.text = "難問です。答えられたらすごいです。"
            else:
                reply.text = "以下のページはどうでしょうか?\n\n" + "\n".join(reply_data['reply_list'])
            if len(reply_data['word_list']) != 0:
                reply.text += "\n\n抽出結果:" + "、".join(reply_data['word_list'])
            reply.text += "\n推定ジャンル:" + reply_data['genre']
            # ロボットのidを指定
            reply.answerer = User.objects.get(id=1)
            reply.save()
        return top_default(request, msg)
    else:
        reply_list.question.is_closed = True
        reply_list.question.save()
        msg = '質問をパスしました。\n'
        msg += '次の送信先がないため質問は締め切られます。'
        return top_default(request, msg)
예제 #4
0
파일: views.py 프로젝트: sakaro01/one_month
def reply_edit(request, id=None):
    """
    返信ページ
    """

    # 指定された質問を取ってくる
    q = get_object_or_404(Question, pk=id)
    # if ReplyList.objects.filter(question=q, answerer=request.user, has_replied=True):
    #    msg = 'その質問はすでにパスされています'
    #    return render_to_response('question/top_default.html',{'msg':msg},context_instance=RequestContext(request))

    if q.is_closed:
        msg = 'その質問の回答は締め切られました。'
        return top_default(request, msg)
        # return render_to_response('question/top_default.html',{'msg':msg},context_instance=RequestContext(request))

    # replylist = ReplyList.objects.filter(question=q)[0]
    # 各質問について、has_replied=Falseの回答済みリストは一つのみのはず

    replylist = get_object_or_404(ReplyList, question=q, has_replied=False)
    print("rep")

    r = Reply()

    # edit
    if request.method == 'POST':
        form = ReplyEditForm(request.POST, instance=r)

        # 完了がおされたら
        if form.is_valid():
            # この質問の自分あての回答リストを取ってきて、回答済みにしておく
            if q.questioner != request.user:
                r_list = get_object_or_404(ReplyList, question=q, answerer=request.user)
                # has_replied=Falseはいらないと思う
                if r_list.has_replied:
                    msg = 'その質問は自動的にパスされました'
                    return top_default(request, msg)
                # r_list.has_replied = True
                r_list.time_limit_date = None
                r_list.save()

                tag_list = QuestionTag.objects.filter(question=q)
                for tag in tag_list:
                    if not UserTag.objects.filter(user=request.user, tag=tag.tag):
                        user_tag = UserTag()
                        user_tag.tag = tag.tag
                        user_tag.user = request.user
                        user_tag.save()
                        print(user_tag)

            r = form.save(commit=False)
            r.question = q
            r.answerer = request.user
            r.draft = form.cleaned_data['draft']
            r.save()

            # 質問を締め切る
            # q.is_closed = True
            # q.save()

            msg = '返信しました。'
            return top_default(request, msg)
        pass
    # new
    else:
        form = ReplyEditForm(instance=r)

    return render_to_response('question/reply_edit.html',
                              {'form': form, 'question': q, 'id': id, 'replylist': replylist},
                              context_instance=RequestContext(request))