mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 12:30:15 +02:00
91 lines
1.7 KiB
Python
91 lines
1.7 KiB
Python
"""
|
|
Alliance Auth User API
|
|
"""
|
|
|
|
from typing import Optional
|
|
|
|
from django.contrib.auth.models import User
|
|
|
|
from allianceauth.authentication.models import CharacterOwnership
|
|
from allianceauth.eveonline.models import EveCharacter
|
|
|
|
|
|
def get_all_characters_from_user(user: User) -> list:
|
|
"""
|
|
Get all characters from a user or an empty list
|
|
when no characters are found for the user or the user is None
|
|
|
|
:param user:
|
|
:type user:
|
|
:return:
|
|
:rtype:
|
|
"""
|
|
|
|
if user is None:
|
|
return []
|
|
|
|
try:
|
|
characters = [
|
|
char.character for char in CharacterOwnership.objects.filter(user=user)
|
|
]
|
|
except AttributeError:
|
|
return []
|
|
|
|
return characters
|
|
|
|
|
|
def get_main_character_from_user(user: User) -> Optional[EveCharacter]:
|
|
"""
|
|
Get the main character from a user
|
|
|
|
:param user:
|
|
:type user:
|
|
:return:
|
|
:rtype:
|
|
"""
|
|
|
|
if user is None:
|
|
return None
|
|
|
|
try:
|
|
main_character = user.profile.main_character
|
|
except AttributeError:
|
|
return None
|
|
|
|
return main_character
|
|
|
|
|
|
def get_main_character_name_from_user(user: User) -> str:
|
|
"""
|
|
Get the main character name from a user
|
|
|
|
:param user:
|
|
:type user:
|
|
:return:
|
|
:rtype:
|
|
"""
|
|
|
|
if user is None:
|
|
sentinel_user = get_sentinel_user()
|
|
|
|
return sentinel_user.username
|
|
|
|
main_character = get_main_character_from_user(user=user)
|
|
|
|
try:
|
|
username = main_character.character_name
|
|
except AttributeError:
|
|
return str(user)
|
|
|
|
return username
|
|
|
|
|
|
def get_sentinel_user() -> User:
|
|
"""
|
|
Get the sentinel user or create one
|
|
|
|
:return:
|
|
"""
|
|
|
|
return User.objects.get_or_create(username="deleted")[0]
|