예제 #1
0
def recomment_new(request, comment_pk):
    # 대댓글 달기

    comment = get_object_or_404(Comment, pk=comment_pk)
    redirect_path = request.GET.get('next', '')  # 해당 컨텐츠로 리디렉션 하기위한 url_path

    if request.method == 'POST':
        # 포스트 요청일 경우
        form = ReCommentForm(request.POST,
                             request.FILES)  # 받아온 데이터를 통해 폼 인스턴스 생성

        if form.is_valid():
            # 폼에 데이터가 유효할 경우
            recomment = form.save(commit=False)  # 디비에 저장하지 않고 인스턴스 생성
            recomment.user = request.user
            recomment.comment = comment
            recomment.save()  # 유저와 공약 연결 후 디비에 저장
            messages.success(request, '새 댓글을 저장했습니다.')

            return redirect(redirect_path)
    else:
        # 포스트 요청이 아닐 경우 빈 폼 생성
        form = CommentForm()

    return render(request, 'cast/comment_form.html', {
        'form': form,
    })  # 포스트 요청이 아닐 경우 빈 폼으로 페이지 렌더링
예제 #2
0
def congressman_detail(request, congressman_pk):
    # 국회의원 세부 페이지

    congressman = get_object_or_404(
        Congressman.objects.prefetch_related('pledge_set'), pk=congressman_pk)
    pledge_list = congressman.pledge_set.all()
    comment_form = CommentForm()

    context = {}
    context['congressman'] = congressman
    context['pledge_list'] = pledge_list
    context['comment_form'] = comment_form

    return render(request, 'cast/congressman_detail.html', context)
예제 #3
0
def comment_list(request, pk):
    # 각 컨텐츠별 댓글 리스트

    req_type = request.GET.get('type', '')  # 요청한 컨텐츠 타입이 무엇인지

    contents = get_object_or_404(Contents, pk=pk)
    best_comment_list = Comment.objects.filter(
        contents=contents).order_by('-like_number')[:5]  # 좋아요 순 정렬
    comment_list = Comment.objects.filter(contents=contents).exclude(
        id__in=best_comment_list)  # 베댓 제외한 나머지 댓글
    comment_form = CommentForm()

    context = {}
    context['comment_form'] = comment_form
    context['comment_list'] = comment_list
    context['best_comment_list'] = best_comment_list
    context['pk'] = pk

    return render(request, 'cast/comment_list.html', context)
예제 #4
0
def contents_detail(request, contents_pk):
    # 컨텐츠 세부 페이지
    contents = get_object_or_404(Contents.objects.prefetch_related(
        'comment_set__recomment_set__user', 'comment_set__user__profile'),
                                 pk=contents_pk)

    if request.user.is_anonymous:
        # 로그인을 안했을 경우
        user_is_favorite = False
    else:
        if request.user.favorite_set.filter(contents=contents).exists():
            user_is_favorite = True
        else:
            user_is_favorite = False

    comment_form = CommentForm()

    context = {}
    context['contents'] = contents
    context['comment_form'] = comment_form
    context['user_is_favorite'] = user_is_favorite

    return render(request, 'cast/contents_detail.html', context)
예제 #5
0
def pledge_detail(request, pledge_pk):

    # 공약 세부 페이지
    pledge = get_object_or_404(Pledge.objects.prefetch_related(
        'comment_set__recomment_set__user', 'comment_set__user__profile'),
                               pk=pledge_pk)

    if request.user.is_anonymous:
        # 로그인을 안했을 경우
        user_is_favorite = False
    else:
        if request.user.favorite_set.filter(pledge=pledge).exists():
            user_is_favorite = True
        else:
            user_is_favorite = False

    comment_form = CommentForm()

    context = {}
    context['pledge'] = pledge
    context['comment_form'] = comment_form
    context['user_is_favorite'] = user_is_favorite

    return render(request, 'cast/pledge_detail.html', context)
예제 #6
0
def comment_new(request, pk):
    # 각 컨텐츠내 댓글 쓰기

    req_type = request.GET.get('type', '')  # 요청한 컨텐츠 타입이 무엇인지
    redirect_path = request.META.get(
        'HTTP_REFERER')  # 해당 컨텐츠로 리디렉션 하기위한 url_path

    if request.method == 'POST':
        # 포스트 요청일 경우
        form = CommentForm(request.POST,
                           request.FILES)  # 받아온 데이터를 통해 폼 인스턴스 생성

        if form.is_valid():
            # 폼에 데이터가 유효할 경우
            comment = form.save(commit=False)  # 디비에 저장하지 않고 인스턴스 생성
            comment.user = request.user  # 댓글을 다는 유저 정보

            # 각 컨텐츠 별로 분기하여 인스턴스 생성
            if req_type == 'contents':
                # 컨텐츠일 경우
                contents = get_object_or_404(Contents, pk=pk)
                comment.contents = contents
            elif req_type == 'pledge':
                # 공약일 경우
                pledge = get_object_or_404(Pledge, pk=pk)
                comment.pledge = pledge
            else:
                # 국회의원일 경우
                congressman = get_object_or_404(Congressman, pk=pk)
                comment.congressman = congressman

            comment.save()  # 유저와 해당 컨텐츠 연결 후 디비에 저장
            return redirect(redirect_path)
    else:
        # 포스트 요청이 아닐 경우 빈 폼 생성
        form = CommentForm()

    return render(request, 'cast/comment_form.html', {
        'form': form,
    })  # 포스트 요청이 아닐 경우 빈 폼으로 페이지 렌더링
예제 #7
0
def comment_edit(request, comment_pk):
    # 해당 댓글 수정
    comment = get_object_or_404(Comment, pk=comment_pk)  # 해당 댓글 인스턴스
    redirect_path = request.META.get(
        'HTTP_REFERER')  # 해당 컨텐츠로 리디렉션 하기위한 url_path

    if comment.user != request.user:
        messages.warning(request, '댓글 작성자만 수정할 수 있습니다.')
        return redirect(redirect_path)

    form = CommentForm(request.POST, request.FILES, instance=comment)
    if form.is_valid():
        comment = form.save(commit=False)
        comment.save()

        messages.success(request, '기존 댓글을 수정했습니다.')
        return redirect(redirect_path)
    else:
        form = CommentForm(instance=comment)
    return render(request, 'cast/comment_form.html', {
        'form': form,
    })