コード例 #1
0
ファイル: views.py プロジェクト: tech-sketch/one_month
def mypage(request):
    """
    マイページ
    """

    # ユーザのプロファイル
    p = get_object_or_404(UserProfile, user=request.user)

    # ユーザが登録しているタグ
    user_tags = UserTag.objects.filter(user=request.user)

    # edit
    if request.method == 'POST':

        form = UserProfileEditForm(request.POST, request.FILES, instance=p)

        # 完了がおされたら
        if form.is_valid():
            form.save(commit=True)

            # 選択されたタグがそのユーザに付加されてないタグだったら新規にQuestionTagを生成
            u_tag_names = UserTag.get_user_all_tags_name(user=request.user)
            tags = form.cleaned_data['tag']
            for q_tag in tags:
                if q_tag.name not in u_tag_names:
                    UserTag.objects.create(tag=q_tag, user=request.user)

            # 追加されたタグ名が新規に追加されたタグだったら新規にTagとUserTagを生成
            tag_name = Tag.get_all_tags_name()
            tag_added_name = form.cleaned_data['tag_added']
            if tag_added_name != "" and tag_added_name not in tag_name:
                UserTag.objects.create(tag=Tag.objects.create(name=tag_added_name), user=request.user)

            return redirect('dotchain:mypage')
        pass
    # new
    else:
        form = UserProfileEditForm(instance=p)

    user_question = Question.objects.filter(questioner=request.user)
    user_reply = Reply.objects.filter(answerer=request.user)
    return render_to_response('question/mypage.html',
                              {'form': form, 'user_tags': user_tags, 'uprof': p, 'uquestion': user_question,
                               'ureply': user_reply},
                              context_instance=RequestContext(request))
コード例 #2
0
ファイル: views.py プロジェクト: tech-sketch/one_month
def question_edit(request, id=None, msg=None):
    """
    質問ページ
    """

    # edit
    # 質問の編集機能は今は下書きの場合のみ使う
    if id:
        q = get_object_or_404(Question, pk=id)
        # user check
        if q.questioner != request.user:
            return top_default(request, msg=m.INFO_INVALID_ACCESS)
    # new
    else:
        q = Question()

    # edit
    if request.method == 'POST':
        form = QuestionEditForm(request.POST, instance=q)

        if form.is_valid():
            # 質問を保存
            q = form.save(commit=False)
            q.update(questioner=request.user, draft=form.cleaned_data['draft'])
            if q.draft:
                return top_default(request, msg=m.INFO_QUESTION_SAVE_OK)

            # 質問の宛先(複数)を生成
            div_list = form.cleaned_data['destination']
            for div in div_list:
                QuestionDestination.objects.create(question=q, tag=div)

            # ランダムに質問者を選んでReplyListを生成
            qa_manager = QAManager()
            r_list = qa_manager.make_reply_list(q, qa_manager.reply_list_update_random_except)

            if r_list is None:
                q.delete()
                msg = m.INFO_NO_DESTINATION
                return render_to_response('question/question_edit.html',
                                          {'form': form, 'id': id, 'msg': msg},
                                          context_instance=RequestContext(request))
            else:
                r_list.save()

            # 選択されたタグから、新規にQuestionTagを生成
            q_tags = form.cleaned_data['tag']
            for q_tag in q_tags:
                QuestionTag.objects.create(tag=q_tag, question=q)

            # 追加されたタグ名が新規に追加されたタグだったら生成
            tag_name = Tag.get_all_tags_name()
            tag_added_name = form.cleaned_data['tag_added']
            if tag_added_name != "" and tag_added_name not in tag_name:
                QuestionTag.objects.create(tag=Tag.objects.create(name=tag_added_name), question=q)

            return top_default(request, msg=m.INFO_QUESTION_SEND_OK)
        pass
    # new
    else:
        form = QuestionEditForm(instance=q, initial={'time_limit': datetime.timedelta(minutes=1)})

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