def show_teams(): """Show menu of teams and players on teams""" #if 'credentials' not in flask.session: # return flask.redirect('auth') #flask.session['logged_in'] = True # Refresh credentials from the session. credentials = google.oauth2.credentials.Credentials( **flask.session['credentials']) picture_url = flask.session['picture_url'] db = get_db() cur = db.execute( textwrap.dedent("""\ select name, team_id, home_runs from players where team_id is not null """)) players = cur.fetchall() cur = db.execute('select name, id from teams order by name') teams = cur.fetchall() cur = db.execute( textwrap.dedent("""\ select teams.id as id, teams.name as name, SUM(players.home_runs) as score from teams inner join players on teams.id=players.team_id group by teams.id """)) team_scores = cur.fetchall() return flask.render_template('show_teams.html', picture_url=picture_url, players=players, teams=teams, team_scores=team_scores)
def add_player_to_team(team_id): """Add player to specified team""" flask.session['logged_in'] = True # Refresh credentials from the session. credentials = google.oauth2.credentials.Credentials( **flask.session['credentials']) db = get_db() cur = db.execute('select id from players where name = ?', [flask.request.form['player_name']]) player = cur.fetchone() if player is not None: db.execute('update players set team_id = ? where id = ?', [team_id, player['id']]) db.commit() else: db.execute('insert into players (name, team_id) values (?, ?)', [flask.request.form['player_name'], team_id]) db.commit() flask.flash('{player} was successfully added to team {team}'.format( player=flask.request.form['player_name'], team=team_id)) return flask.redirect( flask.url_for('team', picture_url=flask.session['picture_url'], team_id=team_id))
def show_dashboard(): """Show dashboard of ranked teams and scores""" # If user not logged in, redirect to auth35ddd if 'credentials' not in flask.session: return flask.redirect('auth') flask.session['logged_in'] = True # Refresh credentials from the session. credentials = google.oauth2.credentials.Credentials( **flask.session['credentials']) # Save credentials back to session in case access token was refreshed. # TODO: In a production app, you likely want to save these # credentials in a persistent database instead. flask.session['credentials'] = credentials_to_dict(credentials) db = get_db() cur = db.execute('select id from teams') ranked_teams = cur.fetchall() for team in ranked_teams: cur = db.execute( 'select SUM(home_runs) from players where team_id = ?', [team['id']]) score = cur.fetchone()[0] db.execute('update teams set score = ? where id = ?', [score, team['id']]) db.commit() cur = db.execute('select name, id, score from teams order by score desc') ranked_teams = cur.fetchall() return flask.render_template('dashboard.html', ranked_teams=ranked_teams, picture_url=flask.session['picture_url'])
def add_team(): """Create new team""" db = get_db() db.execute('insert into teams (name) values (?)', [flask.request.form['team_name']]) db.commit() flask.flash('New team {team} successfully created'.format( team=flask.request.form['team_name'])) return flask.redirect(flask.url_for('show_teams'))
def scraper(): """Launches the scraper process to continually update the players home runs count """ app.logger.info('Starting stats scraper.') scrape_interval = app.config['STATS_SCRAPE_INTERVAL'] app.logger.debug('STATS_SCRAPE_INTERVAL=%s' % scrape_interval) db = get_db() while True: update_player_database(db, get_all_players_home_runs()) app.logger.info('Retrieved latest player stats and updated database.') sleep(scrape_interval)
def team(team_id): """Page for team details and editing team""" if 'credentials' not in flask.session: return flask.redirect('auth') flask.session['logged_in'] = True # Refresh credentials from the session. credentials = google.oauth2.credentials.Credentials( **flask.session['credentials']) db = get_db() cur = db.execute('select name, id from teams where id=?', [team_id]) team = cur.fetchone() cur = db.execute( 'select name, id, home_runs from players where team_id=(?)', [team_id]) players = cur.fetchall() return flask.render_template('team.html', picture_url=flask.session['picture_url'], team=team, players=players)