Exemple #1
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}
Exemple #2
0
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}