def update_character_associations(user): LOG.debug("Updating character ownerships for '%s'..." % user.username) eve_accounts = [] invalid_api_keys = [] new_characters = set() new_corps = set() skills = [] # get all the user's registered api credentials for api_key in user.eve_accounts.all(): try: conn = api.connect_user(api_key) for char in api.get_account_characters(api_key): try: member = Member.objects.get(characterID=char.characterID) except Member.DoesNotExist: member = Member(characterID=char.characterID, name=char.name) char_info = conn.eve.CharacterInfo( characterID=member.characterID) set_char_info_attributes(member, char_info) # This also sets employment history. # TODO 1 move employment history into separate function # TODO 2 optimizie; only check if corp has changed, and add history records in save_all below. sheet = conn.char.CharacterSheet( characterID=member.characterID) set_extended_char_attributes(member, sheet) skills.extend(get_character_skills(member, sheet)) if not member in new_characters: corp = get_corp(char.corporationID) if member.corp != corp: member.corp = corp new_corps.add(corp) new_characters.add(member) api_key.is_valid = True except api.AuthenticationError, e: LOG.warning("%s (user: '******' keyID: %d)" % (str(e), user.username, api_key.keyID)) api_key.is_valid = False api_key.error = str(e) invalid_api_keys.append(api_key) except api.Error, e: # for all other errors, we abort the operation so that # character associations are not deleted by mistake and # therefore, that users find themselves with no access :) LOG.error("%d: %s (user: '******' keyID: %d)" % (e.code, str(e), user.username, api_key.keyID)) raise
def update_character_associations(user): LOG.debug("Updating character ownerships for '%s'..." % user.username) eve_accounts = [] invalid_api_keys = [] new_characters = set() new_corps = set() skills = [] # get all the user's registered api credentials for api_key in user.eve_accounts.all(): try: conn = api.connect_user(api_key) for char in api.get_account_characters(api_key): try: member = Member.objects.get(characterID=char.characterID) except Member.DoesNotExist: member = Member(characterID=char.characterID, name=char.name) char_info = conn.eve.CharacterInfo(characterID=member.characterID) set_char_info_attributes(member, char_info) # This also sets employment history. # TODO 1 move employment history into separate function # TODO 2 optimizie; only check if corp has changed, and add history records in save_all below. sheet = conn.char.CharacterSheet(characterID=member.characterID) set_extended_char_attributes(member, sheet) skills.extend(get_character_skills(member, sheet)) if not member in new_characters: corp = get_corp(char.corporationID) if member.corp != corp: member.corp = corp new_corps.add(corp) new_characters.add(member) api_key.is_valid = True except api.AuthenticationError, e: LOG.warning("%s (user: '******' keyID: %d)" % (str(e), user.username, api_key.keyID)) api_key.is_valid = False api_key.error = str(e) invalid_api_keys.append(api_key) except api.Error, e: # for all other errors, we abort the operation so that # character associations are not deleted by mistake and # therefore, that users find themselves with no access :) LOG.error("%d: %s (user: '******' keyID: %d)" % (e.code, str(e), user.username, api_key.keyID)) raise
def get_char(characterID): api_conn = api.eveapi.EVEAPIConnection() char = api_conn.eve.CharacterInfo(characterID = characterID) try: corp = Corporation.objects.get(corporationID = char.corporationID) except Corporation.DoesNotExist: corp = get_corp(char.corporationID) LOG.info("Adding new Player: "+ char.characterName) mem = Member() mem.characterID = char.characterID mem.name = char.characterName mem.race = char.race mem.bloodline = char.bloodline mem.corp = corp mem.corpDate = char.corporationDate mem.securityStatus = char.securityStatus mem.save() return mem
def get_char(characterID): api_conn = api.eveapi.EVEAPIConnection() char = api_conn.eve.CharacterInfo(characterID=characterID) try: corp = Corporation.objects.get(corporationID=char.corporationID) except Corporation.DoesNotExist: corp = get_corp(char.corporationID) LOG.info("Adding new Player: " + char.characterName) mem = Member() mem.characterID = char.characterID mem.name = char.characterName mem.race = char.race mem.bloodline = char.bloodline mem.corp = corp mem.corpDate = char.corporationDate mem.securityStatus = char.securityStatus mem.save() return mem