Beispiel #1
0
def get_corporation_transactions(corporation_id,
                                 highest_id=None,
                                 current_user=None):
    corporation = Corporation.get(corporation_id)
    character = Character.get(corporation.ceo_id)
    character_application_access_check(current_user, character)
    response = character.get_op('get_corporations_corporation_id_divisions',
                                corporation_id=corporation_id)
    wallet_division_data = response['wallet']
    divisions = {
        entry['division']: entry.get('name',
                                     'Division {}'.format(entry['division']))
        for entry in wallet_division_data
    }
    return_data = []
    if highest_id is None:
        kwargs = {}
    else:
        kwargs = {'highest_id': highest_id}
    for division_id, division_name in divisions.items():
        entry = {'division_name': division_name}
        transaction_data = character.get_op(
            'get_corporations_corporation_id_wallets_division_transactions',
            corporation_id=corporation_id,
            division=division_id,
            **kwargs,
        )
        entry.update(process_transactions(character, transaction_data))
        return_data.append(entry)
    return {'info': return_data}
Beispiel #2
0
def get_character_skills(character_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    skill_data = character.get_op(
        'get_characters_character_id_skills',
        character_id=character_id,
    )
    queue_data = character.get_op(
        'get_characters_character_id_skillqueue',
        character_id=character_id,
    )
    for skill_list in skill_data['skills'], queue_data:
        for entry in skill_list:
            skill = Type.get(entry['skill_id'])
            group = Group.get(skill.group_id)
            entry['skill_id'] = {
                'group_name': group.name,
                'skill_name': skill.name,
            }
    return {
        'info': {
            'skills': skill_data['skills'],
            'queue': queue_data,
            'total_sp': skill_data['total_sp']
        }
    }
def get_character_corporation_history(character_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    corporation_list = character.get_op(
        'get_characters_character_id_corporationhistory',
        character_id=character_id,
    )
    for entry in corporation_list:
        entry['is_deleted'] = entry.get('is_deleted', False)
        if entry['is_deleted']:
            entry['corporation_name'] = 'Deleted corp {}'.format(
                entry['corporation_id'])
            entry['alliance_name'] = 'Unknown'
            entry['redlisted'] = []
        else:
            corporation = Corporation.get(entry['corporation_id'])
            entry['corporation_name'] = corporation.name
            if corporation.alliance:
                entry['alliance_name'] = corporation.alliance.name
            else:
                entry['alliance_name'] = None
            redlisted_names = []
            if corporation.is_redlisted:
                redlisted_names.append('corporation_name')
            if corporation.alliance and corporation.alliance.is_redlisted:
                redlisted_names.append('alliance_name')
            if character.is_redlisted:
                redlisted_names.append('character_name')
            entry['redlisted'] = redlisted_names
    return {'info': corporation_list}
Beispiel #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}
Beispiel #5
0
def get_character_journal(character_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    wallet_data = character.get_paged_op(
        'get_characters_character_id_wallet_journal',
        character_id=character_id)
    return process_journal(character_id, wallet_data)
Beispiel #6
0
def get_character_market_contracts(character_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    contract_list = character.get_paged_op(
        'get_characters_character_id_contracts',
        character_id=character_id,
    )
    return process_contracts(character, contract_list)
Beispiel #7
0
def get_character_mining(character_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    mining_data = character.get_op(
        'get_characters_character_id_mining',
        character_id=character_id,
    )
    return process_mining(mining_data)
Beispiel #8
0
def get_character_industry(character_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    industry_job_data = character.get_op(
        'get_characters_character_id_industry_jobs',
        character_id=character_id,
    )
    return process_industry(character, industry_job_data)
Beispiel #9
0
def get_mail_body(character_id, mail_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    mail_data = character.get_op(
        'get_characters_character_id_mail_mail_id',
        character_id=character_id,
        mail_id=mail_id,
    )
    return mail_data['body']
Beispiel #10
0
def get_character_mail(character_id, last_mail_id=None, current_user=None):
    target_character = Character.get(character_id)
    character_application_access_check(current_user, target_character)
    if last_mail_id:
        kwargs = {'last_mail_id': last_mail_id}
    else:
        kwargs = {}
    mail_list = target_character.get_op('get_characters_character_id_mail',
                                        character_id=character_id,
                                        **kwargs)

    from_ids = set(entry['from'] for entry in mail_list)
    if from_ids:
        character_ids = set()
        corp_ids = set()
        alliance_ids = set()
        mailing_list_ids = set()
        id_set_dict = {
            'character': character_ids,
            'corporation': corp_ids,
            'alliance': alliance_ids,
            'mailing_list': mailing_list_ids,
        }
        name_data = get_from_names(list(from_ids))
        for entry in name_data:
            id_set_dict[entry['category']].add(entry['id'])
        for entry in mail_list:
            for recipient in entry['recipients']:
                id_set_dict[recipient['recipient_type']].add(
                    recipient['recipient_id'])

        characters = Character.get_multi(character_ids)
        corporations = Corporation.get_multi(corp_ids)
        alliances = Alliance.get_multi(alliance_ids)
        all_parties = {}
        all_parties.update(characters)
        all_parties.update(corporations)
        all_parties.update(alliances)
        for id in mailing_list_ids:
            all_parties[id] = MailingList('Mailing List {}'.format(id))

    for entry in mail_list:
        entry['redlisted'] = []
        entry['from_name'] = all_parties[entry['from']].name
        recipients_redlisted = False
        for recipient in entry['recipients']:
            recipient['recipient_name'] = all_parties[
                recipient['recipient_id']].name
            if all_parties[recipient['recipient_id']].is_redlisted:
                recipient['redlisted'] = ['recipient_name']
            else:
                recipient['redlisted'] = []
        if recipients_redlisted:
            entry['redlisted'].append('recipients')
        if all_parties[entry['from']].is_redlisted:
            entry['redlisted'].append('from_name')
    return {'info': mail_list}
Beispiel #11
0
def get_character_blueprints(character_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    assets = get_character_assets(character_id, current_user=current_user)
    blueprints_list = character.get_paged_op(
        'get_characters_character_id_blueprints',
        character_id=character_id,
    )
    return process_blueprints(assets, blueprints_list)
Beispiel #12
0
def get_corporation_assets(corporation_id, current_user=None):
    corporation = Corporation.get(corporation_id)
    character = Character.get(corporation.ceo_id)
    character_application_access_check(current_user, character)
    asset_list = character.get_paged_op(
        'get_corporations_corporation_id_assets',
        corporation_id=corporation_id,
    )
    return process_assets(character, asset_list, corporation_id=corporation_id)
Beispiel #13
0
def get_character_bookmarks(character_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    bookmarks_list = character.get_paged_op(
        'get_characters_character_id_bookmarks',
        character_id=character_id,
    )
    folder_list = character.get_paged_op(
        'get_characters_character_id_bookmarks_folders',
        character_id=character_id)
    return process_bookmarks(character, bookmarks_list, folder_list)
Beispiel #14
0
def get_character_calendar(character_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    calendar_data = character.get_op('get_characters_character_id_calendar',
                                     character_id=character_id)
    for entry in calendar_data:
        entry.update(
            get_character_calendar_event(character_id,
                                         entry['event_id'],
                                         current_user=current_user))
        entry.pop('date')
    return {'info': calendar_data}
Beispiel #15
0
def get_character_transactions(character_id,
                               highest_id=None,
                               current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    if highest_id is not None:
        kwargs = {'highest_id': highest_id}
    else:
        kwargs = {}
    wallet_data = character.get_op(
        'get_characters_character_id_wallet_transactions',
        character_id=character_id,
        **kwargs)
    return process_transactions(character, wallet_data)
Beispiel #16
0
def get_character_clones(character_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    clone_data = character.get_op('get_characters_character_id_clones',
                                  character_id=character_id)
    location_ids = set([clone_data['home_location']['location_id']])
    location_ids.update(entry['location_id']
                        for entry in clone_data['jump_clones'])
    location_dict = get_location_multi(character, location_ids)
    clone_data['home_location']['redlisted'] = []
    set_system_and_region(clone_data['home_location'], location_dict)
    for entry in clone_data['jump_clones']:
        entry['redlisted'] = []
        set_system_and_region(entry, location_dict)
    return {'info': clone_data}
Beispiel #17
0
def get_corporation_market_history(corporation_id, current_user=None):
    corporation = Corporation.get(corporation_id)
    character = Character.get(corporation.ceo_id)
    character_application_access_check(current_user, character)
    order_list = list(
        character.get_op(
            'get_corporations_corporation_id_orders',
            corporation_id=corporation_id,
        ))
    order_list.extend(
        character.get_paged_op(
            'get_corporations_corporation_id_orders_history',
            corporation_id=corporation_id,
        ))
    return process_market_history(character, order_list)
Beispiel #18
0
def get_character_calendar_event(character_id, event_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    event_data = character.get_op(
        'get_characters_character_id_calendar_event_id',
        character_id=character_id,
        event_id=event_id,
    )
    event_data['redlisted'] = []
    if event_data['owner_type'] in ('corporation', 'character', 'alliance'):
        owner = get_id_data([event_data['owner_id']],
                            sorted=False)[event_data['owner_id']]
        if owner.is_redlisted:
            event_data['redlisted'].append('owner_name')
    return event_data
Beispiel #19
0
def get_character_market_history(character_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    order_list = list(
        character.get_op(
            'get_characters_character_id_orders',
            character_id=character_id,
        ))
    for entry in order_list:
        entry['is_open'] = True
    historical_orders = character.get_paged_op(
        'get_characters_character_id_orders_history',
        character_id=character_id,
    )
    for entry in historical_orders:
        entry['is_open'] = False
    order_list.extend(historical_orders)
    return process_market_history(character, order_list)
Beispiel #20
0
def get_character_summary(character_id, current_user=None):
    character = Character.get(character_id)
    if (character_id != current_user.id):
        character_application_access_check(current_user, character)
    character_data = character.get_op(
        'get_characters_character_id',
        character_id=character_id,
    )
    application = Application.get_for_user(character.user_id)
    if application is not None:
        character_data['current_application_id'] = application.id
        if character_id == current_user.id:
            character_data[
                'current_application_status'] = own_application_status(
                    current_user)['status']
        else:
            character_data[
                'current_application_status'] = get_application_status(
                    application)
    else:
        character_data['current_application_id'] = None
        character_data['current_application_status'] = None
    character_data['security_status'] = character_data.get(
        'security_status', 0.)
    corporation = Corporation.get(character_data['corporation_id'])
    if character.corporation_id != corporation.id:
        character.corporation_id = corporation.id
        db.session.commit()
    character_data['corporation_name'] = corporation.name
    if corporation.alliance is not None:
        character_data['alliance_name'] = corporation.alliance.name
    else:
        character_data['alliance_name'] = None
    character_data['character_name'] = character_data.pop('name')
    character_data['character_id'] = character_id
    redlisted_names = []
    if corporation.is_redlisted:
        redlisted_names.append('corporation_name')
    if corporation.alliance and corporation.alliance.is_redlisted:
        redlisted_names.append('alliance_name')
    if character.is_redlisted:
        redlisted_names.append('character_name')
    character_data['redlisted'] = redlisted_names
    return {'info': character_data}
Beispiel #21
0
def get_corporation_journal(corporation_id, current_user=None):
    corporation = Corporation.get(corporation_id)
    character = Character.get(corporation.ceo_id)
    character_application_access_check(current_user, character)
    response = character.get_op('get_corporations_corporation_id_divisions',
                                corporation_id=corporation_id)
    wallet_division_data = response['wallet']
    divisions = {
        entry['division']: entry.get('name',
                                     'Division {}'.format(entry['division']))
        for entry in wallet_division_data
    }
    return_data = []
    for division_id, division_name in divisions.items():
        entry = {'division_name': division_name}
        journal_data = character.get_paged_op(
            'get_corporations_corporation_id_wallets_division_journal',
            corporation_id=corporation_id,
            division=division_id,
        )
        entry['info'] = process_journal(character.id, journal_data)['info']
        return_data.append(entry)
    return {'info': return_data}
Beispiel #22
0
def get_character_planetary_interaction(character_id, current_user=None):
    character = Character.get(character_id)
    character_application_access_check(current_user, character)
    planet_data = character.get_op(
        'get_characters_character_id_planets',
        character_id=character_id,
    )
    system_ids = set()
    for entry in planet_data:
        system_ids.add(entry['solar_system_id'])
    system_dict = System.get_multi(list(system_ids))

    for entry in planet_data:
        entry['redlisted'] = []
        system = system_dict[entry.pop('solar_system_id')]
        entry['system_id'] = system.id
        entry['system_name'] = system.name
        entry['region_id'] = system.region_id
        entry['region_name'] = system.region.name
        if system.is_redlisted:
            entry['redlisted'].append('system_name')
        if system.region.is_redlisted:
            entry['redlisted'].append('region_name')
    return {'info': planet_data}