Ejemplo n.º 1
0
def check_if_game_code_isValid(request):
    if "game_code" not in request.data:
        return JsonResponse(
            {"error": "Enter game_code"}, status=status.HTTP_400_BAD_REQUEST
        )
    if "user_name" not in request.data:
        return JsonResponse(
            {"error": "Enter user_name"}, status=status.HTTP_400_BAD_REQUEST
        )
    try:
        game = Game.objects.get(game_code=request.data['game_code'])
        gameData = GameSerializer(game).data
        if gameData['user_name'] == request.data['user_name']:
            return JsonResponse({"error": "Admin cannot play the game"}, status=status.HTTP_400_BAD_REQUEST)
        if gameData['active']:
            ug = UserGames.objects.filter(game_code=request.data['game_code'], user_name=request.data['user_name'])
            if len(ug) != 0:
                return JsonResponse({
                    "error": "Already played game"
                }, status=status.HTTP_400_BAD_REQUEST)
            qList = Question.objects.filter(category=gameData['category']).values_list('id', flat=True)
            qRand = random.sample(list(qList), min(len(qList), 10))
            questions = Question.objects.filter(id__in=qRand)
            questionData = QuestionSerializer(questions, many=True).data
            questions = []
            for question in questionData:
                options = []
                for option in question['options']:
                    optionQuery = Options.objects.get(option=option)
                    optionData = OptionsSerializer(optionQuery, many=False).data
                    options.append(optionData['option'])
                question['options'] = options
                questions.append(question)
            serializer = UserGamesSerializer(data={
                'game_code': request.data['game_code'],
                'category': gameData['category'],
                'user_name': request.data['user_name']
            })
            if serializer.is_valid():
                serializer.save()
                return JsonResponse({
                    "data": {
                        'questions': questions,
                        'usergameData': serializer.data
                    }
                }, status=status.HTTP_200_OK)
            return JsonResponse({
                "error": serializer.errors
            }, status=status.HTTP_400_BAD_REQUEST)
        else:
            return JsonResponse({"error": "Game code is expired"}, status=status.HTTP_400_BAD_REQUEST)
    except Game.DoesNotExist:
        return JsonResponse({
            "error": "Invalid game code"
        }, status=status.HTTP_400_BAD_REQUEST)
    except Exception as error:
        return
        JsonResponse({"error": error}, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 2
0
def update_score_count_usergame(request):
    if "user_game_id" not in request.data:
        return JsonResponse(
            {"error": "Enter user_game_id"}, status=status.HTTP_400_BAD_REQUEST
        )
    if "no_answers_crct" not in request.data:
        return JsonResponse(
            {"error": "Enter no_answers_crct"}, status=status.HTTP_400_BAD_REQUEST
        )
    try:
        ug = UserGames.objects.get(id=request.data['user_game_id'])
        ug.score = ug.score + int(request.data['no_answers_crct'])
        ug.save()
        # ug = UserGames.objects.filter(id=request.data['user_game_id']).update(score=F['score'] + 1)
        ugSerializer = UserGamesSerializer(ug, many=False).data
        return JsonResponse({
            "data": ugSerializer
        }, status=status.HTTP_200_OK)
    except UserGames.DoesNotExist:
        return JsonResponse({
            "error": "Invalid user_game_id"
        }, status=status.HTTP_400_BAD_REQUEST)
    except Exception as error:
        return JsonResponse({
            "error": error
        }, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 3
0
def get_leader_board_game_code(request):
    if request.query_params.get("game_code") is None:
        return JsonResponse({"error": "Enter game_code"},
                            status=status.HTTP_400_BAD_REQUEST)
    try:
        data = UserGames.objects.filter(
            game_code=request.query_params.get("game_code")).order_by('-score')
        if request.query_params.get("n") is not None:
            n = int(request.query_params.get("n"))
            data = data[:n]
        userGames = UserGamesSerializer(data, many=True).data
        return JsonResponse({"data": userGames}, status=status.HTTP_200_OK)
    except Exception as error:
        return JsonResponse({"error": error},
                            status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 4
0
def check_if_game_code_isValid(request):
    if "isGeneral" not in request.data:
        if "game_code" not in request.data:
            return JsonResponse(
                {"error": "Enter game_code"}, status=status.HTTP_400_BAD_REQUEST
            )
        if "user_name" not in request.data:
            return JsonResponse(
                {"error": "Enter user_name"}, status=status.HTTP_400_BAD_REQUEST
            )
        game = Game.objects.get(game_code=request.data['game_code'])
        gameData = GameSerializer(game).data
        category = gameData['category']
        if gameData['user_name'] == request.data['user_name']:
            return JsonResponse({"error": "Admin cannot play the game"}, status=status.HTTP_400_BAD_REQUEST)
        if not gameData['active']:
            return JsonResponse({"error": "Game code is expired"}, status=status.HTTP_400_BAD_REQUEST)
        else:
            ug = UserGames.objects.filter(game_code=request.data['game_code'], user_name=request.data['user_name'])
            if len(ug) != 0:
                return JsonResponse({
                    "error": "Already played game"
                }, status=status.HTTP_400_BAD_REQUEST)
        data = {
            'game_code': request.data['game_code'],
            'category': gameData['category'],
            'user_name': request.data['user_name']
        }
    else:
        if "email_address" not in request.data:
            return JsonResponse(
                {"error": "Enter email_address"}, status=status.HTTP_400_BAD_REQUEST
            )
        if "category" not in request.data:
            return JsonResponse(
                {"error": "Enter category"}, status=status.HTTP_400_BAD_REQUEST
            )
        categories = Category.objects.filter(name=request.data['category'])
        if len(categories) == 0:
            return JsonResponse(
                {"error": "Enter valid category"}, status=status.HTTP_400_BAD_REQUEST
            )
        if categories[0].isSubCategory:
            parentCategoryId = categories[0].parentCategory
            allCategories = Category.objects.filter(parentCategory=parentCategoryId)
            ug = UserGames.objects.filter(email_address=request.data['email_address'], category__in=allCategories)
            if len(ug) != 0:
                return JsonResponse({
                    "error": "Already played game"
                }, status=status.HTTP_400_BAD_REQUEST)
        else:
            ug = UserGames.objects.filter(email_address=request.data['email_address'],
                                          category=request.data['category'])
            if len(ug) != 0:
                return JsonResponse({
                    "error": "Already played game"
                }, status=status.HTTP_400_BAD_REQUEST)
        category = request.data['category']
        data = {
            'category': category,
            'email_address': request.data['email_address']
        }
    try:
        qList = Question.objects.filter(category=category).values_list('id', flat=True)
        qRand = random.sample(list(qList), min(len(qList), 10))
        questions = Question.objects.filter(id__in=qRand)
        questionData = QuestionSerializer(questions, many=True).data
        questions = []
        for question in questionData:
            options = []
            for option in question['options']:
                optionQuery = Options.objects.get(option=option)
                optionData = OptionsSerializer(optionQuery, many=False).data
                options.append(optionData['option'])
            question['options'] = options
            questions.append(question)
        serializer = UserGamesSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse({
                "data": {
                    'questions': questions,
                    'usergameData': serializer.data
                }
            }, status=status.HTTP_200_OK)
        return JsonResponse({
            "error": serializer.errors
        }, status=status.HTTP_400_BAD_REQUEST)

    except Game.DoesNotExist:
        return JsonResponse({
            "error": "Invalid game code"
        }, status=status.HTTP_400_BAD_REQUEST)
    except Exception as error:
        return
        JsonResponse({"error": error}, status=status.HTTP_400_BAD_REQUEST)