Beispiel #1
0
def leaderboard(request):
    try:
        try:
            contest = Contest.objects.get(
                contest_code=request.GET['contest_id'])
            time = Contest_Score.objects.filter(contest=contest).order_by(
                '-score', 'timestamp')[0].timestamp
        except ObjectDoesNotExist:
            return Respone('contest does not exist', status=HTTP_404_NOT_FOUND)
        coder_array = []
        rank_cnt = 1
        for (rank, participant) in enumerate(Contest_Score.objects.filter(
                contest=contest).order_by('-score', 'timestamp'),
                                             start=1):
            query_set = Answer.objects.filter(contest=contest,
                                              user=participant.coder)
            serializer = AnswerSerializer(query_set, many=True)
            if time != participant.timestamp:
                rank_cnt += 1
            time = participant.timestamp
            coder_array.append({
                "rank": rank_cnt,
                "name": participant.coder.first_name,
                "score": participant.score,
                "image": participant.coder.image_link,
                "answer": serializer.data
            })
        return Response(coder_array, status=HTTP_200_OK)
    except:
        return Response('No object found', status=HTTP_404_NOT_FOUND)
Beispiel #2
0
def GetAnswer(request):
    contest = Contest.objects.get(contest_code=request.GET['contest_id'])
    coder = Coder.objects.get(user=request.user)
    query_set = Answer.objects.filter(contest=contest, user=coder)
    serializer = AnswerSerializer(query_set, many=True)
    if contest.isStarted() or contest.isOver():
        return Response(serializer.data)
    return Response({'status': 301, 'message': 'Contest has not started yet'})
Beispiel #3
0
def GetAnswer(request):
    try:
        contest = Contest.objects.get(contest_code=request.GET['contest_id'])
        coder = Coder.objects.get(user=request.user)
        query_set = Answer.objects.filter(contest=contest, user=coder)
        serializer = AnswerSerializer(query_set, many=True)
        if contest.isStarted() or contest.isOver():
            return Response(serializer.data)
        return Response('Contest has not started yet',
                        status=HTTP_403_FORBIDDEN)
    except ObjectDoesNotExist:
        return Respone('Object does not exist', status=HTTP_404_NOT_FOUND)
Beispiel #4
0
def leaderboard(request):
    coder_array = []
    contest = Contest.objects.get(contest_code=request.GET['contest_id'])
    for (rank,
         participant) in enumerate(Contest_Score.objects.filter(contest=contest).order_by('-score', 'timestamp', 'wa'),
                                   start=1):
        query_set = Answer.objects.filter(contest=contest, user=participant.coder)
        serializer = AnswerSerializer(query_set, many=True)
        coder_array.append({
            "rank": rank,
            "name": participant.coder.first_name,
            "score": participant.score,
            "image": participant.coder.image_link,
            "answer": serializer.data
        })
    return Response(coder_array)