示例#1
0
def write_before(request, match_id):
    match = get_object_or_404(Match, id=match_id)
    gk_players = PlayerSeason.objects.filter(position='GK')
    df_players = PlayerSeason.objects.filter(position='DF')
    mf_players = PlayerSeason.objects.filter(position='MF')
    fw_players = PlayerSeason.objects.filter(position='FW')

    if request.method == 'POST':
        for a in range(12):
            if a == 0:
                if not request.POST.get('strategy'):
                    messages.error(request, '전술을 선택하셔야 합니다.')
                    return HttpResponseRedirect(
                        reverse('board_free:write_before', args=[match.id]))
            elif a > 0:
                if not request.POST.get('player' + str(a)):
                    messages.error(request, '선수 11명을 전부 입력해주셔야 합니다.')
                    return HttpResponseRedirect(
                        reverse('board_free:write_before', args=[match.id]))
        post = FreeBoard.objects.create(sort='before',
                                        title=request.POST.get('title', ),
                                        body=value(request.POST.get('body', )),
                                        user=request.user,
                                        before_game_review=match)
        before_review_list = []
        for a in range(12):
            if a == 0:
                before_review_list.append(
                    BeforeReview(freeboard=post,
                                 match=match,
                                 user=request.user,
                                 sort=str(a),
                                 strategy=request.POST.get('strategy')))
            elif a > 0:
                before_review_list.append(
                    BeforeReview(freeboard=post,
                                 match=match,
                                 user=request.user,
                                 sort=str(a),
                                 player=PlayerSeason.objects.get(
                                     id=request.POST.get('player' + str(a)))))
        BeforeReview.objects.bulk_create(before_review_list)
        # 태그 함수 (object의 tag들, object, 요청한 유저, raw_data(없으면 빈 list)- queryset 도 순수 list 로 변환해주어야 함)
        tags = request.POST.get('tags', None)
        tag(tags, post, request.user, 'free', [])
        # 포인트 함수
        point(request.user, 'review')
        return HttpResponseRedirect(
            reverse('board_free:detail', args=[post.id, post.slug]))
    forms = FreeBoardForm()
    return render(
        request, 'board/choice_write/write/write_before.jinja', {
            'match': match,
            'forms': forms,
            'gk_players': gk_players,
            'df_players': df_players,
            'mf_players': mf_players,
            'fw_players': fw_players
        })
示例#2
0
def write_free(request):
    if request.method == 'POST':
        post = FreeBoard.objects.create(sort='free',
                                        title=request.POST.get('title', ),
                                        body=value(request.POST.get('body', )),
                                        user=request.user)
        # 태그 함수 (object의 tag들, object, 요청한 유저, raw_data(없으면 빈 list)- queryset 도 순수 list 로 변환해주어야 함)
        tags = request.POST.get('tags', None)
        tag(tags, post, request.user, 'free', [])
        # 포인트 함수
        point(request.user, 'free')
        return HttpResponseRedirect(
            reverse('board_free:detail', args=[post.id, post.slug]))
    else:
        forms = FreeBoardForm()
    return render(request, 'board/choice_write/write/write_free.jinja',
                  {'forms': forms})
示例#3
0
def input_game_result(request, match_id):
    match_game = Match.objects.get(id=match_id)
    players = PlayerSeason.ing.filter(team__name='Arsenal')
    field_players = {
        'gk_players': players.filter(position='GK'),
        'df_players': players.filter(position='DF'),
        'mf_players': players.filter(position='MF'),
        'fw_players': players.filter(position='FW')
    }

    # match_id 가 있다는 것은 관리자가 경기 결과를 입력하였다는 것이다.
    if request.method == 'POST':
        if match_game.result:
            messages.error(request, '현재 결과가 등록 되어있는 경기 입니다.')
            return HttpResponseRedirect(
                reverse('administrator:input_game_result'))
        else:
            aa = 0
            while aa < 11:
                aa += 1
                player = request.POST.get('player' + str(aa), None)
                if not player:
                    messages.error(request, '선발 라인업을 다시 구성해주시기 바랍니다.')
                    return HttpResponseRedirect(
                        reverse('administrator:input_game_result'))

            forms = MatchForm(instance=match_game, data=request.POST)
            if forms.is_valid():
                game_result = forms.save(commit=False)
                if game_result.result == 'win':
                    if game_result.home_score > game_result.away_score:
                        game_result.save()
                        try:
                            users = EventVote.objects.filter(
                                match=match_id,
                                home_score=game_result.home_score,
                                away_score=game_result.away_score)
                        except EventVote.DoesNotExist:
                            pass
                        else:
                            for user in users:
                                # 포인트 함수
                                point(user, 'correct_vote')
                                user.is_result = True
                                user.save(update_fields='is_result')
                    else:
                        messages.error(request,
                                       '스코어가 잘못 입력되었습니다. 다시 한번 확인부탁드립니다.')
                        return HttpResponseRedirect(
                            reverse('administrator:input_game_result'))
                elif game_result.result == 'draw':
                    if game_result.home_score == game_result.away_score:
                        game_result.save()
                    else:
                        messages.error(request,
                                       '스코어가 잘못 입력되었습니다. 다시 한번 확인부탁드립니다.')
                        return HttpResponseRedirect(
                            reverse('administrator:input_game_result'))
                elif game_result.result == 'lose':
                    if game_result.home_score < game_result.away_score:
                        game_result.save()
                    else:
                        messages.error(request,
                                       '스코어가 잘못 입력되었습니다. 다시 한번 확인부탁드립니다.')
                        return HttpResponseRedirect(
                            reverse('administrator:input_game_result'))

                    return HttpResponseRedirect(
                        reverse('administrator:input_game_result'))
    forms = MatchForm()
    return render(
        request, 'admin/sub_main/input_game_result.jinja', {
            'match': match_game,
            'forms': forms,
            'players': players,
            'gk_players': field_players['gk_players'],
            'df_players': field_players['df_players'],
            'mf_players': field_players['mf_players'],
            'fw_players': field_players['fw_players']
        })
示例#4
0
def write_after(request, match_id):
    match = get_object_or_404(Match, id=match_id)
    match_player = [
        match.player1, match.player2, match.player3, match.player4,
        match.player5, match.player6, match.player7, match.player8,
        match.player9, match.player10, match.player11, match.player12,
        match.player13, match.player14
    ]
    if request.method == 'POST':
        for a in range(1, 15):
            if match_player[a - 1]:
                string = request.POST.get('player' + str(a) + '_review')
                if no_space_text(string) <= 10:
                    messages.error(request,
                                   '모든 출천 선수에 대해 10글자 이상 리뷰를 입력해주셔야 합니다.')
                    return HttpResponseRedirect(
                        reverse('board_free:write_after', args=[match.id]))
        post = FreeBoard.objects.create(sort='after',
                                        title=request.POST.get('title', ),
                                        body=value(request.POST.get('body', )),
                                        user=request.user,
                                        after_game_review=match)
        after_review_list = []
        for i in range(15):
            if i == 0:
                after_review_list.append(
                    AfterReview(freeboard=post,
                                match=match,
                                sort=str(i),
                                point=request.POST.get('team_point'),
                                user=request.user,
                                is_simple=False))
            if i > 0:
                if match_player[i - 1]:
                    after_review_list.append(
                        AfterReview(freeboard=post,
                                    match=match,
                                    sort=str(i),
                                    player=match_player[i - 1],
                                    user=request.user,
                                    point=request.POST.get('player' + str(i) +
                                                           '_point'),
                                    review=request.POST.get('player' + str(i) +
                                                            '_review'),
                                    is_simple=False))
                else:
                    after_review_list.append(
                        AfterReview(freeboard=post,
                                    match=match,
                                    sort=str(i),
                                    user=request.user,
                                    is_simple=False))
        AfterReview.objects.bulk_create(after_review_list)
        # 태그 함수 (object의 tag들, object, 요청한 유저, raw_data(없으면 빈 list)- queryset 도 순수 list 로 변환해주어야 함)
        tags = request.POST.get('tags', None)
        tag(tags, post, request.user, 'free', [])
        # 포인트 함수
        point(request.user, 'review', 'after')

        return HttpResponseRedirect(
            reverse('board_free:detail', args=[post.id, post.slug]))

    forms = FreeBoardForm()
    return render(request, 'board/choice_write/write/write_after.jinja', {
        'match': match,
        'match_player': match_player,
        'forms': forms
    })
示例#5
0
def detail(request, id, slug, comment_id=None):
    post = get_object_or_404(FreeBoard, id=id, slug=slug)
    if post.sort == 'before':
        post_before = BeforeReview.objects.filter(
            match=post.before_game_review).order_by('id')
    elif post.sort == 'after':
        post_after = AfterReview.objects.filter(
            match=post.after_game_review).order_by('id')
    # 댓글과 대댓글을 comments_list list 에 담음
    comments_list = []
    ct = ContentType.objects.get_for_model(post)
    comments = Comment.objects.filter(content_type=ct,
                                      object_id=post.id,
                                      comment__isnull=True,
                                      is_active=True).order_by('created', )
    for comment in comments:
        comments_list.append(comment)
        if comment.comment_set:
            for sub_comment in comment.comment_set.all().order_by('created', ):
                comments_list.append(sub_comment)

    # 댓글과 대댓글 입력
    if request.method == 'POST':
        # comment_id 가 있다는 것은 대댓글
        if comment_id:
            comment_to = Comment.objects.get(id=comment_id)
            if comment_to.comment:
                post.comments.create(user=request.user,
                                     sort='free-co',
                                     content=request.POST.get('content'),
                                     comment=comment_to.comment,
                                     commenting_user=str(comment_to.user))
            else:
                post.comments.create(user=request.user,
                                     sort='free-co',
                                     content=request.POST.get('content'),
                                     comment=comment_to,
                                     commenting_user=str(comment_to.user))
            # 대댓글을 남긴 대상이 자신이 아닐 경우 and 댓글 user 과 post user 이 다르다면 댓글로 Action 생성
            if comment_to.user != request.user and comment_to.user != post.user:
                Action.objects.create(content_object=post,
                                      sort='comment',
                                      user=request.user,
                                      to_user=comment_to.user,
                                      comment=comment_to)
        else:
            post.comments.create(user=request.user,
                                 sort='free-co',
                                 content=request.POST.get('content'))
        #Action.objects.create(content_object=comment, sort='free-co', user=request.user) # action 은 아직 미구현

        # post 의 작가가 자신이 아니라면 Action 생성
        if post.user != request.user:
            Action.objects.create(content_object=post,
                                  sort='post',
                                  user=request.user,
                                  to_user=post.user)

        # 포인트 함수
        point(request.user, 'comment')
        return HttpResponseRedirect(
            reverse('board_free:detail', args=[post.id, post.slug]))

    # paging 함수 (게시물 분리, 상품, request.GET, 'page', 처음 보여질 페이지, 한페이지에 보여질 수, 보여질 토탈 페이징)
    paging = paginator(comments_list, request.GET, 'page', 'last', 10, 10)

    is_action = Action.objects.filter(to_user=request.user,
                                      content_type=ct,
                                      object_id=post.id,
                                      is_confirm=False,
                                      created__gte=timezone.now() -
                                      relativedelta(days=7))
    if is_action:
        for action in is_action:
            action.is_confirm = True
            action.save(update_fields=['is_confirm'])

    if post.sort == 'before':
        context_dict = {
            'post_before': post_before,
            'post': post,
            'paging': paging
        }
    elif post.sort == 'after':
        context_dict = {
            'post_after': post_after,
            'post': post,
            'paging': paging
        }
    else:
        context_dict = {'post': post, 'paging': paging}
    return render(request, 'board/detail.jinja', context_dict)