def spawnLocation(location, meters=60):
    """Creates a new location within random meters of provided location.
    Returns: a new location.
    """   
    _trace=TRACE+"spawnLocation() "
    logging.info(_trace)
    lat, lon = utils.parseGeoPt(location)
    logging.info(_trace+'lat = '+lat)
    logging.info(_trace+'lon = '+lon)
    
    # Randomly determine distance of new lat/lon
    ran_lat_meters = utils.roll(meters, 1)
    ran_lon_meters = utils.roll(meters, 1)
    logging.info(_trace+'ran_lat_meters = '+str(ran_lat_meters))
    logging.info(_trace+'ran_lon_meters = '+str(ran_lon_meters))
        
    lat_meters = ran_lat_meters*.00001
    lon_meters = ran_lon_meters*.00001
    logging.info(_trace+'lat_meters = '+str(lat_meters))
    logging.info(_trace+'lon_meters = '+str(lon_meters))

    # Randomly determine direction of new lat/lon
    pos_lat_vector = random.choice([True, False])
    pos_lon_vector = random.choice([True, False])
    logging.info(_trace+'pos_lat_vector = '+str(pos_lat_vector))
    logging.info(_trace+'pos_lon_vector = '+str(pos_lon_vector))
        
    lat = utils.strToIntOrFloat(lat)
    lon = utils.strToIntOrFloat(lon)
    new_lat = lat
    new_lon = lon
    if pos_lat_vector == False:
        new_lat = lat - lat_meters  
        logging.info(_trace+'False new_lat = '+str(new_lat))
    
    else:
        new_lat = lat + lat_meters              
        logging.info(_trace+'True new_lat = '+str(new_lat))
        
    if pos_lon_vector == False:
        new_lon = lon - lon_meters
        logging.info(_trace+'False new_lon = '+str(new_lon))    
    
    else:
        new_lon = lon + lon_meters
        logging.info(_trace+'True new_lon = '+str(new_lon))
                        
    new_location = db.GeoPt(str(new_lat), str(new_lon))
    return new_location
 def post(self):  
     _trace = TRACE+'CharacterHandler.post() '
     logging.info(_trace)
     user = users.get_current_user()
     key = self.request.get('template')
     name = self.request.get('name')
     template = db.get(key)
     if template is not None:
         _player = character.createPlayerFromTemplate(template, name, user)
         lat = self.request.get('lat')
         lon = self.request.get('lon')
         location = db.GeoPt(utils.strToIntOrFloat(lat), 
                             utils.strToIntOrFloat(lon))
         
         _party = party.createJSONParty(_player, location)            
         
     self.redirect('/mobile/character/'+str(_player.key()))