def cancel_game(self, request):
     """
     Cancels a Blackjack Marathon game based on key.
     """
     profile_key = Profile.get_profile_from_user().key
     Game.cancel_game(profile_key, request.urlsafe_game_key)
     return StringMessage(message='Game cancelled successfully.')
 def new_game(self, request):
     """
     Creates a new Blackjack Marathon game for a user.
     """
     profile = Profile.get_profile_from_user()
     game = Game.new_game(p_key=profile.key)
     game.put()
     return game.to_form('Good luck playing Blackjack Marathon!')
    def get_user_games(self, request):
        """Return the user's active games."""
        profile = Profile.get_profile_from_user()

        # Create ancestor query for all key matches for this user.
        # Filter on games where points_remaining > 0
        games = Game.query(ancestor=profile.key). \
            filter(Game.points_remaining > 0)
        # return set of GameForm objects per game
        return GameForms(
            items=[game.to_form() for game in games]
        )
 def make_move(self, request):
     """
     Makes a move on a given Blackjack Marathon game. The move is the user's
     chosen strategy based on the current player and Dealer card hands.
     """
     # Verify the strategy passed in
     if request.strategy not in STRATEGIES:
         raise endpoints.BadRequestException('Invalid strategy {} '
                                             'passed in'.format(
                                                 request.strategy))
     return Game.apply_strategy(Profile.get_profile_from_user().key,
                                request.urlsafe_game_key,
                                request.strategy)
 def get_profile(self, request):
     """Return user profile."""
     profile = Profile.get_profile_from_user()
     return profile.to_form()