def game_new_game(self, game): """ Add or update a game """ creator_key = player_utils.get_player_from_email(endpoints.get_current_user().email()).key if game.invitee_email: invitee_key = player_utils.get_player_from_email(game.invitee_email).key else: invitee_key = None game_with_parent = Game(parent = creator_key, creator_key = creator_key, invitee_key = invitee_key, is_solo = not invitee_key ) game_with_parent.put() return game_with_parent
def game_list(self, query): """ List all the games for this user """ player = player_utils.get_player_from_email(endpoints.get_current_user().email()) # Required to order by key first when filter uses IN, OR, or !=, due to query cursor created for # page tokens that endpoints proto datastore implements after this method completes. query = query.order(Game.key).filter(ndb.OR(Game.creator_key == player.key, Game.invitee_key == player.key)) return query
def player_insert(self, player): """ Add or update a player for the given user """ # get_player_from_email will create a new player if none exists player_with_parent = player_utils.get_player_from_email(endpoints.get_current_user().email()) player_with_parent.display_name = player.display_name player_with_parent.put() return player_with_parent
def get(self): user = users.get_current_user() if not user: template = main.jinja_env.get_template("templates/home.html") self.response.out.write(template.render({'login_url': users.create_login_url(self.request.referer)})) else: email = self.request.get('new_email') if not email: email = "null" player = player_utils.get_player_from_email(email) values = {'email':email, 'display_player':player_utils.get_player_from_email(user.email()), 'player':player, 'logout_url':users.create_logout_url("/")} self.update_values(player, values) template = main.jinja_env.get_template(self.get_template()) self.response.out.write(template.render(values))
def handle_post(self, player): invited_player_email = self.request.get('invited_player_email').lower() if len(invited_player_email) > 0: invited_player_key = player_utils.get_player_from_email(invited_player_email).key else: invited_player_key = None new_game = # TODO: Add a new game new_game.put(); self.redirect("/play?game_key=" + new_game.key.urlsafe())
def handle_post(self, player): invited_player_email = self.request.get("invited_player_email").lower() if len(invited_player_email) > 0: invited_player_key = player_utils.get_player_from_email(invited_player_email).key else: invited_player_key = None new_game = models.Game( parent=player.key, creator_key=player.key, invitee_key=invited_player_key, is_solo=not invited_player_key ) new_game.put() self.redirect("/play?game_key=" + new_game.key.urlsafe())
def get(self): user = users.get_current_user() if not user: template = main.jinja_env.get_template("templates/home.html") self.response.out.write(template.render({'login_url': users.create_login_url(self.request.referer)})) else: player = player_utils.get_player_from_email(user.email()) show_set_name_modal = not player.display_name or not len(player.display_name) > 0 values = {'player': player, 'show_set_name_modal': show_set_name_modal, 'logout_url': users.create_logout_url("/")} self.update_values(player, values) template = main.jinja_env.get_template(self.get_template()) self.response.out.write(template.render(values))
def game_addscore(self, game): """ Add a score to a game """ if game.entityKey is None or game.new_score is None: raise endpoints.BadRequestException("Missing required properties") # Figure out whose score the new one is. player = player_utils.get_player_from_email(endpoints.get_current_user().email()) if player.key == game.creator_key: game.creator_scores.append(game.new_score) else: # If this is the first invitee round, update past_opponent on each player. if len(game.invitee_scores) == 0: player_utils.update_past_opponents(game) game.invitee_scores.append(game.new_score) game.new_score = None game.is_complete = game_utils.is_game_complete(game) game.put() return game
def post(self): user = users.get_current_user() if not user: raise Exception("Missing user!") player = player_utils.get_player_from_email(user.email()) self.handle_post(player)
def player_get(self, player): """ Returns the Player for the given user """ return player_utils.get_player_from_email(endpoints.get_current_user().email())