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