From a9ed7d97f2a43718701658f3a2dc7d705b9ee11f Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Fri, 3 Feb 2012 00:14:06 +0000 Subject: [PATCH] Better API handling, avoid hitting the character API with NPC corps --- app/eve_api/api_exceptions.py | 5 ++++- app/eve_api/tasks/character.py | 2 +- app/eve_api/tasks/corporation.py | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/eve_api/api_exceptions.py b/app/eve_api/api_exceptions.py index 3f46dbb..345d242 100644 --- a/app/eve_api/api_exceptions.py +++ b/app/eve_api/api_exceptions.py @@ -20,5 +20,8 @@ class APIAccessException(Exception): Raised on Access errors of any kind, network and EVE API failures """ + def __init__(self, msg): + self.msg = msg + def __str__(self): - return "An error was encountered while accessing the EVE API." + return "An error was encountered while accessing the EVE API: %s" % self.msg diff --git a/app/eve_api/tasks/character.py b/app/eve_api/tasks/character.py index ec522e4..50c2ede 100644 --- a/app/eve_api/tasks/character.py +++ b/app/eve_api/tasks/character.py @@ -65,7 +65,7 @@ def import_eve_character_func(character_id, key_id=None, logger=logging.getLogge char_doc = CachedDocument.objects.api_query('/eve/CharacterInfo.xml.aspx', params={'characterID': character_id}, no_cache=False) except DocumentRetrievalError, exc: logger.error('Error retrieving CharacterInfo.xml.aspx for Character ID %s - %s' % (character_id, exc)) - raise APIAccessException + raise APIAccessException(exc.value) d = basic_xml_parse_doc(char_doc)['eveapi'] if 'error' in d: diff --git a/app/eve_api/tasks/corporation.py b/app/eve_api/tasks/corporation.py index b9d44da..20c171d 100644 --- a/app/eve_api/tasks/corporation.py +++ b/app/eve_api/tasks/corporation.py @@ -98,7 +98,8 @@ def import_corp_details_func(corp_id, log=logging.getLogger(__name__)): if int(d['allianceID']): corpobj.alliance, created = EVEPlayerAlliance.objects.get_or_create(id=d['allianceID']) - if int(d['ceoID']) > 1: + # Skip looking up the CEOs for NPC corps and ones with no CEO defined (dead corps) + if corp_id > 1000182 int(d['ceoID']) > 1: import_eve_character.delay(d['ceoID'], callback=link_ceo.subtask(corporation=corpobj.id)) else: corpobj.ceo_character = None