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
|
# CORP_API_VCODE - Set this to the api vcode for the corp API key
|
||||||
# BLUE_STANDING - The lowest standings value to consider blue
|
# BLUE_STANDING - The lowest standings value to consider blue
|
||||||
# STANDING_LEVEL - The level of standings to query. Accepted values are 'corp' and 'alliance'.
|
# 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_ID = os.environ.get('AA_CORP_API_ID', '')
|
||||||
CORP_API_VCODE = os.environ.get('AA_CORP_API_VCODE', '')
|
CORP_API_VCODE = os.environ.get('AA_CORP_API_VCODE', '')
|
||||||
BLUE_STANDING = float(os.environ.get('AA_BLUE_STANDING', '5.0'))
|
BLUE_STANDING = float(os.environ.get('AA_BLUE_STANDING', '5.0'))
|
||||||
STANDING_LEVEL = os.environ.get('AA_STANDING_LEVEL', 'corp')
|
STANDING_LEVEL = os.environ.get('AA_STANDING_LEVEL', 'corp')
|
||||||
|
BLUE_CORP_IDS = []
|
||||||
|
BLUE_ALLIANCE_IDS = []
|
||||||
|
|
||||||
########################
|
########################
|
||||||
# API Configuration
|
# API Configuration
|
||||||
@ -710,7 +714,10 @@ if ENABLE_AUTH_IPS4 or ENABLE_BLUE_IPS4:
|
|||||||
# Ensure corp/alliance IDs are expected types
|
# Ensure corp/alliance IDs are expected types
|
||||||
STR_CORP_IDS = [str(id) for id in CORP_IDS]
|
STR_CORP_IDS = [str(id) for id in CORP_IDS]
|
||||||
STR_ALLIANCE_IDS = [str(id) for id in ALLIANCE_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:
|
if 'services.modules.teamspeak3' in INSTALLED_APPS:
|
||||||
CELERYBEAT_SCHEDULE['run_ts3_group_update'] = {
|
CELERYBEAT_SCHEDULE['run_ts3_group_update'] = {
|
||||||
'task': 'services.modules.teamspeak3.tasks.Teamspeak3Tasks.run_ts3_group_update',
|
'task': 'services.modules.teamspeak3.tasks.Teamspeak3Tasks.run_ts3_group_update',
|
||||||
|
@ -30,16 +30,16 @@ class EveManager(object):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create_character_obj(character, user, api_id):
|
def create_character_obj(character, user, api_id):
|
||||||
EveCharacter.objects.create(
|
return EveCharacter.objects.create(
|
||||||
character_id = character.id,
|
character_id=character.id,
|
||||||
character_name = character.name,
|
character_name=character.name,
|
||||||
corporation_id = character.corp.id,
|
corporation_id=character.corp.id,
|
||||||
corporation_name = character.corp.name,
|
corporation_name=character.corp.name,
|
||||||
corporation_ticker = character.corp.ticker,
|
corporation_ticker=character.corp.ticker,
|
||||||
alliance_id = character.alliance.id,
|
alliance_id=character.alliance.id,
|
||||||
alliance_name = character.alliance.name,
|
alliance_name=character.alliance.name,
|
||||||
user = user,
|
user=user,
|
||||||
api_id = api_id,
|
api_id=api_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -56,6 +56,7 @@ class EveManager(object):
|
|||||||
model.alliance_id = char.alliance.id
|
model.alliance_id = char.alliance.id
|
||||||
model.alliance_name = char.alliance.name
|
model.alliance_name = char.alliance.name
|
||||||
model.save()
|
model.save()
|
||||||
|
return model
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create_api_keypair(api_id, api_key, user_id):
|
def create_api_keypair(api_id, api_key, user_id):
|
||||||
@ -80,12 +81,12 @@ class EveManager(object):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create_alliance_obj(alliance, is_blue=False):
|
def create_alliance_obj(alliance, is_blue=False):
|
||||||
EveAllianceInfo.objects.create(
|
return EveAllianceInfo.objects.create(
|
||||||
alliance_id = alliance.id,
|
alliance_id=alliance.id,
|
||||||
alliance_name = alliance.name,
|
alliance_name=alliance.name,
|
||||||
alliance_ticker = alliance.ticker,
|
alliance_ticker=alliance.ticker,
|
||||||
executor_corp_id = alliance.executor_corp_id,
|
executor_corp_id=alliance.executor_corp_id,
|
||||||
is_blue = is_blue,
|
is_blue=is_blue,
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -96,8 +97,9 @@ class EveManager(object):
|
|||||||
def update_alliance_obj(alliance, is_blue=None):
|
def update_alliance_obj(alliance, is_blue=None):
|
||||||
model = EveAllianceInfo.objects.get(alliance_id=alliance.id)
|
model = EveAllianceInfo.objects.get(alliance_id=alliance.id)
|
||||||
model.executor_corp_id = alliance.executor_corp_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()
|
model.save()
|
||||||
|
return model
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def populate_alliance(id):
|
def populate_alliance(id):
|
||||||
@ -107,7 +109,10 @@ class EveManager(object):
|
|||||||
if not EveCorporationInfo.objects.filter(corporation_id=corp_id).exists():
|
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(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
|
@classmethod
|
||||||
def get_corporation(cls, corp_id):
|
def get_corporation(cls, corp_id):
|
||||||
@ -123,13 +128,13 @@ class EveManager(object):
|
|||||||
alliance = EveAllianceInfo.objects.get(alliance_id=corp.alliance_id)
|
alliance = EveAllianceInfo.objects.get(alliance_id=corp.alliance_id)
|
||||||
except EveAllianceInfo.DoesNotExist:
|
except EveAllianceInfo.DoesNotExist:
|
||||||
alliance = None
|
alliance = None
|
||||||
EveCorporationInfo.objects.create(
|
return EveCorporationInfo.objects.create(
|
||||||
corporation_id = corp.id,
|
corporation_id=corp.id,
|
||||||
corporation_name = corp.name,
|
corporation_name=corp.name,
|
||||||
corporation_ticker = corp.ticker,
|
corporation_ticker=corp.ticker,
|
||||||
member_count = corp.members,
|
member_count=corp.members,
|
||||||
alliance = alliance,
|
alliance=alliance,
|
||||||
is_blue = is_blue,
|
is_blue=is_blue,
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -144,8 +149,9 @@ class EveManager(object):
|
|||||||
model.alliance = EveAllianceInfo.objects.get(alliance_id=corp.alliance_id)
|
model.alliance = EveAllianceInfo.objects.get(alliance_id=corp.alliance_id)
|
||||||
except EveAllianceInfo.DoesNotExist:
|
except EveAllianceInfo.DoesNotExist:
|
||||||
model.alliance = None
|
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()
|
model.save()
|
||||||
|
return model
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_itemtype(cls, type_id):
|
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 EveCharacter
|
||||||
from eveonline.models import EveCorporationInfo
|
from eveonline.models import EveCorporationInfo
|
||||||
from eveonline.models import EveAllianceInfo
|
from eveonline.models import EveAllianceInfo
|
||||||
|
from eveonline.providers import eve_adapter_factory, ObjectNotFound
|
||||||
from authentication.tasks import set_state
|
from authentication.tasks import set_state
|
||||||
import logging
|
import logging
|
||||||
import evelink
|
import evelink
|
||||||
@ -101,12 +102,13 @@ def run_api_refresh():
|
|||||||
|
|
||||||
|
|
||||||
@task
|
@task
|
||||||
def update_corp(id):
|
def update_corp(id, is_blue=None):
|
||||||
EveManager.update_corporation(id)
|
EveManager.update_corporation(id, is_blue=is_blue)
|
||||||
|
|
||||||
|
|
||||||
@task
|
@task
|
||||||
def update_alliance(id):
|
def update_alliance(id, is_blue=None):
|
||||||
EveManager.update_alliance(id)
|
EveManager.update_alliance(id, is_blue=is_blue)
|
||||||
EveManager.populate_alliance(id)
|
EveManager.populate_alliance(id)
|
||||||
|
|
||||||
|
|
||||||
@ -117,27 +119,37 @@ def run_corp_update():
|
|||||||
return
|
return
|
||||||
|
|
||||||
# generate member corps
|
# generate member corps
|
||||||
for corp_id in settings.STR_CORP_IDS:
|
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():
|
if EveCorporationInfo.objects.filter(corporation_id=corp_id).exists():
|
||||||
update_corp(corp_id)
|
update_corp(corp_id, is_blue=is_blue)
|
||||||
else:
|
else:
|
||||||
EveManager.create_corporation(corp_id)
|
EveManager.create_corporation(corp_id, is_blue=is_blue)
|
||||||
|
except ObjectNotFound:
|
||||||
|
logger.warn('Bad corp ID in settings: %s' % corp_id)
|
||||||
|
|
||||||
# generate member alliances
|
# generate member alliances
|
||||||
for alliance_id in settings.STR_ALLIANCE_IDS:
|
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():
|
if EveAllianceInfo.objects.filter(alliance_id=alliance_id).exists():
|
||||||
logger.debug("Updating existing owner alliance model with id %s" % alliance_id)
|
logger.debug("Updating existing owner alliance model with id %s" % alliance_id)
|
||||||
update_alliance(alliance_id)
|
update_alliance(alliance_id, is_blue=is_blue)
|
||||||
else:
|
else:
|
||||||
EveManager.create_alliance(alliance_id)
|
EveManager.create_alliance(alliance_id, is_blue=is_blue)
|
||||||
EveManager.populate_alliance(alliance_id)
|
EveManager.populate_alliance(alliance_id)
|
||||||
|
except ObjectNotFound:
|
||||||
|
logger.warn('Bad alliance ID in settings: %s' % alliance_id)
|
||||||
|
|
||||||
# update existing corp models
|
# 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_corp.delay(corp.corporation_id)
|
||||||
|
|
||||||
# update existing alliance models
|
# 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)
|
update_alliance.delay(alliance.alliance_id)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -177,7 +189,7 @@ def run_corp_update():
|
|||||||
logger.info("Alliance %s no longer meets minimum blue standing threshold" % alliance)
|
logger.info("Alliance %s no longer meets minimum blue standing threshold" % alliance)
|
||||||
alliance.is_blue = False
|
alliance.is_blue = False
|
||||||
alliance.save()
|
alliance.save()
|
||||||
else:
|
elif alliance.alliance_id not in settings.STR_BLUE_ALLIANCE_IDS:
|
||||||
logger.info("Alliance %s no longer in standings" % alliance)
|
logger.info("Alliance %s no longer in standings" % alliance)
|
||||||
alliance.is_blue = False
|
alliance.is_blue = False
|
||||||
alliance.save()
|
alliance.save()
|
||||||
@ -189,7 +201,7 @@ def run_corp_update():
|
|||||||
logger.info("Corp %s no longer meets minimum blue standing threshold" % corp)
|
logger.info("Corp %s no longer meets minimum blue standing threshold" % corp)
|
||||||
corp.is_blue = False
|
corp.is_blue = False
|
||||||
corp.save()
|
corp.save()
|
||||||
else:
|
elif corp.corporation_id not in settings.STR_BLUE_CORP_IDS:
|
||||||
if corp.alliance:
|
if corp.alliance:
|
||||||
if not corp.alliance.is_blue:
|
if not corp.alliance.is_blue:
|
||||||
logger.info("Corp %s and its alliance %s are no longer blue" % (corp, corp.alliance))
|
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)
|
logger.error("Model update failed with error code %s" % e.code)
|
||||||
|
|
||||||
# delete unnecessary alliance models
|
# delete unnecessary alliance models
|
||||||
for alliance in EveAllianceInfo.objects.filter(is_blue=False):
|
EveAllianceInfo.objects.filter(is_blue=False).exclude(alliance_id__in=settings.STR_ALLIANCE_IDS).delete()
|
||||||
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()
|
|
||||||
|
|
||||||
# delete unnecessary corp models
|
# delete unnecessary corp models
|
||||||
for corp in EveCorporationInfo.objects.filter(is_blue=False):
|
EveCorporationInfo.objects.filter(is_blue=False).exclude(corporation_id__in=settings.STR_CORP_IDS).exclude(
|
||||||
logger.debug("Checking to delete corp %s" % corp)
|
alliance__alliance_id__in=settings.STR_ALLIANCE_IDS).delete()
|
||||||
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()
|
|
||||||
|
@ -190,7 +190,7 @@ class EveApiManager:
|
|||||||
logger.debug("Got corp standings from settings: %s" % results)
|
logger.debug("Got corp standings from settings: %s" % results)
|
||||||
return results
|
return results
|
||||||
else:
|
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 {}
|
return {}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
Loading…
x
Reference in New Issue
Block a user