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