def move(request, column_number): game = Game.current_game(request.user) if game is None: return Response({"detail": "Not currently in a game."}, 400) try: game.move(request.user, column_number) except IllegalMove as exception: return Response({"detail": str(exception)}, 400) return Response(GameSerializer(game).data, 200)
def game_message_list(request): """ List all messages for the current game this user is in. """ game = Game.current_game(request.user) if not game: return Response({"detail": "You are not in a game."}, 400) game_messages = GameMessage.objects.filter(game=game) serializer = GameMessageSerializer(game_messages, many=True) return Response(serializer.data)
def test_leave_stalemate(self): self.client.credentials(HTTP_AUTHORIZATION='Token ' + str(self.alice.auth_token)) self.client.post(reverse("games:start")) self.client.credentials(HTTP_AUTHORIZATION='Token ' + str(self.bob.auth_token)) self.client.post(reverse("games:start")) game = Game.current_game(self.alice) game.stalemate = True game.save() response = self.client.post(reverse("games:forfeit")) self.assertEquals(response.status_code, 200) self.assertEquals(response.data["winner"], None)
def test_create_game_already_in_game(self): first_game = Game._create_game(self.alice) second_game = Game._create_game(self.alice) self.assertEquals(first_game.turn, None) self.assertEquals(first_game.player1, self.alice) self.assertEquals(first_game.player2, None) self.assertEquals(first_game.winner, None) self.assertEquals(Game.current_game(self.alice), second_game) self.assertEquals(second_game.turn, None) self.assertEquals(second_game.player1, self.alice) self.assertEquals(second_game.player2, None) self.assertEquals(second_game.winner, None)
def send_game_message(request): game = Game.current_game(request.user) if not game: return Response({"detail": "You are not in a game."}, 400) data = JSONParser().parse(request) data["sender"] = request.user.pk data["pub_date"] = timezone.now() data["game"] = game.pk serializer = GameMessageSerializer(data=data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=201) return Response(serializer.errors, status=400)
def forfeit(request): game = Game.current_game(request.user) if game is None: return Response({"detail": "Not currently in a game."}, 400) game.forfeit(request.user) return Response(GameSerializer(game).data, 200)