def post( self, username_code ): user = self.get_user( ) # Make sure this is the correct user if user is None: self.error( 404 ) self.render( "404.html", user=user ) return elif user == self.OVER_QUOTA_ERROR: self.error( 403 ) self.render( "403.html" ) return elif util.get_code( user.username ) != username_code: self.error( 404 ) self.render( "404.html", user=user ) return # Get the visible columns visible_columns = util.get_default_visible_columns( ) for key in visible_columns: checked = self.request.get( key + '_visible', default_value="no" ) if checked == "yes": visible_columns[ key ] = True else: visible_columns[ key ] = False # Store user.visible_columns = json.dumps( visible_columns ) user.put( ) # Update memcache self.update_cache_runner( username_code, user ) # That's all self.redirect( "/runner/" + username_code )
def get( self, username_code ): user = self.get_user( ) # Make sure this is the correct user if user is None: self.error( 404 ) self.render( "404.html", user=user ) return elif user == self.OVER_QUOTA_ERROR: self.error( 403 ) self.render( "403.html" ) return elif util.get_code( user.username ) != username_code: self.error( 404 ) self.render( "404.html", user=user ) return # Get the stored visible columns, or get the default ones if user.visible_columns: visible_columns = json.loads( user.visible_columns ) else: visible_columns = util.get_default_visible_columns( ) self.render( "edit_table.html", user=user, username_code=username_code, visible_columns=visible_columns )
def post(self, username_code): user = self.get_user() # Make sure this is the correct user if user is None or util.get_code(user.username) != username_code: self.error(404) self.render("404.html", user=user) return # Get the visible columns visible_columns = util.get_default_visible_columns() for key in visible_columns: checked = self.request.get(key + '_visible', default_value="no") if checked == "yes": visible_columns[key] = True else: visible_columns[key] = False # Store user.visible_columns = json.dumps(visible_columns) user.put() # Update memcache self.update_cache_runner(username_code, user) # That's all self.redirect("/runner/" + username_code)
def get(self, username_code): user = self.get_user() # Make sure this is the correct user if user is None: self.error(404) self.render("404.html", user=user) return elif user == self.OVER_QUOTA_ERROR: self.error(403) self.render("403.html") return elif util.get_code(user.username) != username_code: self.error(404) self.render("404.html", user=user) return # Get the stored visible columns, or get the default ones if user.visible_columns: visible_columns = json.loads(user.visible_columns) else: visible_columns = util.get_default_visible_columns() self.render("edit_table.html", user=user, username_code=username_code, visible_columns=visible_columns)
def get(self, username_code): user = self.get_user() q = self.request.get('q', default_value=None) # Make sure the runner exists runner = self.get_runner(username_code) if runner is None: self.error(404) self.render("404.html", user=user) return username = runner.username gravatar = util.get_gravatar_url(runner.gravatar, size=120) if q == 'view-all': # List all runs for this runner runlist = self.get_runlist_for_runner(username) if self.format == 'html': self.render("listruns.html", user=user, runner=runner, username_code=username_code, runlist=runlist, gravatar=gravatar) elif self.format == 'json': self.render_json(runlist) else: # By default, list pbs for this runner pblist = self.get_pblist(username) # We are also going to list the best known times for each game. # Let's gather those times here and add them to the pblist info. for pb in pblist: game_model = self.get_game_model(pb['game_code']) if game_model is None: logging.error("No game_model for game " + pb['game']) continue gameinfolist = json.loads(game_model.info) for runinfo in pb['infolist']: # Find the matching gameinfo for gameinfo in gameinfolist: if gameinfo['category'] == runinfo['category']: runinfo['bk_runner'] = gameinfo.get('bk_runner') runinfo['bk_time'] = util.seconds_to_timestr( gameinfo.get('bk_seconds')) runinfo['bk_video'] = gameinfo.get('bk_video') break if runner.visible_columns: visible_columns = json.loads(runner.visible_columns) else: visible_columns = util.get_default_visible_columns() if self.format == 'html': self.render("runnerpage.html", user=user, runner=runner, username_code=username_code, pblist=pblist, gravatar=gravatar, visible_columns=visible_columns) elif self.format == 'json': self.render_json(pblist)
def get( self, username_code ): try: user = self.get_user( ) if user == self.OVER_QUOTA_ERROR: user = None q = self.request.get( 'q', default_value=None ) t = self.request.get( 't', default_value=None ) show_all = False page_num = 1 if t == 'show-all': show_all = True else: # Grab the page num page_num = self.request.get( 'page', default_value=1 ) try: page_num = int( page_num ) except ValueError: page_num = 1 # Make sure the runner exists runner = self.get_runner( username_code ) if runner is None: self.error( 404 ) self.render( "404.html", user=user ) return if runner == self.OVER_QUOTA_ERROR: self.error( 403 ) if self.format == 'html': self.render( "403.html", user=user ) return username = runner.username gravatar = util.get_gravatar_url( runner.gravatar, size=120 ) if q == 'view-all': # List all runs for this runner res = self.get_runlist_for_runner( username, page_num ) if res == self.OVER_QUOTA_ERROR: self.error( 403 ) self.render( "403.html", user=user ) elif self.format == 'html': self.render( "listruns.html", user=user, runner=runner, username_code=username_code, runlist=res['runlist'], page_num=res['page_num'], has_next=res['has_next'], has_prev=(res['page_num'] > 1), gravatar=gravatar ) elif self.format == 'json': self.render_json( res['runlist'] ) else: # By default, list pbs for this runner res = self.get_pblist( username, page_num, show_all ) if res == self.OVER_QUOTA_ERROR: self.error( 403 ) self.render( "403.html", user=user ) return # We are also going to list the best known times for each game. # Let's gather those times here and add them to the pblist # info. pblist = res['pblist'] for pb in pblist: game_model = self.get_game_model( pb['game_code'] ) if game_model is None: logging.error( "No game_model for game " + pb['game'] ) continue if game_model == self.OVER_QUOTA_ERROR: self.error( 403 ) self.render( "403.html", user=user ) return gameinfolist = json.loads( game_model.info ) for runinfo in pb['infolist']: # Find the matching gameinfo for gameinfo in gameinfolist: if gameinfo['category'] == runinfo['category']: runinfo['bk_runner'] = gameinfo.get( 'bk_runner' ) runinfo['bk_time'] = util.seconds_to_timestr( gameinfo.get( 'bk_seconds' ) ) runinfo['bk_video'] = gameinfo.get( 'bk_video' ) break if runner.visible_columns: visible_columns = json.loads( runner.visible_columns ) else: visible_columns = util.get_default_visible_columns( ) if self.format == 'html': self.render( "runnerpage.html", user=user, runner=runner, username_code=username_code, pblist=pblist, gravatar=gravatar, page_num=res['page_num'], has_next=res['has_next'], has_prev=( res['page_num'] > 1 ), visible_columns=visible_columns, show_all=res['show_all'] ) elif self.format == 'json': self.render_json( pblist ) except DeadlineExceededError, msg: logging.error( msg ) self.error( 403 ) self.render( "deadline_exceeded.html", user=user )