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}
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}