コード例 #1
0
ファイル: finance.py プロジェクト: wgilpin/recruitment-ascee
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}
コード例 #2
0
ファイル: finance.py プロジェクト: wgilpin/recruitment-ascee
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}
コード例 #3
0
ファイル: industry.py プロジェクト: wgilpin/recruitment-ascee
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}
コード例 #4
0
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}
コード例 #5
0
ファイル: assets.py プロジェクト: wgilpin/recruitment-ascee
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)
コード例 #6
0
ファイル: assets.py プロジェクト: wgilpin/recruitment-ascee
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}
コード例 #7
0
ファイル: finance.py プロジェクト: wgilpin/recruitment-ascee
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}