correct corp stat display for user-less chars

As a result of api key sso validation, character models can be created without assigning a user. If this occurs and a user attempts to view that character's corp stats, the view is unable to determine a main character due to a not null constraing on the authservicesinfo user field. This checks to see if the character has an associated user, and if not, does not check for associated main characters.

Closes an issue @trustmeimlumi never opened.
This commit is contained in:
Adarnof 2016-11-24 17:53:54 -05:00 committed by GitHub
parent f0a3df5659
commit 9db94e0ac8

View File

@ -109,6 +109,8 @@ def corp_member_view(request, corpid=None, year=datetime.date.today().year, mont
char = EveCharacter.objects.get(character_id=char_id) char = EveCharacter.objects.get(character_id=char_id)
char_owner = char.user char_owner = char.user
try: try:
if not char_owner:
raise AttributeError("Character has no assigned user.")
mainid = int(AuthServicesInfo.objects.get_or_create(user=char_owner)[0].main_char_id) mainid = int(AuthServicesInfo.objects.get_or_create(user=char_owner)[0].main_char_id)
mainchar = EveCharacter.objects.get(character_id=mainid) mainchar = EveCharacter.objects.get(character_id=mainid)
mainname = mainchar.character_name mainname = mainchar.character_name
@ -116,12 +118,22 @@ def corp_member_view(request, corpid=None, year=datetime.date.today().year, mont
maincorpid = mainchar.corporation_id maincorpid = mainchar.corporation_id
api_pair = EveApiKeyPair.objects.get(api_id=char.api_id) api_pair = EveApiKeyPair.objects.get(api_id=char.api_id)
except (ValueError, EveCharacter.DoesNotExist, EveApiKeyPair.DoesNotExist): except (ValueError, EveCharacter.DoesNotExist, EveApiKeyPair.DoesNotExist):
logger.info("No main character seem to be set for character %s" % char.character_name) logger.debug("No main character seem to be set for character %s" % char.character_name)
mainname = "User: " + char_owner.username mainname = "User: " + char_owner.username
mainchar = char mainchar = char
maincorp = "Not set." maincorp = "Not set."
maincorpid = None maincorpid = None
api_pair = None api_pair = None
except AttributeError:
logger.debug("No associated user for character %s" % char.character_name)
mainname = None
mainchar = None
maincorp = None
maincorpid = None
try:
api_pair = EveApiKeyPair.objects.get(api_id=char.api_id)
except EveApiKeyPair.DoesNotExist:
api_pair = None
num_registered_characters += 1 num_registered_characters += 1
characters_with_api.setdefault(mainname, Player(main=mainchar, characters_with_api.setdefault(mainname, Player(main=mainchar,
user=char_owner, user=char_owner,
@ -139,9 +151,11 @@ def corp_member_view(request, corpid=None, year=datetime.date.today().year, mont
for char in EveCharacter.objects.filter(corporation_id=corpid): for char in EveCharacter.objects.filter(corporation_id=corpid):
if not int(char.character_id) in member_list: if not int(char.character_id) in member_list:
logger.info("Character '%s' does not exist in EveWho dump." % char.character_name) logger.debug("Character '%s' does not exist in EveWho dump." % char.character_name)
char_owner = char.user char_owner = char.user
try: try:
if not char_owner:
raise AttributeError("Character has no assigned user.")
mainid = int(AuthServicesInfo.objects.get_or_create(user=char_owner)[0].main_char_id) mainid = int(AuthServicesInfo.objects.get_or_create(user=char_owner)[0].main_char_id)
mainchar = EveCharacter.objects.get(character_id=mainid) mainchar = EveCharacter.objects.get(character_id=mainid)
mainname = mainchar.character_name mainname = mainchar.character_name
@ -149,12 +163,22 @@ def corp_member_view(request, corpid=None, year=datetime.date.today().year, mont
maincorpid = mainchar.corporation_id maincorpid = mainchar.corporation_id
api_pair = EveApiKeyPair.objects.get(api_id=char.api_id) api_pair = EveApiKeyPair.objects.get(api_id=char.api_id)
except (ValueError, EveCharacter.DoesNotExist, EveApiKeyPair.DoesNotExist): except (ValueError, EveCharacter.DoesNotExist, EveApiKeyPair.DoesNotExist):
logger.info("No main character seem to be set for character %s" % char.character_name) logger.debug("No main character seem to be set for character %s" % char.character_name)
mainname = "User: " + char_owner.username mainname = "User: " + char_owner.username
mainchar = char mainchar = char
maincorp = "Not set." maincorp = "Not set."
maincorpid = None maincorpid = None
api_pair = None api_pair = None
except AttributeError:
logger.debug("No associated user for character %s" % char.character_name)
mainname = None
mainchar = None
maincorp = None
maincorpid = None
try:
api_pair = EveApiKeyPair.objects.get(api_id=char.api_id)
except EveApiKeyPair.DoesNotExist:
api_pair = None
num_registered_characters += 1 num_registered_characters += 1
characters_with_api.setdefault(mainname, Player(main=mainchar, characters_with_api.setdefault(mainname, Player(main=mainchar,
user=char_owner, user=char_owner,