• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python models.DBSession类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中xonstat.models.DBSession的典型用法代码示例。如果您正苦于以下问题:Python DBSession类的具体用法?Python DBSession怎么用?Python DBSession使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了DBSession类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: map_captimes_data

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,
        }
开发者ID:antzucaro,项目名称:XonStat,代码行数:32,代码来源:map.py


示例2: _rank_index_data

def _rank_index_data(request):
    current_page = request.params.get("page", 1)

    # game type whitelist
    game_types_allowed = ["ca", "ctf", "dm", "duel", "ft", "ka", "tdm"]

    game_type_cd = request.matchdict['game_type_cd']
    if game_type_cd not in game_types_allowed:
        raise httpexceptions.HTTPNotFound()

    ranks_q = DBSession.query(PlayerRank).\
            filter(PlayerRank.game_type_cd==game_type_cd).\
            order_by(PlayerRank.rank)

    game_type = DBSession.query(GameType).\
            filter(GameType.game_type_cd == game_type_cd).one()

    ranks = Page(ranks_q, current_page, url=page_url)

    if len(ranks) == 0:
        ranks = None

    return {
            'ranks':ranks,
            'game_type_cd':game_type_cd,
            'game_type': game_type,
           }
开发者ID:xonotic,项目名称:xonstat,代码行数:27,代码来源:game.py


示例3: player_game_index_data

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,
           }
开发者ID:antzucaro,项目名称:XonStat,代码行数:59,代码来源:player.py


示例4: search_q

def search_q(nick=None, server_name=None, map_name=None, create_dt=None,
        gametypes=[]):
    session     = DBSession()
    result_type = None
    q           = None

    # player-only searches
    if nick and not server_name and not map_name and not create_dt \
        and len(gametypes) < 1:
        result_type = "player"
        q = session.query(Player)
        if nick:
            q = q.filter(
                    func.upper(Player.stripped_nick).like('%'+nick.upper()+'%')).\
                    filter(Player.player_id > 2).\
                    filter(Player.active_ind == True).\
                    order_by(Player.player_id)

    # server-only searches
    elif server_name and not nick and not map_name and not create_dt and len(gametypes) < 1:
        result_type = "server"
        q = session.query(Server)
        if server_name:
            q = q.filter(func.upper(Server.name).like('%'+server_name.upper()+'%'))\
                .filter(Server.active_ind)\
                .order_by(Server.server_id)

    # map-only searches
    elif map_name and not nick and not server_name and not create_dt \
        and len(gametypes) < 1:
        result_type = "map"
        q = session.query(Map)
        if map_name:
            q = q.filter(func.upper(Map.name).\
                    like('%'+map_name.upper()+'%')).\
                    order_by(Map.map_id)

    # game searches (all else)
    else:
        result_type = "game"
        q = session.query(Game, Server, Map).\
                filter(Game.server_id == Server.server_id).\
                filter(Server.active_ind).\
                filter(Game.map_id == Map.map_id).\
                order_by(Game.game_id.desc())
        if len(gametypes) > 0:
            q = q.filter(Game.game_type_cd.in_(gametypes))
        if nick:
            q = q.filter(func.upper(PlayerGameStat.stripped_nick).\
                    like('%'+nick.upper()+'%')).\
                filter(PlayerGameStat.game_id == Game.game_id)
        if map_name:
            q = q.filter(func.upper(Map.name).\
                    like('%'+map_name.upper()+'%'))
        if server_name:
            q = q.filter(func.upper(Server.name).\
                    like('%'+server_name.upper()+'%'))

    return (result_type, q)
开发者ID:antzucaro,项目名称:XonStat,代码行数:59,代码来源:search.py


示例5: player_info_data

def player_info_data(request):
    player_id = int(request.matchdict['id'])
    if player_id <= 2:
        player_id = -1;

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

        games_played   = get_games_played(player_id)
        overall_stats  = get_overall_stats(player_id)
        fav_maps       = get_fav_maps(player_id)
        elos           = get_elos(player_id)
        ranks          = get_ranks(player_id)
        medals         = get_player_medals(player_id)
        recent_games   = get_recent_games(player_id)
        cake_day       = is_cake_day(player.create_dt)

    except Exception as e:
        raise pyramid.httpexceptions.HTTPNotFound

        ## do not raise application exceptions here (only for debugging)
        # raise e

    return {'player':player,
            'games_played':games_played,
            'overall_stats':overall_stats,
            'fav_maps':fav_maps,
            'elos':elos,
            'ranks':ranks,
            'medals':medals,
            'recent_games':recent_games,
            'cake_day':cake_day,
            }
开发者ID:antzucaro,项目名称:XonStat,代码行数:34,代码来源:player.py


示例6: player_elo_info_data

def player_elo_info_data(request):
    """
    Provides elo information on a specific player. Raw data is returned.
    """
    (idfp, status) = verify_request(request)
    log.debug("d0_blind_id verification: idfp={0} status={1}\n".format(idfp, status))

    log.debug("\n----- BEGIN REQUEST BODY -----\n" + request.body +
            "----- END REQUEST BODY -----\n\n")

    hashkey = request.matchdict['hashkey']

    # the incoming hashkey is double quoted, and WSGI unquotes once...
    hashkey = unquote(hashkey)

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

        elos = get_elos(player.player_id)

    except Exception as e:
        log.debug(e)
        raise pyramid.httpexceptions.HTTPNotFound

    return {
        'hashkey':hashkey,
        'player':player,
        'elos':elos,
    }
开发者ID:antzucaro,项目名称:XonStat,代码行数:32,代码来源:player.py


示例7: top_players

    def top_players(self):
        """Top players on this server by total playing time."""
        try:
            top_players_q = DBSession.query(
                fg.row_number().over(
                    order_by=expr.desc(func.sum(PlayerGameStat.alivetime))).label("rank"),
                Player.player_id, Player.nick,
                func.sum(PlayerGameStat.alivetime).label("alivetime"))\
                .filter(Player.player_id == PlayerGameStat.player_id)\
                .filter(Game.game_id == PlayerGameStat.game_id)\
                .filter(Game.server_id == self.server_id)\
                .filter(Player.player_id > 2)\
                .filter(PlayerGameStat.create_dt > (self.now - timedelta(days=self.lifetime)))\
                .order_by(expr.desc(func.sum(PlayerGameStat.alivetime)))\
                .group_by(Player.nick)\
                .group_by(Player.player_id)

            if self.last:
                top_players_q = top_players_q.offset(self.last)

            if self.limit:
                top_players_q = top_players_q.limit(self.limit)

            top_players = top_players_q.all()

        except Exception as e:
            log.debug(e)
            raise HTTPNotFound

        return top_players
开发者ID:antzucaro,项目名称:XonStat,代码行数:30,代码来源:server.py


示例8: get_top_scorers

    def get_top_scorers(self):
        """Top players by score. Shared by all renderers."""
        cutoff = self.now - timedelta(days=self.lifetime)
        cutoff = self.now - timedelta(days=120)

        top_scorers_q = DBSession.query(
            fg.row_number().over(order_by=expr.desc(func.sum(PlayerGameStat.score))).label("rank"),
            Player.player_id, Player.nick, func.sum(PlayerGameStat.score).label("total_score"))\
            .filter(Player.player_id == PlayerGameStat.player_id)\
            .filter(Game.game_id == PlayerGameStat.game_id)\
            .filter(Game.map_id == self.map_id)\
            .filter(Player.player_id > 2)\
            .filter(PlayerGameStat.create_dt > cutoff)\
            .order_by(expr.desc(func.sum(PlayerGameStat.score)))\
            .group_by(Player.nick)\
            .group_by(Player.player_id)

        if self.last:
            top_scorers_q = top_scorers_q.offset(self.last)

        if self.limit:
            top_scorers_q = top_scorers_q.limit(self.limit)

        top_scorers = top_scorers_q.all()

        return top_scorers
开发者ID:antzucaro,项目名称:XonStat,代码行数:26,代码来源:map.py


示例9: top_maps

    def top_maps(self):
        """Returns the raw data shared by all renderers."""
        try:
            top_maps_q = DBSession.query(
                fg.row_number().over(order_by=expr.desc(func.count())).label("rank"),
                Game.map_id, Map.name, func.count().label("times_played"))\
                .filter(Map.map_id == Game.map_id)\
                .filter(Game.server_id == self.server_id)\
                .filter(Game.create_dt > (self.now - timedelta(days=self.lifetime)))\
                .group_by(Game.map_id)\
                .group_by(Map.name) \
                .order_by(expr.desc(func.count()))

            if self.last:
                top_maps_q = top_maps_q.offset(self.last)

            if self.limit:
                top_maps_q = top_maps_q.limit(self.limit)

            top_maps = top_maps_q.all()
        except Exception as e:
            log.debug(e)
            raise HTTPNotFound

        return top_maps
开发者ID:antzucaro,项目名称:XonStat,代码行数:25,代码来源:server.py


示例10: get_elos

def get_elos(player_id):
    """
    Provides a breakdown of the player's elos by game type.

    Returns a dictionary of namedtuples with the following members:
        - player_id
        - game_type_cd
        - games
        - elo

    The key to the dictionary is the game type code. There is also an
    "overall" game_type_cd which is the overall best rank.
    """
    raw_elos = DBSession.query(PlayerElo).filter_by(player_id=player_id).\
            order_by(PlayerElo.elo.desc()).all()

    elos = {}
    found_max_elo = False
    for row in raw_elos:
        if not found_max_elo:
            elos['overall'] = row
            found_max_elo = True

        elos[row.game_type_cd] = row

    return elos
开发者ID:antzucaro,项目名称:XonStat,代码行数:26,代码来源:player.py


示例11: merge

def merge(request):
    '''A simple merge view. The merge.mako template does the work.'''
    s = DBSession()

    # only do a merge if we have all of the required data
    if request.params.has_key("csrf_token"):
        # check the token to prevent request forgery
        st = request.session.get_csrf_token()
        check_csrf_token(request)

        if request.params.has_key("w_pid") and request.params.has_key("l_pid"):
            w_pid = request.params.get("w_pid")
            l_pid = request.params.get("l_pid")

            # do the merge, hope for the best!
            try:
                s.execute("select merge_players(:w_pid, :l_pid)",
                    {"w_pid": w_pid, "l_pid": l_pid})

                s.commit()

                request.session.flash(
                    "Successfully merged player %s into %s!" % (l_pid, w_pid),
                    "success")

            except:
                s.rollback()

                request.session.flash(
                    "Could not merge player %s into %s." % (l_pid, w_pid),
                    "failure")

    return {}
开发者ID:antzucaro,项目名称:XonStat,代码行数:33,代码来源:admin.py


示例12: groupfinder

def groupfinder(userid, request):
    groups = []
    try:
        groups_q = DBSession.query(PlayerGroups.group_name).filter(Player.email_addr == userid).all()

        for g in groups_q:
            groups.append(g.group_name)
    except:
        pass

    return groups
开发者ID:dark-saber,项目名称:XonStat,代码行数:11,代码来源:security.py


示例13: player_captimes_data

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,
        }
开发者ID:antzucaro,项目名称:XonStat,代码行数:41,代码来源:player.py


示例14: get_damage_stats

def get_damage_stats(player_id, weapon_cd, games):
    """
    Provides damage info for weapon_cd by player_id for the past N games.
    """
    try:
        raw_avg = DBSession.query(func.sum(PlayerWeaponStat.actual),
                func.sum(PlayerWeaponStat.hit)).\
                filter(PlayerWeaponStat.player_id == player_id).\
                filter(PlayerWeaponStat.weapon_cd == weapon_cd).\
                one()

        avg = round(float(raw_avg[0])/raw_avg[1], 2)

        # Determine the damage efficiency (hit, fired) numbers for $games games
        # This is then enumerated to create parameters for a flot graph
        raw_dmgs = DBSession.query(PlayerWeaponStat.game_id,
            PlayerWeaponStat.actual, PlayerWeaponStat.hit).\
                filter(PlayerWeaponStat.player_id == player_id).\
                filter(PlayerWeaponStat.weapon_cd == weapon_cd).\
                order_by(PlayerWeaponStat.game_id.desc()).\
                limit(games).\
                all()

        # they come out in opposite order, so flip them in the right direction
        raw_dmgs.reverse()

        dmgs = []
        for i in range(len(raw_dmgs)):
            # try to derive, unless we've hit nothing then set to 0!
            try:
                dmg = round(float(raw_dmgs[i][1])/raw_dmgs[i][2], 2)
            except:
                dmg = 0.0

            dmgs.append((raw_dmgs[i][0], dmg))
    except Exception as e:
        dmgs = []
        avg = 0.0

    return (avg, dmgs)
开发者ID:antzucaro,项目名称:XonStat,代码行数:40,代码来源:player.py


示例15: server_index

    def server_index(self):
        """Returns the raw data shared by all renderers."""
        try:
            server_q = DBSession.query(Server)\
                .filter(Server.active_ind)\
                .order_by(Server.server_id.desc())
            servers = Page(server_q, self.page, items_per_page=25, url=page_url)

        except Exception as e:
            log.debug(e)
            raise HTTPNotFound

        return servers
开发者ID:antzucaro,项目名称:XonStat,代码行数:13,代码来源:server.py


示例16: get_accuracy_stats

def get_accuracy_stats(player_id, weapon_cd, games):
    """
    Provides accuracy for weapon_cd by player_id for the past N games.
    """
    # Reaching back 90 days should give us an accurate enough average
    # We then multiply this out for the number of data points (games) to
    # create parameters for a flot graph
    try:
        raw_avg = DBSession.query(func.sum(PlayerWeaponStat.hit),
                func.sum(PlayerWeaponStat.fired)).\
                filter(PlayerWeaponStat.player_id == player_id).\
                filter(PlayerWeaponStat.weapon_cd == weapon_cd).\
                one()

        avg = round(float(raw_avg[0])/raw_avg[1]*100, 2)

        # Determine the raw accuracy (hit, fired) numbers for $games games
        # This is then enumerated to create parameters for a flot graph
        raw_accs = DBSession.query(PlayerWeaponStat.game_id,
            PlayerWeaponStat.hit, PlayerWeaponStat.fired).\
                filter(PlayerWeaponStat.player_id == player_id).\
                filter(PlayerWeaponStat.weapon_cd == weapon_cd).\
                order_by(PlayerWeaponStat.game_id.desc()).\
                limit(games).\
                all()

        # they come out in opposite order, so flip them in the right direction
        raw_accs.reverse()

        accs = []
        for i in range(len(raw_accs)):
            accs.append((raw_accs[i][0], round(float(raw_accs[i][1])/raw_accs[i][2]*100, 2)))
    except:
        accs = []
        avg = 0.0

    return (avg, accs)
开发者ID:antzucaro,项目名称:XonStat,代码行数:37,代码来源:player.py


示例17: get_top_players_by_time

def get_top_players_by_time(limit=None, start=None):
    """
    The top players by the amount of time played during a date range.
    """
    q = DBSession.query(ActivePlayer)

    if start is not None:
        q = q.filter(ActivePlayer.sort_order >= start)

    q = q.order_by(ActivePlayer.sort_order)

    if limit is not None:
        q = q.limit(limit)

    return q.all()
开发者ID:xonotic,项目名称:xonstat,代码行数:15,代码来源:main.py


示例18: get_player_medals

def get_player_medals(player_id):
    """Retrieves the list of medals the player has received from tournaments or
    other contests."""
    try:
        medals = DBSession.query(PlayerMedal)\
                .filter(PlayerMedal.player_id==player_id)\
                .order_by(PlayerMedal.place)\
                .order_by(PlayerMedal.create_dt)\
                .all()

        return medals
    
    except Exception as e:
        log.debug(e)
        return []
开发者ID:antzucaro,项目名称:XonStat,代码行数:15,代码来源:player.py


示例19: get_top_servers_by_play_time

def get_top_servers_by_play_time(limit=None, start=None):
    """
    The top servers by the cumulative amount of time played on them during a given interval.
    """
    q = DBSession.query(ActiveServer)

    if start is not None:
        q = q.filter(ActiveServer.sort_order >= start)

    q = q.order_by(ActiveServer.sort_order)

    if limit is not None:
        q = q.limit(limit)

    return q.all()
开发者ID:xonotic,项目名称:xonstat,代码行数:15,代码来源:main.py


示例20: get_top_maps_by_games

def get_top_maps_by_games(limit=None, start=None):
    """
    The top maps by the number of games played during a date range.
    """
    q = DBSession.query(ActiveMap)

    if start is not None:
        q = q.filter(ActiveMap.sort_order >= start)

    q = q.order_by(ActiveMap.sort_order)

    if limit is not None:
        q = q.limit(limit)

    return q.all()
开发者ID:xonotic,项目名称:xonstat,代码行数:15,代码来源:main.py



注:本文中的xonstat.models.DBSession类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python xosconfig.Config类代码示例发布时间:2022-05-26
下一篇:
Python tools.to_bool函数代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap