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