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
Example #4
0
 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())