def test_get_arena_league_from_name(): # The below isn't comprehensive, nor specific. As the league makeup # are likely to change from time to time, no reason to update the # tests every time that happens. assert leagueinfo.get_arena_league_from_name('Arena 1')['id'] == 'arena-1' assert leagueinfo.get_arena_league_from_name( 'Legendary Arena')['id'] == 'challenger-1' assert leagueinfo.get_arena_league_from_name( 'Garbage League (obviously fake)')['id'] == 'arena-unknown'
def process_members(config, clan, warlog, current_war, member_history): """ Process member list, adding calculated meta-data for rendering of status in the clan member table. """ # calculate the number of days since the donation last sunday, for # donation tracking purposes: now = datetime.utcnow() days_from_donation_reset = now.isoweekday() if days_from_donation_reset > 7 or days_from_donation_reset <= 0: days_from_donation_reset = 1 # grab importent fields from member list for dashboard members = clan['memberList'].copy() members_processed = [] for member_src in members: member = enrich_member_with_history(config, member_src, member_history['members'], days_from_donation_reset, now) # get special statuses. # vacation = member is on vacation. Don't reccomend demote or kick, dont show score # safe = member marked as safe. Don't reccomend demote or kick # blacklist = member on blacklist. Recommend kick immediately. member['vacation'] = member['tag'] in config['members']['vacation'] member['safe'] = member['tag'] in config['members']['safe'] member['no_promote'] = member['tag'] in config['members']['no_promote'] member['blacklist'] = member['tag'] in config['members']['blacklist'] # Automatically add inactive 'safe' members to vacation if member['safe'] and (member['days_inactive'] >= config['activity']['threshold_warn']): member['vacation'] = True # get member warlog and add it to the record member['currentWar'] = member_war(config, member, current_war) member['warlog'] = member_warlog(config, member, warlog) member['donationScore'] = donations_score(config, member) # calculate score based on war participation member['warScore'] = 0 for war in member['warlog']: member['warScore'] += war['score'] # get member score member['score'] = member['warScore'] + member['donationScore'] # calculate the number of daily donations, and the donation status # based on threshold set in config member['donationStatus'] = calc_donation_status( config, member['donationScore'], member['donationsDaily'], days_from_donation_reset) member['status'] = calc_member_status(config, member['score'], member['no_promote']) member['activity_status'] = calc_activity_status( config, member['days_inactive']) member['role_label'] = get_role_label(config, member['role'], member['days_inactive'], member['activity_status'], member['vacation'], member['blacklist'], member['no_promote']) if member['trophies'] >= clan['requiredTrophies']: member['trophiesStatus'] = 'normal' else: member['trophiesStatus'] = 'ok' member['arenaLeague'] = leagueinfo.get_arena_league_from_name( member['arena']['name'])['id'] member['arenaLeagueLabel'] = config['strings']['league-' + member['arenaLeague']] # Figure out whether member is on the leadership team by role member['leadership'] = member['role'] == 'leader' or member[ 'role'] == 'coLeader' members_processed.append(member) return members_processed