def process_market_history(character, order_list): location_ids = set() type_ids = set() for order in order_list: location_ids.add(order['location_id']) type_ids.add(order['type_id']) location_dict = get_location_multi(character, list(location_ids)) type_dict = Type.get_multi(list(type_ids)) for order in order_list: order['redlisted'] = [] if 'is_buy_order' not in order: # always present if True order['is_buy_order'] = False if order['is_buy_order']: order['price'] *= -1 order['value'] = order['price'] * order['volume_total'] location = location_dict[order['location_id']] if location.system is None: order['location_name'] = location.name order['region_name'] = 'Unknown Region' else: order['location_name'] = location.name order['region_name'] = location.system.region.name if location.system.region.is_redlisted: order['redlisted'].append('region_name') type = type_dict[order['type_id']] order['type_name'] = type.name if type.is_redlisted: order['redlisted'].append('type_name') if location.is_redlisted: order['redlisted'].append('location_name') return {'info': order_list}
def process_transactions(character, transaction_data): client_ids = list(set(entry['client_id'] for entry in transaction_data)) type_ids = list(set(entry['type_id'] for entry in transaction_data)) location_ids = list(set(entry['location_id'] for entry in transaction_data)) clients = get_id_data(client_ids, sorted=False) types = Type.get_multi(type_ids) location_dict = get_location_multi(character, list(location_ids)) for entry in transaction_data: entry['redlisted'] = [] client = clients[entry['client_id']] type_id = entry['type_id'] location = location_dict[entry['location_id']] entry['client_name'] = client.name if client.is_redlisted: entry['redlisted'].append('client_name') entry['type_name'] = types[type_id].name if types[type_id].is_redlisted: entry['redlisted'].append('type_name') entry['location_name'] = location.name if location.is_redlisted: entry['redlisted'].append('location_name') entry['total_value'] = entry['quantity'] * entry['unit_price'] if abs(entry['total_value']) > 1e9: entry['redlisted'].append('total_value') if len(transaction_data) > 0: lowest_id = min(entry['transaction_id'] for entry in transaction_data) else: lowest_id = None return {'info': transaction_data, 'lowest_id': lowest_id}
def process_industry(character, industry_job_data): type_ids = set() location_ids = set() for entry in industry_job_data: type_ids.add(entry['blueprint_type_id']) if 'station_id' in entry: location_ids.add(entry['station_id']) if 'location_id' in entry: location_ids.add(entry['location_id']) type_dict = Type.get_multi(list(type_ids)) location_dict = get_location_multi(character, list(location_ids)) for entry in industry_job_data: type = type_dict[entry['blueprint_type_id']] if 'location_id' in entry: location_id = entry['location_id'] else: location_id = entry['station_id'] location = location_dict[location_id] entry['blueprint_type_name'] = type.name entry['station_name'] = location.name entry['redlisted'] = [] if type.is_redlisted: entry['redlisted'].append('blueprint_type_name') if location.is_redlisted: entry['redlisted'].append('station_name') return {'info': industry_job_data}
def get_character_fittings(character_id, current_user=None): character = Character.get(character_id) character_application_access_check(current_user, character) fitting_data = character.get_op( 'get_characters_character_id_fittings', character_id=character_id, ) types = set() for entry in fitting_data: types.add(entry['ship_type_id']) for item in entry['items']: types.add(item['type_id']) type_dict = Type.get_multi(list(types)) for entry in fitting_data: entry['redlisted'] = [] entry['ship_type_name'] = type_dict[entry['ship_type_id']].name if type_dict[entry['ship_type_id']].is_redlisted: entry['redlisted'].append('ship_type_name') items_redlisted = False for item in entry['items']: item['type_name'] = type_dict[item['type_id']].name if type_dict[item['type_id']].is_redlisted: item['redlisted'] = ['type_name'] items_redlisted = True else: item['redlisted'] = [] if items_redlisted: entry['redlisted'].append('items') return {'info': fitting_data}
def process_assets(character, asset_list, corporation_id=None): """If corporation_id is passed, will resolve asset names using corporation asset names endpoint.""" type_set = set() for entry in asset_list: type_set.add(entry['type_id']) type_dict = Type.get_multi(list(type_set)) item_ids = set() for entry in asset_list: type = type_dict[entry['type_id']] entry['name'] = type.name entry['price'] = type.price entry['redlisted'] = [] item_ids.add(entry['item_id']) if type.is_redlisted: entry['redlisted'].append('name') item_names = [] item_ids = list(item_ids) if corporation_id is None: # Currently not resolving names for corp assets because we can only do # so for ships and containers, others give an error for i_start in range(0, len(item_ids), 1000): item_names.extend( character.get_op( 'post_characters_character_id_assets_names', corporation_id=character.id, item_ids=item_ids[i_start:i_start + 1000], )) item_names = {entry['item_id']: entry['name'] for entry in item_names} for entry in asset_list: item_id = entry['item_id'] if item_names[item_id] != 'None' and entry['name'] != item_names[ item_id]: entry['name'] += ' ({})'.format(item_names[item_id]) return organize_assets_by_location(character, asset_list)
def process_blueprints(assets, blueprints_list): asset_system_dict, system_name_dict, redlisted_systems = get_asset_systems( assets) type_ids = set() for entry in blueprints_list: type_ids.add(entry['type_id']) type_dict = Type.get_multi(list(type_ids)) for entry in blueprints_list: entry['redlisted'] = [] entry['is_blueprint_copy'] = entry['quantity'] == -2 type = type_dict[entry['type_id']] entry['type_name'] = type.name if entry['item_id'] in asset_system_dict: system_id = asset_system_dict[entry['item_id']] entry['system_id'] = system_id entry['system_name'] = system_name_dict[system_id] if system_id in redlisted_systems: entry['redlisted'].append('system_name') else: entry['system_id'] = -1 entry['system_name'] = 'None' if type.is_redlisted: entry['redlisted'].append('type_name') return {'info': blueprints_list}
def process_contracts(character, contract_list): entry_items = character.get_op( 'get_characters_character_id_contracts_contract_id_items', character_id=character.id, contract_id=[entry['contract_id'] for entry in contract_list], ) type_ids = set() for item_list in entry_items.values(): type_ids.update([item['type_id'] for item in item_list]) type_dict = Type.get_multi(list(type_ids)) location_ids = set() character_ids = set() corporation_ids = set() for entry in contract_list: if 'start_location_id' in entry: location_ids.add(entry['start_location_id']) if 'end_location_id' in entry: location_ids.add(entry['end_location_id']) character_ids.add(entry['issuer_id']) if entry['acceptor_id'] != 0: character_ids.add(entry['acceptor_id']) corporation_ids.add(entry['issuer_corporation_id']) location_dict = get_location_multi(character, list(location_ids)) character_dict = Character.get_multi(list(character_ids)) character_dict[0] = DummyAcceptor() corporation_dict = Corporation.get_multi(list(corporation_ids)) corporation_dict[None] = DummyCorporation() # issuer_corporation, acceptor, issuer, end_location, start_location for entry in contract_list: entry['redlisted'] = [] entry['items'] = entry_items[entry['contract_id']] items_redlisted = False for item in entry['items']: type = type_dict[item['type_id']] item['type_name'] = type.name item['redlisted'] = [] if type.is_redlisted: item['redlisted'].append('type_name') items_redlisted = True if items_redlisted: entry['redlisted'].append('items') issuer_corporation = corporation_dict[entry['issuer_corporation_id']] entry['issuer_corporation_name'] = issuer_corporation.name entry['issuer_corporation_ticker'] = issuer_corporation.ticker entry['issuer_alliance_id'] = issuer_corporation.alliance_id if issuer_corporation.alliance is None: entry['issuer_alliance_name'] = None else: entry['issuer_alliance_name'] = issuer_corporation.alliance.name if issuer_corporation.alliance.is_redlisted: entry['redlisted'].append('issuer_alliance_name') if corporation_dict[entry['issuer_corporation_id']].is_redlisted: entry['redlisted'].append('issuer_corporation_name') entry['redlisted'].append('issuer_corporation_ticker') issuer = character_dict[entry['issuer_id']] entry['issuer_name'] = issuer.name acceptor = character_dict[entry['acceptor_id']] entry['acceptor_name'] = acceptor.name acceptor_corporation = acceptor.corporation entry['acceptor_corporation_id'] = acceptor_corporation.id entry['acceptor_corporation_name'] = acceptor_corporation.name entry['acceptor_corporation_ticker'] = acceptor_corporation.ticker entry['acceptor_alliance_id'] = acceptor_corporation.alliance_id if acceptor_corporation.alliance is None: entry['acceptor_alliance_name'] = 'None' else: entry[ 'acceptor_alliance_name'] = acceptor_corporation.alliance.name if acceptor_corporation.alliance.is_redlisted: entry['redlisted'].append('acceptor_alliance_name') if acceptor_corporation.is_redlisted: entry['redlisted'].append('acceptor_corporation_name') entry['redlisted'].append('acceptor_corporation_ticker') if issuer.is_redlisted: entry['redlisted'].append('issuer_name') if acceptor.is_redlisted: entry['redlisted'].append('acceptor_name') if 'start_location_id' in entry: start_location = location_dict[entry['start_location_id']] entry['start_location_name'] = start_location.name if start_location.is_redlisted: entry['redlisted'].append('start_location_name') if 'end_location_id' in entry: end_location = location_dict[entry['end_location_id']] entry['end_location_name'] = end_location.name if end_location.is_redlisted: entry['redlisted'].append('end_location_name') return {'info': contract_list}