Ejemplo n.º 1
0
def set_player_updated_at(pids):
    log("setting players as updated")
    if not pids:
        log('no players to update!')
        return
    now_str = _get_now_str()
    (Player.update(
        updated_at=now_str).where(Player.cfn_id << list(pids)).execute())
Ejemplo n.º 2
0
def save_ranking_results(ranking):
    player_source = [{
        'cfn_id': int(rank['pidx']),
        'name': rank['userid'],
        'subscribed': 0,
        'region': rank['region'],
        'platform': rank['accountsource'],
    } for rank in ranking]
    existing_pids = _insert_missing_players(player_source)

    rank_source = [{
        'player_cfn': int(rank['pidx']),
        'league_points': int(rank['lp']),
        'placement': int(rank['rownum']),
        'favorite_character': int(rank['favchar']),
    } for rank in ranking]
    bulk_insert(Rank, rank_source)

    player_ids = [r['player_cfn'] for r in rank_source]
    set_subscribed(player_ids)

    player_update = [{
        'cfn_id': int(rank['pidx']),
        'region': rank['region'],
        'platform': rank['accountsource'],
    } for rank in ranking if int(rank['pidx']) in existing_pids]
    regions = defaultdict(set)
    platforms = defaultdict(set)
    for pu in player_update:
        regions[pu['region']].add(pu['cfn_id'])
        platforms[pu['platform']].add(pu['cfn_id'])
    for region, pids in regions.items():
        (Player.update(
            region=region).where((Player.region >> None)
                                 & (Player.cfn_id << list(pids))).execute())
    for platform, pids in platforms.items():
        (Player.update(platform=platform).where((Player.platform >> None) & (
            Player.cfn_id << list(pids))).execute())
Ejemplo n.º 3
0
def subscribe_to_new_player(player_model):
    existing = (Player.select().where(Player.cfn_id == player_model.cfn_id))
    if existing:
        (Player.update(
            subscribed=1,
            name=player_model.name,
            region=player_model.region,
            platform=player_model.platform,
        ).where(Player.cfn_id == player_model.cfn_id).execute())
    else:
        bulk_insert(Player, [{
            'cfn_id': player_model.cfn_id,
            'name': player_model.name,
            'region': player_model.region,
            'platform': player_model.platform,
            'subscribed': 1,
        }])
Ejemplo n.º 4
0
def set_subscribed(pids):
    log("updating affected players to subscribed")
    if not pids:
        return
    (Player.update(subscribed=1).where(Player.subscribed == 0,
                                       Player.cfn_id << list(pids)).execute())