Ejemplo n.º 1
0
 def create_all_stats_from_id(id_: str,
                              rank: int = None,
                              replay_ids: List[str] = None,
                              playlist: int = 13,
                              win: bool = None,
                              session=None) -> PlayerDataPoint:
     game_count = player_wrapper.get_total_games(session, id_)
     if game_count == 0:
         raise UserHasNoReplays()
     if rank is None:
         rank = get_rank(id_)
     averaged_stats = player_stat_wrapper.get_averaged_stats(
         session,
         id_,
         redis=current_app.config['r'],
         raw=True,
         rank=rank,
         replay_ids=replay_ids,
         playlist=playlist,
         win=win)
     if len(id_) == 11 and id_[0] == 'b' and id_[-1] == 'b':
         names_and_counts: List[Tuple[str, int]] = session.query(PlayerGame.name,
                                                                 func.count(PlayerGame.name).label('c')) \
                                                       .filter(PlayerGame.player == id_) \
                                                       .group_by(PlayerGame.name).order_by(desc('c'))[:5]
         id_ = names_and_counts[0][0]
     playstyle_data_raw: PlayerDataPoint = PlayerDataPoint(
         name=id_,
         data_points=[
             DataPoint(
                 explanations[k].field_rename if k in explanations else k,
                 averaged_stats[k]) for k in averaged_stats
         ])
     return playstyle_data_raw
Ejemplo n.º 2
0
def view_player(id_):
    print(id_, request.remote_addr)
    if len(id_) != 17 or re.match(regex, id_) is None:
        r = get_vanity_to_steam_id_or_random_response(id_, current_app)
        if r is None:
            return redirect(url_for('home'))
        id_ = r['response']['steamid']
        return redirect(url_for('players.view_player', id_=id_))
    session = current_app.config['db']()
    rank = get_rank(id_)
    total_games = player_wrapper.get_total_games(session, id_)
    games, stats, favorite_car, favorite_car_pctg, names = player_stat_wrapper.get_averaged_stats(session, id_, total_games, rank, redis=current_app.config['r'])
    steam_profile = get_steam_profile_or_random_response(id_, current_app)
    user = session.query(Player).filter(Player.platformid == id_).first()
    if user is not None:
        groups = [current_app.config['groups'][i] for i in user.groups]
    else:
        groups = []
    if steam_profile is None:
        return render_template('error.html', error="Unable to find the requested profile")

    return render_with_session('player.html', session, games=games, rank=rank, profile=steam_profile, car=favorite_car,
                               favorite_car_pctg=favorite_car_pctg, stats=stats,
                               total_games=total_games, game_per_page=player_wrapper.limit,
                               id=id_, get_stat_spider_charts=PlayerStatWrapper.get_stat_spider_charts,
                               groups=groups, names=names)
Ejemplo n.º 3
0
 def create_all_stats_from_id(id_: str,
                              rank: int = None,
                              replay_ids: List[str] = None,
                              playlist: int = 13,
                              win: bool = None,
                              session=None) -> PlayerDataPoint:
     game_count = player_wrapper.get_total_games(session, id_)
     if game_count == 0:
         raise UserHasNoReplays()
     if rank is None:
         rank = get_rank(id_)
     averaged_stats, global_stats = player_stat_wrapper.get_averaged_stats(
         session,
         id_,
         redis=current_app.config['r'],
         raw=True,
         rank=rank,
         replay_ids=replay_ids,
         playlist=playlist,
         win=win)
     playstyle_data_raw: PlayerDataPoint = PlayerDataPoint(
         name=id_,
         data_points=[
             DataPoint(
                 explanations[k].field_rename if k in explanations else k,
                 averaged_stats[k]) for k in averaged_stats
         ])
     return playstyle_data_raw
Ejemplo n.º 4
0
    def create_from_id(cls, id_: str, raw=False, rank=None, replay_ids=None, playlist=13, win=None, session=None):
        game_count = player_wrapper.get_total_games(session, id_)
        if game_count == 0:
            raise UserHasNoReplays()
        if rank is None:
            rank = get_rank(id_)
        try:
            averaged_stats = player_stat_wrapper.get_averaged_stats(session, id_,
                                                                    redis=get_redis(), raw=raw,
                                                                    rank=rank, replay_ids=replay_ids,
                                                                    playlist=playlist, win=win)
        except NoResultFound:
            raise NoReplaysForPlaylist(playlist)
        spider_charts_groups = player_stat_wrapper.get_stat_spider_charts()

        play_style_chart_datas: List[PlayStyleChartData] = []
        for spider_chart_group in spider_charts_groups:
            title = spider_chart_group['title']
            chart_data_points = [
                ChartDataPoint(name=explanations[name].short_name if name in explanations else name,
                               value=averaged_stats[name])
                for name in spider_chart_group['group']
            ]
            play_style_chart_datas.append(PlayStyleChartData(title, chart_data_points))

        return PlayStyleResponse(
            chart_datas=play_style_chart_datas,
            show_warning=game_count <= cls.showWarningThreshold
        )
Ejemplo n.º 5
0
 def test_get_rank_bot(self, mock_bracket):
     initialize_db_with_replays(self.replays)
     unranked_rank = get_empty_data(["b086f2d2abb"])
     rank = get_rank("b086f2d2abb")
     assert (unranked_rank[list(unranked_rank.keys())[0]].get('10') !=
             rank.get('10'))
     assert (unranked_rank[list(
         unranked_rank.keys())[0]].get('13') == rank.get('13'))
     assert (unranked_rank[list(
         unranked_rank.keys())[0]].get('11') == rank.get('11'))
Ejemplo n.º 6
0
 def create_from_id(id_: str) -> 'PlayerRanks':
     try:
         rank_datas = get_rank(id_)
         # print(rank_datas)
         player_rank_params = {
             rank_data['mode']:
             PlaylistRank(rank_data['string'], rank_data['tier'],
                          rank_data['rank_points'])
             for playlist, rank_data in rank_datas.items()
         }
         return PlayerRanks(player_rank_params)
     except:
         return PlayerRanks(dict())
 def test_get_rank_bot(self):
     unranked_rank = get_empty_data(["b086f2d2abb"])
     rank = get_rank("b086f2d2abb")
     self.assertNotEqual(unranked_rank[list(unranked_rank.keys())[0]].get('10'), rank.get('10'))
     self.assertEqual(unranked_rank[list(unranked_rank.keys())[0]].get('13'), rank.get('13'))
     self.assertEqual(unranked_rank[list(unranked_rank.keys())[0]].get('11'), rank.get('11'))
Ejemplo n.º 8
0
def api_v1_get_rank(id_):
    return jsonify(get_rank(id_))