Пример #1
0
def login_user(request):
    err = {}
    if "username" not in request.data:
        err["username"] = ["This field is required."]
    if "password" not in request.data:
        err["password"] = ["This field is required."]
    if err:
        return Response(data=err, status=status.HTTP_400_BAD_REQUEST)
    try:
        user = DvUser.objects.get(username=request.data["username"])
    except DvUser.DoesNotExist:
        return Response(
            data={"username": ["No such username exists."]},
            status=status.HTTP_400_BAD_REQUEST,
        )

    if bcrypt.hashpw(request.data["password"].encode("utf-8"), user.password.encode("utf-8")) == user.password.encode("utf-8"):
        ser = DvUserSerializer(user)
        token = "".join(
            [random.choice(string.ascii_letters) for _ in range(32)]
        )
        new_token = Session(user=user, key=token)
        new_token.save()
        return Response({"token": token})
    else:
        return Response(
            data={"password": ["Incorrect password."]},
            status=status.HTTP_400_BAD_REQUEST,
        )
Пример #2
0
def new_workout(request):
    print(request.user)
    workout_name = request.POST.get('name')
    if workout_name is None:
        workout_name = 'New Workout'
    new_session = Session(name=workout_name, user=request.user)
    new_session.save()
    return HttpResponse(json.dumps(SessionSerializer(new_session).data))
Пример #3
0
 def create(self, validated_data: Dict) -> Session:
     page_size = validated_data[
         'page_size'] if 'page_size' in validated_data else None
     location = validated_data[
         'location'] if 'location' in validated_data else None
     session = Session(user_id=validated_data['user_id'],
                       page_size=page_size,
                       location=location)
     session.save()
     return session
Пример #4
0
def login_user(request):
    print(request.data["password"])
    err = {}
    if "username" not in request.data:
        err["username"] = ["This field is required."]
    if "password" not in request.data:
        err["password"] = ["This field is required."]
    if "role" not in request.data:
        err["role"] = ["This field is required."]
    if err:
        return Response(data=err, status=status.HTTP_400_BAD_REQUEST)
    try:
        user = DvUser.objects.get(username=request.data["username"])
    except DvUser.DoesNotExist:
        return Response(
            data={"username": ["No such username exists."]},
            status=status.HTTP_400_BAD_REQUEST,
        )

    if bcrypt.hashpw(request.data["password"].encode("utf-8"), user.password.encode("utf-8")) == user.password.encode("utf-8"):
        ser = DvUserSerializer(user)
        token = "".join(
            [random.choice(string.ascii_letters) for _ in range(32)]
        )
        new_token = Session(user=user, key=token)
        new_token.save()

        try:
            user = DvUser.objects.get(username=request.data["username"])
            check_role = UserRoles.objects.get(user_id=user)
            assignrole = Role.objects.get(name="admin").role_id
            if(check_role.role_id == assignrole):
                return Response({"token": token}, status=status.HTTP_201_CREATED)
            else:
                if(request.data["role"] == "User"):
                    return Response({"token": token}, status=status.HTTP_201_CREATED)
                else:
                    return Response(
                        data={"username": ["You've no admin access!"]},
                        status=status.HTTP_400_BAD_REQUEST,)
        except UserRoles.DoesNotExist:
            if(request.data["role"] == "User"):
                    return Response({"token": token}, status=status.HTTP_201_CREATED)
            else:
                return Response(
                    data={"username": ["You've no admin access!"]},
                    status=status.HTTP_400_BAD_REQUEST,)
    else:
        return Response(
            data={"password": ["Incorrect password."]},
            status=status.HTTP_400_BAD_REQUEST,
        )
Пример #5
0
    def start_session(self, request):
        session = Session()
        session.start = datetime.datetime.now()
        players = [player for player in request.data['players']]
        players.append(Player.objects.get(user=request.user))
        session.save()

        for player in players:
            link = PlayerSessionLink()
            link.player = player
            link.session = self
            link.save()
        return Response({"message": "Session started"},
                        status=status.HTTP_201_CREATED)
Пример #6
0
def seconds(request):
    global max_rounds
    if 'round' not in request.session or request.session['round'] == 0:
        request.session['round'] = 0
        request.session['player'] = 0
        request.session['scoreteam1'] = 0
        request.session['scoreteam2'] = 0
        request.session['team1'] = []
        request.session['team2'] = []
        api_session = Session()
        api_session.save()
        request.session['token'] = api_session.id
        request.session['secret'] = api_session.secret

        # get teams
        team1_players = []
        for i in range(1, 5):
            if request.POST[f't1{i}'] == '':
                message = 'Please enter four players for each team'
                return redirect('index')
            team1_players.append(request.POST[f't1{i}'])
        request.session['team1'] = team1_players
        team2_players = []
        for j in range(1, 5):
            if request.POST[f't2{j}'] == '':
                message = 'Please enter four players for each team'
                return redirect('index')
            team2_players.append(request.POST[f't2{j}'])
        request.session['team2'] = team2_players

    hits = request.POST.getlist("words")

    round = request.session['round']
    # append points
    if round % 2 == 0:
        points = len(hits)
        request.session['scoreteam1'] += points
        if round != max_rounds:
            request.session['turn'] = request.session['team1'][int(round / 2)]
    else:
        points = len(hits)
        request.session['scoreteam2'] += points
        if round != max_rounds:
            request.session['turn'] = request.session['team2'][int(round / 2)]

    # determine winner
    if round == max_rounds:
        request.session['round'] = 0
        team1_points = request.session['scoreteam1']
        team2_points = request.session['scoreteam2']
        request.session['scoreteam1'] = 0
        request.session['scoreteam2'] = 0
        request.session['turn'] = 0
        request.session['team1'] = []
        request.session['team2'] = []
        if team1_points == team2_points:
            tie = True
            return render(request, "game/end.html", {'tie': tie})
        elif team1_points > team2_points:
            winner_name = 'Team 1'
            winner_points = team1_points
            loser_name = 'Team 2'
            loser_points = team2_points
            return render(
                request, "game/end.html", {
                    'winner_name': winner_name,
                    'winner_points': winner_points,
                    'loser_name': loser_name,
                    'loser_points': loser_points
                })
        elif team1_points < team2_points:
            winner_name = 'Team 2'
            winner_points = team2_points
            loser_name = 'Team 1'
            loser_points = team1_points
            return render(
                request, "game/end.html", {
                    'winner_name': winner_name,
                    'winner_points': winner_points,
                    'loser_name': loser_name,
                    'loser_points': loser_points
                })

    # get cards to play with
    token = request.session['token']
    secret = request.session['secret']
    player = request.session['turn']

    # link = request.build_absolute_uri(reverse("api:get-card"))
    # card = requests.get(f"{link}?token={token}&secret={secret}").json()['words']
    card = Session.objects.get(id__exact=token,
                               secret__exact=secret).get_card().json()['words']
    request.session['round'] += 1
    return render(request, "game/seconds.html", {
        'card': card,
        'player': player
    })