Exemplo n.º 1
0
def map_captimes_data(request):
    map_id = int(request.matchdict['id'])

    current_page = request.params.get('page', 1)

    try:
        mmap = DBSession.query(Map).filter_by(map_id=map_id).one()

        mct_q = DBSession.query(PlayerCaptime.fastest_cap, PlayerCaptime.create_dt,
                PlayerCaptime.player_id, PlayerCaptime.game_id,
                Game.server_id, Server.name.label('server_name'),
                PlayerGameStat.nick.label('player_nick')).\
                filter(PlayerCaptime.map_id==map_id).\
                filter(PlayerCaptime.game_id==Game.game_id).\
                filter(PlayerCaptime.map_id==Map.map_id).\
                filter(Game.server_id==Server.server_id).\
                filter(PlayerCaptime.player_id==PlayerGameStat.player_id).\
                filter(PlayerCaptime.game_id==PlayerGameStat.game_id).\
                order_by(expr.asc(PlayerCaptime.fastest_cap))

    except Exception as e:
        raise HTTPNotFound

    map_captimes = Page(mct_q, current_page, items_per_page=20, url=page_url)

    map_captimes.items = [MapCapTime(row) for row in map_captimes.items]

    return {
            'map_id':map_id,
            'map':mmap,
            'captimes':map_captimes,
        }
Exemplo n.º 2
0
def player_game_index_data(request):
    try:
        player_id = int(request.matchdict['player_id'])
    except:
        player_id = -1

    game_type_cd = None
    game_type_descr = None

    if request.params.has_key('type'):
        game_type_cd = request.params['type']
        try:
            game_type_descr = DBSession.query(GameType.descr).\
                filter(GameType.game_type_cd == game_type_cd).\
                one()[0]
        except Exception as e:
            pass

    else:
        game_type_cd = None
        game_type_descr = None

    if request.params.has_key('page'):
        current_page = request.params['page']
    else:
        current_page = 1

    try:
        player = DBSession.query(Player).\
                filter_by(player_id=player_id).\
                filter(Player.active_ind == True).\
                one()

        rgs_q = recent_games_q(player_id=player.player_id,
                               force_player_id=True,
                               game_type_cd=game_type_cd)

        games = Page(rgs_q, current_page, items_per_page=20, url=page_url)

        # replace the items in the canned pagination class with more rich ones
        games.items = [RecentGame(row) for row in games.items]

        games_played = get_games_played(player_id)

    except Exception as e:
        raise e
        player = None
        games = None
        game_type_cd = None
        game_type_descr = None
        games_played = None

    return {
        'player_id': player.player_id,
        'player': player,
        'games': games,
        'game_type_cd': game_type_cd,
        'game_type_descr': game_type_descr,
        'games_played': games_played,
    }
Exemplo n.º 3
0
def map_captimes_data(request):
    map_id = int(request.matchdict['id'])

    current_page = request.params.get('page', 1)

    try:
        mmap = DBSession.query(Map).filter_by(map_id=map_id).one()

        mct_q = DBSession.query(PlayerCaptime.fastest_cap, PlayerCaptime.create_dt,
                PlayerCaptime.player_id, PlayerCaptime.game_id,
                Game.server_id, Server.name.label('server_name'),
                PlayerGameStat.nick.label('player_nick')).\
                filter(PlayerCaptime.map_id==map_id).\
                filter(PlayerCaptime.game_id==Game.game_id).\
                filter(PlayerCaptime.map_id==Map.map_id).\
                filter(Game.server_id==Server.server_id).\
                filter(PlayerCaptime.player_id==PlayerGameStat.player_id).\
                filter(PlayerCaptime.game_id==PlayerGameStat.game_id).\
                order_by(expr.asc(PlayerCaptime.fastest_cap))

    except Exception as e:
        raise HTTPNotFound

    map_captimes = Page(mct_q, current_page, items_per_page=20, url=page_url)

    map_captimes.items = [MapCapTime(row) for row in map_captimes.items]

    return {
            'map_id':map_id,
            'map':mmap,
            'captimes':map_captimes,
        }
Exemplo n.º 4
0
def player_game_index_data(request):
    try:
        player_id = int(request.matchdict['player_id'])
    except:
        player_id = -1

    game_type_cd = None
    game_type_descr = None

    if request.params.has_key('type'):
        game_type_cd = request.params['type']
        try:
            game_type_descr = DBSession.query(GameType.descr).\
                filter(GameType.game_type_cd == game_type_cd).\
                one()[0]
        except Exception as e:
            pass

    else:
        game_type_cd = None
        game_type_descr = None

    if request.params.has_key('page'):
        current_page = request.params['page']
    else:
        current_page = 1

    try:
        player = DBSession.query(Player).\
                filter_by(player_id=player_id).\
                filter(Player.active_ind == True).\
                one()

        rgs_q = recent_games_q(player_id=player.player_id,
            force_player_id=True, game_type_cd=game_type_cd)

        games = Page(rgs_q, current_page, items_per_page=20, url=page_url)

        # replace the items in the canned pagination class with more rich ones
        games.items = [RecentGame(row) for row in games.items]

        games_played = get_games_played(player_id)

    except Exception as e:
        raise e
        player = None
        games = None
        game_type_cd = None
        game_type_descr = None
        games_played = None

    return {
            'player_id':player.player_id,
            'player':player,
            'games':games,
            'game_type_cd':game_type_cd,
            'game_type_descr':game_type_descr,
            'games_played':games_played,
           }
Exemplo n.º 5
0
def top_players_by_time(request):
    return {'top_players': []}
    current_page = request.params.get('page', 1)
    cutoff_days = int(request.registry.settings.get('xonstat.leaderboard_lifetime', 30))
    top_players_q = top_players_by_time_q(cutoff_days)
    top_players = Page(top_players_q, current_page, items_per_page=25, url=page_url)
    top_players.items = [(player_id, html_colors(nick), score) for (player_id, nick, score) in top_players.items]
    return {'top_players':top_players}
Exemplo n.º 6
0
def top_players_by_time(request):
    return {'top_players': []}
    current_page = request.params.get('page', 1)
    cutoff_days = int(request.registry.settings.get('xonstat.leaderboard_lifetime', 30))
    top_players_q = top_players_by_time_q(cutoff_days)
    top_players = Page(top_players_q, current_page, items_per_page=25, url=page_url)
    top_players.items = [(player_id, html_colors(nick), score) for (player_id, nick, score) in top_players.items]
    return {'top_players':top_players}
Exemplo n.º 7
0
def player_game_index_data(request):
    RecentGame = namedtuple('RecentGame', [
        'game_id', 'game_type_cd', 'winner', 'game_create_dt', 'game_epoch',
        'game_fuzzy', 'server_id', 'server_name', 'map_id', 'map_name', 'team',
        'rank', 'elo_delta'
    ])

    player_id = request.matchdict['player_id']

    if request.params.has_key('page'):
        current_page = request.params['page']
    else:
        current_page = 1

    try:
        player = DBSession.query(Player).filter_by(player_id=player_id).\
                filter(Player.active_ind == True).one()

        games_q = DBSession.query(Game.game_id, Game.game_type_cd, Game.winner,
                Game.create_dt, Server.server_id,
                Server.name.label('server_name'), Map.map_id,
                Map.name.label('map_name'), PlayerGameStat.team,
                PlayerGameStat.rank, PlayerGameStat.elo_delta).\
            filter(PlayerGameStat.game_id == Game.game_id).\
            filter(PlayerGameStat.player_id == player_id).\
            filter(Game.server_id == Server.server_id).\
            filter(Game.map_id == Map.map_id).\
            order_by(Game.game_id.desc())

        games = Page(games_q, current_page, items_per_page=10, url=page_url)

        # replace the items in the canned pagination class with more rich ones
        games.items = [
            RecentGame(game_id=row.game_id,
                       game_type_cd=row.game_type_cd,
                       winner=row.winner,
                       game_create_dt=row.create_dt,
                       game_epoch=timegm(row.create_dt.timetuple()),
                       game_fuzzy=pretty_date(row.create_dt),
                       server_id=row.server_id,
                       server_name=row.server_name,
                       map_id=row.map_id,
                       map_name=row.map_name,
                       team=row.team,
                       rank=row.rank,
                       elo_delta=row.elo_delta) for row in games.items
        ]

    except Exception as e:
        player = None
        games = None

    return {
        'player_id': player.player_id,
        'player': player,
        'games': games,
    }
Exemplo n.º 8
0
def game_finder_data(request):
    if request.params.has_key('page'):
        current_page = request.params['page']
    else:
        current_page = 1

    query = {}

    server_id, map_id, player_id = None, None, None
    range_start, range_end, game_type_cd = None, None, None
    game_type_descr = None

    # these become WHERE clauses when present
    if request.params.has_key('server_id'):
        server_id = request.params['server_id']
        query['server_id'] = server_id

    if request.params.has_key('map_id'):
        map_id = request.params['map_id']
        query['map_id'] = map_id

    if request.params.has_key('player_id'):
        player_id = request.params['player_id']
        query['player_id'] = player_id

    if request.params.has_key('range_start'):
        range_start = request.params['range_start']
        query['range_start'] = range_start

    if request.params.has_key('range_end'):
        range_end = request.params['range_end']
        query['range_end'] = range_end

    if request.params.has_key('type'):
        game_type_cd = request.params['type']
        query['type'] = game_type_cd
        try:
            game_type_descr = DBSession.query(GameType.descr).\
                filter(GameType.game_type_cd == game_type_cd).\
                one()[0]
        except Exception as e:
            game_type_cd = None

    rgs_q = recent_games_q(server_id=server_id, map_id=map_id,
            player_id=player_id, game_type_cd=game_type_cd)

    recent_games = Page(rgs_q, current_page, url=page_url)

    recent_games.items = [RecentGame(row) for row in recent_games.items]

    return {
            'recent_games':recent_games,
            'query':query,
            'game_type_cd':game_type_cd,
           }
Exemplo n.º 9
0
def player_game_index_data(request):
    RecentGame = namedtuple('RecentGame', ['game_id', 'game_type_cd', 'winner',
        'game_create_dt', 'game_epoch', 'game_fuzzy', 'server_id',
        'server_name', 'map_id', 'map_name', 'team', 'rank', 'elo_delta'])

    player_id = request.matchdict['player_id']

    if request.params.has_key('page'):
        current_page = request.params['page']
    else:
        current_page = 1

    try:
        player = DBSession.query(Player).filter_by(player_id=player_id).\
                filter(Player.active_ind == True).one()

        games_q = DBSession.query(Game.game_id, Game.game_type_cd, Game.winner,
                Game.create_dt, Server.server_id,
                Server.name.label('server_name'), Map.map_id,
                Map.name.label('map_name'), PlayerGameStat.team,
                PlayerGameStat.rank, PlayerGameStat.elo_delta).\
            filter(PlayerGameStat.game_id == Game.game_id).\
            filter(PlayerGameStat.player_id == player_id).\
            filter(Game.server_id == Server.server_id).\
            filter(Game.map_id == Map.map_id).\
            order_by(Game.game_id.desc())

        games = Page(games_q, current_page, items_per_page=10, url=page_url)

        # replace the items in the canned pagination class with more rich ones
        games.items = [RecentGame(
            game_id        = row.game_id,
            game_type_cd   = row.game_type_cd,
            winner         = row.winner,
            game_create_dt = row.create_dt,
            game_epoch     = timegm(row.create_dt.timetuple()),
            game_fuzzy     = pretty_date(row.create_dt),
            server_id      = row.server_id,
            server_name    = row.server_name,
            map_id         = row.map_id,
            map_name       = row.map_name,
            team           = row.team,
            rank           = row.rank,
            elo_delta      = row.elo_delta
        ) for row in games.items]

    except Exception as e:
        player = None
        games = None

    return {
            'player_id':player.player_id,
            'player':player,
            'games':games,
           }
Exemplo n.º 10
0
def player_captimes_data(request):
    player_id = int(request.matchdict['player_id'])
    if player_id <= 2:
        player_id = -1;

    page = request.params.get("page", 1)

    sort = request.params.get("sort", "create_dt")

    try:
        player = DBSession.query(Player).filter_by(player_id=player_id).one()

        pct_q = DBSession.query(PlayerCaptime.fastest_cap, PlayerCaptime.create_dt,
                PlayerCaptime.player_id, PlayerCaptime.game_id, PlayerCaptime.map_id,
                Map.name.label('map_name'), Game.server_id, Server.name.label('server_name')).\
                filter(PlayerCaptime.player_id==player_id).\
                filter(PlayerCaptime.game_id==Game.game_id).\
                filter(PlayerCaptime.map_id==Map.map_id).\
                filter(Game.server_id==Server.server_id)

        if sort == "fastest":
            pct_q = pct_q.order_by(PlayerCaptime.fastest_cap)
        else:
            sort = "create_dt"
            pct_q = pct_q.order_by(expr.desc(PlayerCaptime.create_dt))

    except Exception as e:
        raise pyramid.httpexceptions.HTTPNotFound

    captimes = Page(pct_q, page, items_per_page=20, url=page_url)

    # replace the items in the canned pagination class with more rich ones
    captimes.items = [PlayerCapTime(row) for row in captimes.items]

    return {
            "player_id" : player_id,
            "player"    : player,
            "captimes"  : captimes,
            "page"      : page,
            "sort"      : sort,
        }
Exemplo n.º 11
0
def player_captimes_data(request):
    player_id = int(request.matchdict['player_id'])
    if player_id <= 2:
        player_id = -1;

    page = request.params.get("page", 1)

    sort = request.params.get("sort", "create_dt")

    try:
        player = DBSession.query(Player).filter_by(player_id=player_id).one()

        pct_q = DBSession.query(PlayerCaptime.fastest_cap, PlayerCaptime.create_dt,
                PlayerCaptime.player_id, PlayerCaptime.game_id, PlayerCaptime.map_id,
                Map.name.label('map_name'), Game.server_id, Server.name.label('server_name')).\
                filter(PlayerCaptime.player_id==player_id).\
                filter(PlayerCaptime.game_id==Game.game_id).\
                filter(PlayerCaptime.map_id==Map.map_id).\
                filter(Game.server_id==Server.server_id)

        if sort == "fastest":
            pct_q = pct_q.order_by(PlayerCaptime.fastest_cap)
        else:
            sort = "create_dt"
            pct_q = pct_q.order_by(expr.desc(PlayerCaptime.create_dt))

    except Exception as e:
        raise pyramid.httpexceptions.HTTPNotFound

    captimes = Page(pct_q, page, items_per_page=20, url=page_url)

    # replace the items in the canned pagination class with more rich ones
    captimes.items = [PlayerCapTime(row) for row in captimes.items]

    return {
            "player_id" : player_id,
            "player"    : player,
            "captimes"  : captimes,
            "page"      : page,
            "sort"      : sort,
        }
Exemplo n.º 12
0
def player_captimes_data(request):
    player_id = int(request.matchdict['player_id'])
    if player_id <= 2:
        player_id = -1;

    if request.params.has_key('page'):
        current_page = request.params['page']
    else:
        current_page = 1

    PlayerCaptimes = namedtuple('PlayerCaptimes', ['fastest_cap',
            'create_dt', 'create_dt_epoch', 'create_dt_fuzzy',
            'player_id', 'game_id', 'map_id', 'map_name', 'server_id', 'server_name'])

    player = DBSession.query(Player).filter_by(player_id=player_id).one()

    #pct_q = DBSession.query('fastest_cap', 'create_dt', 'player_id', 'game_id', 'map_id',
    #            'map_name', 'server_id', 'server_name').\
    #        from_statement(
    #            "SELECT ct.fastest_cap, "
    #                   "ct.create_dt, "
    #                   "ct.player_id, "
    #                   "ct.game_id, "
    #                   "ct.map_id, "
    #                   "m.name map_name, "
    #                   "g.server_id, "
    #                   "s.name server_name "
    #            "FROM   player_map_captimes ct, "
    #                   "games g, "
    #                   "maps m, "
    #                   "servers s "
    #            "WHERE  ct.player_id = :player_id "
    #              "AND  g.game_id = ct.game_id "
    #              "AND  g.server_id = s.server_id "
    #              "AND  m.map_id = ct.map_id "
    #            #"ORDER  BY ct.fastest_cap "
    #            "ORDER  BY ct.create_dt desc"
    #        ).params(player_id=player_id)

    try:
        pct_q = DBSession.query(PlayerCaptime.fastest_cap, PlayerCaptime.create_dt,
                PlayerCaptime.player_id, PlayerCaptime.game_id, PlayerCaptime.map_id,
                Map.name.label('map_name'), Game.server_id, Server.name.label('server_name')).\
                filter(PlayerCaptime.player_id==player_id).\
                filter(PlayerCaptime.game_id==Game.game_id).\
                filter(PlayerCaptime.map_id==Map.map_id).\
                filter(Game.server_id==Server.server_id).\
                order_by(expr.desc(PlayerCaptime.create_dt))

        player_captimes = Page(pct_q, current_page, items_per_page=20, url=page_url)

        # replace the items in the canned pagination class with more rich ones
        player_captimes.items = [PlayerCaptimes(
                fastest_cap=row.fastest_cap,
                create_dt=row.create_dt,
                create_dt_epoch=timegm(row.create_dt.timetuple()),
                create_dt_fuzzy=pretty_date(row.create_dt),
                player_id=row.player_id,
                game_id=row.game_id,
                map_id=row.map_id,
                map_name=row.map_name,
                server_id=row.server_id,
                server_name=row.server_name
                ) for row in player_captimes.items]

    except Exception as e:
        player = None
        player_captimes = None

    return {
            'player_id':player_id,
            'player':player,
            'captimes':player_captimes,
            #'player_url':request.route_path('player_info', id=player_id),
        }
Exemplo n.º 13
0
def player_captimes_data(request):
    player_id = int(request.matchdict['player_id'])
    if player_id <= 2:
        player_id = -1

    if request.params.has_key('page'):
        current_page = request.params['page']
    else:
        current_page = 1

    PlayerCaptimes = namedtuple('PlayerCaptimes', [
        'fastest_cap', 'create_dt', 'create_dt_epoch', 'create_dt_fuzzy',
        'player_id', 'game_id', 'map_id', 'map_name', 'server_id',
        'server_name'
    ])

    player = DBSession.query(Player).filter_by(player_id=player_id).one()

    #pct_q = DBSession.query('fastest_cap', 'create_dt', 'player_id', 'game_id', 'map_id',
    #            'map_name', 'server_id', 'server_name').\
    #        from_statement(
    #            "SELECT ct.fastest_cap, "
    #                   "ct.create_dt, "
    #                   "ct.player_id, "
    #                   "ct.game_id, "
    #                   "ct.map_id, "
    #                   "m.name map_name, "
    #                   "g.server_id, "
    #                   "s.name server_name "
    #            "FROM   player_map_captimes ct, "
    #                   "games g, "
    #                   "maps m, "
    #                   "servers s "
    #            "WHERE  ct.player_id = :player_id "
    #              "AND  g.game_id = ct.game_id "
    #              "AND  g.server_id = s.server_id "
    #              "AND  m.map_id = ct.map_id "
    #            #"ORDER  BY ct.fastest_cap "
    #            "ORDER  BY ct.create_dt desc"
    #        ).params(player_id=player_id)

    try:
        pct_q = DBSession.query(PlayerCaptime.fastest_cap, PlayerCaptime.create_dt,
                PlayerCaptime.player_id, PlayerCaptime.game_id, PlayerCaptime.map_id,
                Map.name.label('map_name'), Game.server_id, Server.name.label('server_name')).\
                filter(PlayerCaptime.player_id==player_id).\
                filter(PlayerCaptime.game_id==Game.game_id).\
                filter(PlayerCaptime.map_id==Map.map_id).\
                filter(Game.server_id==Server.server_id).\
                order_by(expr.desc(PlayerCaptime.create_dt))

        player_captimes = Page(pct_q,
                               current_page,
                               items_per_page=20,
                               url=page_url)

        # replace the items in the canned pagination class with more rich ones
        player_captimes.items = [
            PlayerCaptimes(fastest_cap=row.fastest_cap,
                           create_dt=row.create_dt,
                           create_dt_epoch=timegm(row.create_dt.timetuple()),
                           create_dt_fuzzy=pretty_date(row.create_dt),
                           player_id=row.player_id,
                           game_id=row.game_id,
                           map_id=row.map_id,
                           map_name=row.map_name,
                           server_id=row.server_id,
                           server_name=row.server_name)
            for row in player_captimes.items
        ]

    except Exception as e:
        player = None
        player_captimes = None

    return {
        'player_id': player_id,
        'player': player,
        'captimes': player_captimes,
        #'player_url':request.route_path('player_info', id=player_id),
    }
Exemplo n.º 14
0
Arquivo: map.py Projeto: em92/XonStat
def map_captimes_data(request):
    map_id = int(request.matchdict['id'])

    if request.params.has_key('page'):
        current_page = request.params['page']
    else:
        current_page = 1

    MapCaptimes = namedtuple('PlayerCaptimes', ['fastest_cap',
        'create_dt', 'create_dt_epoch', 'create_dt_fuzzy',
        'player_id', 'player_nick', 'player_nick_stripped', 'player_nick_html',
        'game_id', 'server_id', 'server_name'])

    mmap = DBSession.query(Map).filter_by(map_id=map_id).one()

    #mct_q = DBSession.query('fastest_cap', 'create_dt', 'player_id', 'game_id',
    #            'server_id', 'server_name', 'player_nick').\
    #        from_statement(
    #            "SELECT ct.fastest_cap, "
    #                   "ct.create_dt, "
    #                   "ct.player_id, "
    #                   "ct.game_id, "
    #                   "g.server_id, "
    #                   "s.name server_name, "
    #                   "pgs.nick player_nick "
    #            "FROM   player_map_captimes ct, "
    #                   "games g, "
    #                   "maps m, "
    #                   "servers s, "
    #                   "player_game_stats pgs "
    #            "WHERE  ct.map_id = :map_id "
    #              "AND  g.game_id = ct.game_id "
    #              "AND  g.server_id = s.server_id "
    #              "AND  m.map_id = ct.map_id "
    #              "AND  pgs.player_id = ct.player_id "
    #              "AND  pgs.game_id = ct.game_id "
    #            "ORDER  BY ct.fastest_cap "
    #            "LIMIT  25"
    #        ).params(map_id=map_id)

    #try:
    if True:
        mct_q = DBSession.query(PlayerCaptime.fastest_cap, PlayerCaptime.create_dt,
                PlayerCaptime.player_id, PlayerCaptime.game_id,
                Game.server_id, Server.name.label('server_name'),
                PlayerGameStat.nick.label('player_nick')).\
                filter(PlayerCaptime.map_id==map_id).\
                filter(PlayerCaptime.game_id==Game.game_id).\
                filter(PlayerCaptime.map_id==Map.map_id).\
                filter(Game.server_id==Server.server_id).\
                filter(PlayerCaptime.player_id==PlayerGameStat.player_id).\
                filter(PlayerCaptime.game_id==PlayerGameStat.game_id).\
                order_by(expr.asc(PlayerCaptime.fastest_cap))

        map_captimes = Page(mct_q, current_page, items_per_page=20, url=page_url)

        map_captimes.items = [MapCaptimes(
                        fastest_cap=row.fastest_cap,
                        create_dt=row.create_dt,
                        create_dt_epoch=timegm(row.create_dt.timetuple()),
                        create_dt_fuzzy=pretty_date(row.create_dt),
                        player_id=row.player_id,
                        player_nick=row.player_nick,
                        player_nick_stripped=strip_colors(row.player_nick),
                        player_nick_html=html_colors(row.player_nick),
                        game_id=row.game_id,
                        server_id=row.server_id,
                        server_name=row.server_name,
                ) for row in map_captimes.items]

    #except Exception as e:
    else:
        map = None
        map_captimes = None

    return {
            'map_id':map_id,
            'map':mmap,
            'captimes':map_captimes,
        }
Exemplo n.º 15
0
def map_captimes_data(request):
    map_id = int(request.matchdict['id'])

    if request.params.has_key('page'):
        current_page = request.params['page']
    else:
        current_page = 1

    MapCaptimes = namedtuple('PlayerCaptimes', [
        'fastest_cap', 'create_dt', 'create_dt_epoch', 'create_dt_fuzzy',
        'player_id', 'player_nick', 'player_nick_stripped', 'player_nick_html',
        'game_id', 'server_id', 'server_name'
    ])

    mmap = DBSession.query(Map).filter_by(map_id=map_id).one()

    #mct_q = DBSession.query('fastest_cap', 'create_dt', 'player_id', 'game_id',
    #            'server_id', 'server_name', 'player_nick').\
    #        from_statement(
    #            "SELECT ct.fastest_cap, "
    #                   "ct.create_dt, "
    #                   "ct.player_id, "
    #                   "ct.game_id, "
    #                   "g.server_id, "
    #                   "s.name server_name, "
    #                   "pgs.nick player_nick "
    #            "FROM   player_map_captimes ct, "
    #                   "games g, "
    #                   "maps m, "
    #                   "servers s, "
    #                   "player_game_stats pgs "
    #            "WHERE  ct.map_id = :map_id "
    #              "AND  g.game_id = ct.game_id "
    #              "AND  g.server_id = s.server_id "
    #              "AND  m.map_id = ct.map_id "
    #              "AND  pgs.player_id = ct.player_id "
    #              "AND  pgs.game_id = ct.game_id "
    #            "ORDER  BY ct.fastest_cap "
    #            "LIMIT  25"
    #        ).params(map_id=map_id)

    #try:
    if True:
        mct_q = DBSession.query(PlayerCaptime.fastest_cap, PlayerCaptime.create_dt,
                PlayerCaptime.player_id, PlayerCaptime.game_id,
                Game.server_id, Server.name.label('server_name'),
                PlayerGameStat.nick.label('player_nick')).\
                filter(PlayerCaptime.map_id==map_id).\
                filter(PlayerCaptime.game_id==Game.game_id).\
                filter(PlayerCaptime.map_id==Map.map_id).\
                filter(Game.server_id==Server.server_id).\
                filter(PlayerCaptime.player_id==PlayerGameStat.player_id).\
                filter(PlayerCaptime.game_id==PlayerGameStat.game_id).\
                order_by(expr.asc(PlayerCaptime.fastest_cap))

        map_captimes = Page(mct_q,
                            current_page,
                            items_per_page=20,
                            url=page_url)

        map_captimes.items = [
            MapCaptimes(
                fastest_cap=row.fastest_cap,
                create_dt=row.create_dt,
                create_dt_epoch=timegm(row.create_dt.timetuple()),
                create_dt_fuzzy=pretty_date(row.create_dt),
                player_id=row.player_id,
                player_nick=row.player_nick,
                player_nick_stripped=strip_colors(row.player_nick),
                player_nick_html=html_colors(row.player_nick),
                game_id=row.game_id,
                server_id=row.server_id,
                server_name=row.server_name,
            ) for row in map_captimes.items
        ]

    #except Exception as e:
    else:
        map = None
        map_captimes = None

    return {
        'map_id': map_id,
        'map': mmap,
        'captimes': map_captimes,
    }