Пример #1
0
def participant_team_list(request):

    if request.method == "GET":
        participant_teams_id = Participant.objects.filter(
            user_id=request.user).values_list("team_id", flat=True)
        participant_teams = ParticipantTeam.objects.filter(
            id__in=participant_teams_id).order_by("-id")
        paginator, result_page = team_paginated_queryset(
            participant_teams, request)
        serializer = ParticipantTeamDetailSerializer(result_page, many=True)
        response_data = serializer.data
        return paginator.get_paginated_response(response_data)

    elif request.method == "POST":
        serializer = ParticipantTeamSerializer(data=request.data,
                                               context={"request": request})
        if serializer.is_valid():
            serializer.save()
            response_data = serializer.data
            participant_team = serializer.instance
            participant = Participant(
                user=request.user,
                status=Participant.SELF,
                team=participant_team,
            )
            participant.save()
            return Response(response_data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #2
0
def get_participant_team_challenge_list(request, participant_team_pk):
    """
    Returns a challenge list in which the participant team has participated.
    """
    try:
        participant_team = ParticipantTeam.objects.get(pk=participant_team_pk)
    except ParticipantTeam.DoesNotExist:
        response_data = {"error": "Participant Team does not exist"}
        return Response(response_data, status=status.HTTP_404_NOT_FOUND)

    if request.method == "GET":
        challenge = Challenge.objects.filter(
            participant_teams=participant_team).order_by("-id")
        paginator, result_page = team_paginated_queryset(challenge, request)
        serializer = ChallengeSerializer(result_page,
                                         many=True,
                                         context={"request": request})
        response_data = serializer.data
        return paginator.get_paginated_response(response_data)
Пример #3
0
def challenge_host_team_list(request):

    if request.method == "GET":
        challenge_host_team_ids = ChallengeHost.objects.filter(
            user=request.user).values_list("team_name", flat=True)
        challenge_host_teams = ChallengeHostTeam.objects.filter(
            id__in=challenge_host_team_ids).order_by("-id")
        paginator, result_page = team_paginated_queryset(
            challenge_host_teams, request)
        serializer = HostTeamDetailSerializer(result_page, many=True)
        response_data = serializer.data
        return paginator.get_paginated_response(response_data)

    elif request.method == "POST":
        serializer = ChallengeHostTeamSerializer(data=request.data,
                                                 context={"request": request})
        if serializer.is_valid():
            serializer.save()
            response_data = serializer.data
            return Response(response_data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #4
0
def challenge_host_list(request, challenge_host_team_pk):

    try:
        challenge_host_team = ChallengeHostTeam.objects.get(
            pk=challenge_host_team_pk)
    except ChallengeHostTeam.DoesNotExist:
        response_data = {"error": "ChallengeHostTeam does not exist"}
        return Response(response_data, status=status.HTTP_406_NOT_ACCEPTABLE)

    if request.method == "GET":
        challenge_host_status = request.query_params.get("status", None)
        filter_condition = {
            "team_name": challenge_host_team,
            "user": request.user,
        }
        if challenge_host_status:
            challenge_host_status = challenge_host_status.split(",")
            filter_condition.update({"status__in": challenge_host_status})

        challenge_host = ChallengeHost.objects.filter(
            **filter_condition).order_by("-id")
        paginator, result_page = team_paginated_queryset(
            challenge_host, request)
        serializer = ChallengeHostSerializer(result_page, many=True)
        response_data = serializer.data
        return paginator.get_paginated_response(response_data)

    elif request.method == "POST":
        serializer = ChallengeHostSerializer(
            data=request.data,
            context={
                "challenge_host_team": challenge_host_team,
                "request": request,
            },
        )
        if serializer.is_valid():
            serializer.save()
            response_data = serializer.data
            return Response(response_data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)