mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-14 15:00:16 +02:00
Support static blue corps and alliances (#708)
This commit is contained in:
parent
d7291f83c3
commit
8c82897a92
@ -353,11 +353,15 @@ ALLIANCE_IDS = []
|
||||
# CORP_API_VCODE - Set this to the api vcode for the corp API key
|
||||
# BLUE_STANDING - The lowest standings value to consider blue
|
||||
# STANDING_LEVEL - The level of standings to query. Accepted values are 'corp' and 'alliance'.
|
||||
# BLUE_CORP_IDS - A list of corps to remain blue regardless of in-game standings
|
||||
# BLUE_ALLIANCE_IDS - A list of alliances to remain blue regardless of in-game standings
|
||||
########################
|
||||
CORP_API_ID = os.environ.get('AA_CORP_API_ID', '')
|
||||
CORP_API_VCODE = os.environ.get('AA_CORP_API_VCODE', '')
|
||||
BLUE_STANDING = float(os.environ.get('AA_BLUE_STANDING', '5.0'))
|
||||
STANDING_LEVEL = os.environ.get('AA_STANDING_LEVEL', 'corp')
|
||||
BLUE_CORP_IDS = []
|
||||
BLUE_ALLIANCE_IDS = []
|
||||
|
||||
########################
|
||||
# API Configuration
|
||||
@ -710,7 +714,10 @@ if ENABLE_AUTH_IPS4 or ENABLE_BLUE_IPS4:
|
||||
# Ensure corp/alliance IDs are expected types
|
||||
STR_CORP_IDS = [str(id) for id in CORP_IDS]
|
||||
STR_ALLIANCE_IDS = [str(id) for id in ALLIANCE_IDS]
|
||||
STR_BLUE_CORP_IDS = [str(id) for id in BLUE_CORP_IDS]
|
||||
STR_BLUE_ALLIANCE_IDS = [str(id) for id in BLUE_ALLIANCE_IDS]
|
||||
|
||||
# Conditionally add periodic tasks for services if installed
|
||||
if 'services.modules.teamspeak3' in INSTALLED_APPS:
|
||||
CELERYBEAT_SCHEDULE['run_ts3_group_update'] = {
|
||||
'task': 'services.modules.teamspeak3.tasks.Teamspeak3Tasks.run_ts3_group_update',
|
||||
|
@ -30,16 +30,16 @@ class EveManager(object):
|
||||
|
||||
@staticmethod
|
||||
def create_character_obj(character, user, api_id):
|
||||
EveCharacter.objects.create(
|
||||
character_id = character.id,
|
||||
character_name = character.name,
|
||||
corporation_id = character.corp.id,
|
||||
corporation_name = character.corp.name,
|
||||
corporation_ticker = character.corp.ticker,
|
||||
alliance_id = character.alliance.id,
|
||||
alliance_name = character.alliance.name,
|
||||
user = user,
|
||||
api_id = api_id,
|
||||
return EveCharacter.objects.create(
|
||||
character_id=character.id,
|
||||
character_name=character.name,
|
||||
corporation_id=character.corp.id,
|
||||
corporation_name=character.corp.name,
|
||||
corporation_ticker=character.corp.ticker,
|
||||
alliance_id=character.alliance.id,
|
||||
alliance_name=character.alliance.name,
|
||||
user=user,
|
||||
api_id=api_id,
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
@ -56,6 +56,7 @@ class EveManager(object):
|
||||
model.alliance_id = char.alliance.id
|
||||
model.alliance_name = char.alliance.name
|
||||
model.save()
|
||||
return model
|
||||
|
||||
@staticmethod
|
||||
def create_api_keypair(api_id, api_key, user_id):
|
||||
@ -80,12 +81,12 @@ class EveManager(object):
|
||||
|
||||
@staticmethod
|
||||
def create_alliance_obj(alliance, is_blue=False):
|
||||
EveAllianceInfo.objects.create(
|
||||
alliance_id = alliance.id,
|
||||
alliance_name = alliance.name,
|
||||
alliance_ticker = alliance.ticker,
|
||||
executor_corp_id = alliance.executor_corp_id,
|
||||
is_blue = is_blue,
|
||||
return EveAllianceInfo.objects.create(
|
||||
alliance_id=alliance.id,
|
||||
alliance_name=alliance.name,
|
||||
alliance_ticker=alliance.ticker,
|
||||
executor_corp_id=alliance.executor_corp_id,
|
||||
is_blue=is_blue,
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
@ -96,8 +97,9 @@ class EveManager(object):
|
||||
def update_alliance_obj(alliance, is_blue=None):
|
||||
model = EveAllianceInfo.objects.get(alliance_id=alliance.id)
|
||||
model.executor_corp_id = alliance.executor_corp_id
|
||||
model.is_blue = model.is_blue if is_blue == None else is_blue
|
||||
model.is_blue = model.is_blue if is_blue is None else is_blue
|
||||
model.save()
|
||||
return model
|
||||
|
||||
@staticmethod
|
||||
def populate_alliance(id):
|
||||
@ -105,9 +107,12 @@ class EveManager(object):
|
||||
alliance = EveManager.get_alliance(id)
|
||||
for corp_id in alliance.corp_ids:
|
||||
if not EveCorporationInfo.objects.filter(corporation_id=corp_id).exists():
|
||||
EveManager.create_corporation(corp_id, is_blue=alliance_model.is_blue)
|
||||
EveManager.create_corporation(corp_id, is_blue=alliance_model.is_blue)
|
||||
EveCorporationInfo.objects.filter(corporation_id__in=alliance.corp_ids).update(alliance=alliance_model)
|
||||
EveCorporationInfo.objects.filter(alliance=alliance_model).exclude(corporation_id__in=alliance.corp_ids).update(alliance=None)
|
||||
EveCorporationInfo.objects.filter(alliance=alliance_model).exclude(corporation_id__in=alliance.corp_ids).update(
|
||||
alliance=None)
|
||||
if alliance_model.is_blue:
|
||||
EveCorporationInfo.objects.filter(alliance=alliance_model).update(is_blue=True)
|
||||
|
||||
@classmethod
|
||||
def get_corporation(cls, corp_id):
|
||||
@ -123,13 +128,13 @@ class EveManager(object):
|
||||
alliance = EveAllianceInfo.objects.get(alliance_id=corp.alliance_id)
|
||||
except EveAllianceInfo.DoesNotExist:
|
||||
alliance = None
|
||||
EveCorporationInfo.objects.create(
|
||||
corporation_id = corp.id,
|
||||
corporation_name = corp.name,
|
||||
corporation_ticker = corp.ticker,
|
||||
member_count = corp.members,
|
||||
alliance = alliance,
|
||||
is_blue = is_blue,
|
||||
return EveCorporationInfo.objects.create(
|
||||
corporation_id=corp.id,
|
||||
corporation_name=corp.name,
|
||||
corporation_ticker=corp.ticker,
|
||||
member_count=corp.members,
|
||||
alliance=alliance,
|
||||
is_blue=is_blue,
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
@ -144,8 +149,9 @@ class EveManager(object):
|
||||
model.alliance = EveAllianceInfo.objects.get(alliance_id=corp.alliance_id)
|
||||
except EveAllianceInfo.DoesNotExist:
|
||||
model.alliance = None
|
||||
model.is_blue = model.is_blue if is_blue == None else is_blue
|
||||
model.is_blue = model.is_blue if is_blue is None else is_blue
|
||||
model.save()
|
||||
return model
|
||||
|
||||
@classmethod
|
||||
def get_itemtype(cls, type_id):
|
||||
|
@ -12,6 +12,7 @@ from services.managers.eve_api_manager import EveApiManager
|
||||
from eveonline.models import EveCharacter
|
||||
from eveonline.models import EveCorporationInfo
|
||||
from eveonline.models import EveAllianceInfo
|
||||
from eveonline.providers import eve_adapter_factory, ObjectNotFound
|
||||
from authentication.tasks import set_state
|
||||
import logging
|
||||
import evelink
|
||||
@ -101,12 +102,13 @@ def run_api_refresh():
|
||||
|
||||
|
||||
@task
|
||||
def update_corp(id):
|
||||
EveManager.update_corporation(id)
|
||||
def update_corp(id, is_blue=None):
|
||||
EveManager.update_corporation(id, is_blue=is_blue)
|
||||
|
||||
|
||||
@task
|
||||
def update_alliance(id):
|
||||
EveManager.update_alliance(id)
|
||||
def update_alliance(id, is_blue=None):
|
||||
EveManager.update_alliance(id, is_blue=is_blue)
|
||||
EveManager.populate_alliance(id)
|
||||
|
||||
|
||||
@ -117,27 +119,37 @@ def run_corp_update():
|
||||
return
|
||||
|
||||
# generate member corps
|
||||
for corp_id in settings.STR_CORP_IDS:
|
||||
if EveCorporationInfo.objects.filter(corporation_id=corp_id).exists():
|
||||
update_corp(corp_id)
|
||||
else:
|
||||
EveManager.create_corporation(corp_id)
|
||||
for corp_id in settings.STR_CORP_IDS + settings.STR_BLUE_CORP_IDS:
|
||||
is_blue = True if corp_id in settings.STR_BLUE_CORP_IDS else False
|
||||
try:
|
||||
if EveCorporationInfo.objects.filter(corporation_id=corp_id).exists():
|
||||
update_corp(corp_id, is_blue=is_blue)
|
||||
else:
|
||||
EveManager.create_corporation(corp_id, is_blue=is_blue)
|
||||
except ObjectNotFound:
|
||||
logger.warn('Bad corp ID in settings: %s' % corp_id)
|
||||
|
||||
# generate member alliances
|
||||
for alliance_id in settings.STR_ALLIANCE_IDS:
|
||||
if EveAllianceInfo.objects.filter(alliance_id=alliance_id).exists():
|
||||
logger.debug("Updating existing owner alliance model with id %s" % alliance_id)
|
||||
update_alliance(alliance_id)
|
||||
else:
|
||||
EveManager.create_alliance(alliance_id)
|
||||
EveManager.populate_alliance(alliance_id)
|
||||
for alliance_id in settings.STR_ALLIANCE_IDS + settings.STR_BLUE_ALLIANCE_IDS:
|
||||
is_blue = True if alliance_id in settings.STR_BLUE_ALLIANCE_IDS else False
|
||||
try:
|
||||
if EveAllianceInfo.objects.filter(alliance_id=alliance_id).exists():
|
||||
logger.debug("Updating existing owner alliance model with id %s" % alliance_id)
|
||||
update_alliance(alliance_id, is_blue=is_blue)
|
||||
else:
|
||||
EveManager.create_alliance(alliance_id, is_blue=is_blue)
|
||||
EveManager.populate_alliance(alliance_id)
|
||||
except ObjectNotFound:
|
||||
logger.warn('Bad alliance ID in settings: %s' % alliance_id)
|
||||
|
||||
# update existing corp models
|
||||
for corp in EveCorporationInfo.objects.all():
|
||||
for corp in EveCorporationInfo.objects.exclude(
|
||||
corporation_id__in=settings.STR_CORP_IDS + settings.STR_BLUE_CORP_IDS):
|
||||
update_corp.delay(corp.corporation_id)
|
||||
|
||||
# update existing alliance models
|
||||
for alliance in EveAllianceInfo.objects.all():
|
||||
for alliance in EveAllianceInfo.objects.exclude(
|
||||
alliance_id__in=settings.STR_ALLIANCE_IDS + settings.STR_BLUE_ALLIANCE_IDS):
|
||||
update_alliance.delay(alliance.alliance_id)
|
||||
|
||||
try:
|
||||
@ -177,7 +189,7 @@ def run_corp_update():
|
||||
logger.info("Alliance %s no longer meets minimum blue standing threshold" % alliance)
|
||||
alliance.is_blue = False
|
||||
alliance.save()
|
||||
else:
|
||||
elif alliance.alliance_id not in settings.STR_BLUE_ALLIANCE_IDS:
|
||||
logger.info("Alliance %s no longer in standings" % alliance)
|
||||
alliance.is_blue = False
|
||||
alliance.save()
|
||||
@ -189,7 +201,7 @@ def run_corp_update():
|
||||
logger.info("Corp %s no longer meets minimum blue standing threshold" % corp)
|
||||
corp.is_blue = False
|
||||
corp.save()
|
||||
else:
|
||||
elif corp.corporation_id not in settings.STR_BLUE_CORP_IDS:
|
||||
if corp.alliance:
|
||||
if not corp.alliance.is_blue:
|
||||
logger.info("Corp %s and its alliance %s are no longer blue" % (corp, corp.alliance))
|
||||
@ -203,22 +215,8 @@ def run_corp_update():
|
||||
logger.error("Model update failed with error code %s" % e.code)
|
||||
|
||||
# delete unnecessary alliance models
|
||||
for alliance in EveAllianceInfo.objects.filter(is_blue=False):
|
||||
logger.debug("Checking to delete alliance %s" % alliance)
|
||||
if not alliance.alliance_id in settings.STR_ALLIANCE_IDS:
|
||||
logger.info("Deleting unnecessary alliance model %s" % alliance)
|
||||
alliance.delete()
|
||||
EveAllianceInfo.objects.filter(is_blue=False).exclude(alliance_id__in=settings.STR_ALLIANCE_IDS).delete()
|
||||
|
||||
# delete unnecessary corp models
|
||||
for corp in EveCorporationInfo.objects.filter(is_blue=False):
|
||||
logger.debug("Checking to delete corp %s" % corp)
|
||||
if not corp.corporation_id in settings.STR_CORP_IDS:
|
||||
logger.debug("Corp %s is not member corp" % corp)
|
||||
if corp.alliance:
|
||||
logger.debug("Corp %s has alliance %s" % (corp, corp.alliance))
|
||||
if not corp.alliance.alliance_id in settings.STR_ALLIANCE_IDS:
|
||||
logger.info("Deleting unnecessary corp model %s" % corp)
|
||||
corp.delete()
|
||||
else:
|
||||
logger.info("Deleting unnecessary corp model %s" % corp)
|
||||
corp.delete()
|
||||
EveCorporationInfo.objects.filter(is_blue=False).exclude(corporation_id__in=settings.STR_CORP_IDS).exclude(
|
||||
alliance__alliance_id__in=settings.STR_ALLIANCE_IDS).delete()
|
||||
|
@ -190,7 +190,7 @@ class EveApiManager:
|
||||
logger.debug("Got corp standings from settings: %s" % results)
|
||||
return results
|
||||
else:
|
||||
logger.warn("No corp API key supplied in settings. Unable to get standings.")
|
||||
logger.debug("No corp API key supplied in settings. Unable to get standings.")
|
||||
return {}
|
||||
|
||||
@staticmethod
|
||||
|
Loading…
x
Reference in New Issue
Block a user