def mypage(request): """ マイページ """ # ユーザのプロファイルを取ってくる work_place, created = WorkPlace.objects.get_or_create(name='東京', defaults=dict(name='東京', ), ) work_status, created = WorkStatus.objects.get_or_create(name='在席', defaults=dict(name='在席', ), ) division, created = Division.objects.get_or_create(code=2, name='人事', defaults=dict(code=2, name='人事')) p, created = UserProfile.objects.get_or_create(user=request.user, defaults=dict(avatar='images/icons/pepper.png', work_place=work_place, work_status=work_status, division=division, accept_question=1, ), ) # ユーザが登録しているタグを取ってくる user_tags = UserTag.objects.filter(user=request.user) # user_tags = [user_tag.tag for user_tag in user_tags] # edit if request.method == 'POST': form = UserProfileEditForm(request.POST, request.FILES, instance=p) # 完了がおされたら if form.is_valid(): print(form) r = form.save(commit=False) r.save() # 選択されたタグから、新規にQuestionTagを生成して保存 tags = form.cleaned_data['tag'] u_tag_names = [t.tag.name for t in user_tags] for q_tag in tags: if q_tag.name not in u_tag_names: # ユーザに新規に追加されたタグだったら保存 qt = UserTag() qt.tag = q_tag qt.user = request.user qt.save() # 追加されたタグ名から、新規にTagとQuestionTagを生成して保存 tag_added_name = form.cleaned_data['tag_added'] tags = Tag.objects.all() tag_name = [t.name for t in tags] if tag_added_name != "" and tag_added_name not in tag_name: # 新規に追加されたタグだったら保存 t = Tag() t.name = tag_added_name t.save() qt = UserTag() qt.tag = t qt.user = request.user qt.save() else: print("tag_added") print(tag_added_name) return redirect('dotchain:mypage') pass # new else: form = UserProfileEditForm(instance=p) # tag_form = UserTagEditForm(instance=t) # TODO マイページにユーザが登録済みのタグを表示しつつ、追加・編集できるようにしたい 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: print("不正なアクセスです!") return redirect('dotchain:top') # 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.questioner = request.user q.draft = form.cleaned_data['draft'] q.save() div_list = form.cleaned_data['destination'] for div in div_list: d = QuestionDestination() d.question = q d.tag = div d.save() # ランダムに質問者を選んでから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 = '宛先ユーザが見つかりませんでした。入力された質問は消去されます。\n' msg += '次の原因が考えられます。\n' msg += '・送信先にユーザがいない\n' msg += '・送信先に1日以内にログインしたユーザがいない\n' msg += '・送信先に受信拒否のユーザしかいない' 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: qt = QuestionTag() qt.tag = q_tag qt.question = q qt.save() # 追加されたタグ名から、新規にTagとQuestionTagを生成して保存 tag_added_name = form.cleaned_data['tag_added'] tags = Tag.objects.all() tag_name = [t.name for t in tags] if tag_added_name != "" and tag_added_name not in tag_name: # 新規に追加されたタグだったら保存 t = Tag() t.name = tag_added_name t.save() qt = QuestionTag() qt.tag = t qt.question = q qt.save() return redirect('dotchain:top') 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))