mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-07 07:36:20 +01:00
Merged with R4stl1n master
Had to resolve a small conflict in email. Replaced mine with upstream.
This commit is contained in:
@@ -15,7 +15,29 @@ from authentication.models import AuthServicesInfo
|
||||
from eveonline.managers import EveManager
|
||||
from services.managers.eve_api_manager import EveApiManager
|
||||
from util.common_task import deactivate_services
|
||||
from util import add_member_permission
|
||||
from util import remove_member_permission
|
||||
from util import check_if_user_has_permission
|
||||
from util.common_task import add_user_to_group
|
||||
from util.common_task import remove_user_from_group
|
||||
from util.common_task import generate_corp_group_name
|
||||
from eveonline.models import EveCharacter
|
||||
from eveonline.models import EveCorporationInfo
|
||||
from authentication.managers import AuthServicesInfoManager
|
||||
|
||||
def disable_alliance_member(user, char_id):
|
||||
remove_member_permission(user, 'member')
|
||||
remove_user_from_group(user, settings.DEFAULT_AUTH_GROUP)
|
||||
remove_user_from_group(user,
|
||||
generate_corp_group_name(
|
||||
EveManager.get_character_by_id(char_id).corporation_name))
|
||||
deactivate_services(user)
|
||||
|
||||
def disable_blue_member(user):
|
||||
remove_member_permission(user, 'blue_member')
|
||||
remove_user_from_group(user, settings.DEFAULT_BLUE_GROUP)
|
||||
deactivate_services(user)
|
||||
AuthServicesInfoManager.update_is_blue(False, user)
|
||||
|
||||
def update_jabber_groups(user):
|
||||
syncgroups = SyncGroupCache.objects.filter(user=user)
|
||||
@@ -195,6 +217,8 @@ def run_api_refresh():
|
||||
print 'Running update on user: ' + user.username
|
||||
if authserviceinfo.main_char_id:
|
||||
if authserviceinfo.main_char_id != "":
|
||||
#preserve old corp ID for corp change test on members
|
||||
oldcorp_id = EveCharacter.objects.get(character_id=authserviceinfo.main_char_id).corporation_id
|
||||
for api_key_pair in api_key_pairs:
|
||||
print 'Running on ' + api_key_pair.api_id + ':' + api_key_pair.api_key
|
||||
if EveApiManager.api_key_is_valid(api_key_pair.api_id, api_key_pair.api_key):
|
||||
@@ -211,49 +235,110 @@ def run_api_refresh():
|
||||
# Check our main character
|
||||
character = EveManager.get_character_by_id(authserviceinfo.main_char_id)
|
||||
corp = EveManager.get_corporation_info_by_id(character.corporation_id)
|
||||
main_corp_id = EveManager.get_charater_corporation_id_by_id(authserviceinfo.main_char_id)
|
||||
main_alliance_id = EveManager.get_charater_alliance_id_by_id(authserviceinfo.main_char_id)
|
||||
if main_alliance_id == settings.ALLIANCE_ID:
|
||||
pass
|
||||
if (settings.IS_CORP and main_corp_id == settings.CORP_ID) or (not settings.IS_CORP and main_alliance_id == settings.ALLIANCE_ID):
|
||||
if not check_if_user_has_permission(user, "member"):
|
||||
#transition from none or blue to member
|
||||
if check_if_user_has_permission(user, "blue_member"):
|
||||
#strip blue status
|
||||
remove_member_permission(user, "blue_member")
|
||||
remove_user_from_group(user, settings.DEFAULT_BLUE_GROUP)
|
||||
AuthServicesInfoManager.update_is_blue(False, user)
|
||||
#add to auth group
|
||||
add_member_permission(user, "member")
|
||||
add_user_to_group(user, settings.DEFAULT_AUTH_GROUP)
|
||||
#add to required corp group
|
||||
add_user_to_group(user, generate_corp_group_name(character.corporation_name))
|
||||
elif corp.corporation_id != oldcorp_id:
|
||||
#changed corps, both corps auth'd, need to change group assignment
|
||||
oldcorp = EveCorporationInfo.objects.get(corporation_id=oldcorp_id)
|
||||
remove_user_from_group(user, generate_corp_group_name(oldcorp.corporation_name))
|
||||
add_user_to_group(user, generate_corp_group_name(character.corporation_name))
|
||||
#reset services to force new mumble names and group assignments
|
||||
deactivate_services(user)
|
||||
elif corp is not None:
|
||||
if corp.is_blue is not True:
|
||||
if check_if_user_has_permission(user, "member"):
|
||||
#transition from member to nobody
|
||||
disable_alliance_member(user, authserviceinfo.main_char_id)
|
||||
elif check_if_user_has_permission(user, "blue_member"):
|
||||
#transition from blue to nobody
|
||||
disable_blue_member(user)
|
||||
else:
|
||||
#stay nobody, make sure no services
|
||||
deactivate_services(user)
|
||||
else:
|
||||
if check_if_user_has_permission(user, "member"):
|
||||
#remove auth member to prepare for member to blue transition
|
||||
disable_alliance_member(user, authserviceinfo.main_char_id)
|
||||
if not check_if_user_has_permission(user, "blue_member"):
|
||||
#perform nobody to blue transition
|
||||
add_member_permission(user, "blue_member")
|
||||
add_user_to_group(user, settings.DEFAULT_BLUE_GROUP)
|
||||
AuthServicesInfoManager.update_is_blue(True, user)
|
||||
|
||||
else:
|
||||
# disable accounts with missing corp model (not blue or member)
|
||||
if check_if_user_has_permission(user, "member"):
|
||||
disable_alliance_member(user, authserviceinfo.main_char_id)
|
||||
elif check_if_user_has_permission(user, "blue_member"):
|
||||
disable_blue_member(user)
|
||||
else:
|
||||
deactivate_services(user)
|
||||
|
||||
else:
|
||||
# disable accounts with invalid keys
|
||||
if check_if_user_has_permission(user, "member"):
|
||||
disable_alliance_member(user, authserviceinfo.main_char_id)
|
||||
elif check_if_user_has_permission(user, "blue_member"):
|
||||
disable_blue_member(user)
|
||||
else:
|
||||
deactivate_services(user)
|
||||
else:
|
||||
# nuke it
|
||||
deactivate_services(user)
|
||||
|
||||
else:
|
||||
print 'No main_char_id set'
|
||||
|
||||
|
||||
# Run Every 2 hours
|
||||
@periodic_task(run_every=crontab(minute=0, hour="*/2"))
|
||||
def run_alliance_corp_update():
|
||||
def run_corp_update():
|
||||
# I am not proud of this block of code
|
||||
if EveApiManager.check_if_api_server_online():
|
||||
|
||||
# Updated alliance info
|
||||
alliance_info = EveApiManager.get_alliance_information(settings.ALLIANCE_ID)
|
||||
|
||||
# Populate alliance info
|
||||
if not EveManager.check_if_alliance_exists_by_id(settings.ALLIANCE_ID):
|
||||
EveManager.create_alliance_info(settings.ALLIANCE_ID, alliance_info['name'], alliance_info['ticker'],
|
||||
alliance_info['executor_id'], alliance_info['member_count'], False)
|
||||
|
||||
alliance = EveManager.get_alliance_info_by_id(settings.ALLIANCE_ID)
|
||||
|
||||
# Create the corps in the alliance
|
||||
for alliance_corp in alliance_info['member_corps']:
|
||||
corpinfo = EveApiManager.get_corporation_information(alliance_corp)
|
||||
if settings.IS_CORP:
|
||||
# Create the corp
|
||||
corpinfo = EveApiManager.get_corporation_information(settings.CORP_ID)
|
||||
if not EveManager.check_if_corporation_exists_by_id(corpinfo['id']):
|
||||
EveManager.create_corporation_info(corpinfo['id'], corpinfo['name'], corpinfo['ticker'],
|
||||
corpinfo['members']['current'], False, alliance)
|
||||
corpinfo['members']['current'], False, None)
|
||||
else:
|
||||
# Updated alliance info
|
||||
alliance_info = EveApiManager.get_alliance_information(settings.ALLIANCE_ID)
|
||||
|
||||
# Populate alliance info
|
||||
if not EveManager.check_if_alliance_exists_by_id(settings.ALLIANCE_ID):
|
||||
EveManager.create_alliance_info(settings.ALLIANCE_ID, alliance_info['name'], alliance_info['ticker'],
|
||||
alliance_info['executor_id'], alliance_info['member_count'], False)
|
||||
alliance = EveManager.get_alliance_info_by_id(settings.ALLIANCE_ID)
|
||||
# Create the corps in the alliance
|
||||
for alliance_corp in alliance_info['member_corps']:
|
||||
corpinfo = EveApiManager.get_corporation_information(alliance_corp)
|
||||
if not EveManager.check_if_corporation_exists_by_id(corpinfo['id']):
|
||||
EveManager.create_corporation_info(corpinfo['id'], corpinfo['name'], corpinfo['ticker'],
|
||||
corpinfo['members']['current'], False, alliance)
|
||||
|
||||
#determine what level of standings to check
|
||||
#refer to https://github.com/eve-val/evelink/blob/master/evelink/parsing/contact_list.py#L43
|
||||
standing_level = 'alliance'
|
||||
if settings.IS_CORP:
|
||||
standing_level = 'corp'
|
||||
|
||||
# Create the corps in the standings
|
||||
alliance_standings = EveApiManager.get_alliance_standings()
|
||||
if alliance_standings:
|
||||
for standing_id in EveApiManager.get_alliance_standings()['alliance']:
|
||||
if int(alliance_standings['alliance'][standing_id]['standing']) >= settings.ALLIANCE_BLUE_STANDING:
|
||||
corp_standings = EveApiManager.get_corp_standings()
|
||||
if corp_standings:
|
||||
for standing_id in EveApiManager.get_corp_standings()[standing_level]:
|
||||
if int(corp_standings[standing_level][standing_id]['standing']) >= settings.BLUE_STANDING:
|
||||
if EveApiManager.check_if_id_is_character(standing_id):
|
||||
pass
|
||||
elif EveApiManager.check_if_id_is_corp(standing_id):
|
||||
@@ -283,22 +368,16 @@ def run_alliance_corp_update():
|
||||
# Update all allinace info's
|
||||
for all_alliance_info in EveManager.get_all_alliance_info():
|
||||
all_alliance_api_info = EveApiManager.get_alliance_information(all_alliance_info.alliance_id)
|
||||
if all_alliance_info.alliance_id == settings.ALLIANCE_ID:
|
||||
if (not settings.IS_CORP and all_alliance_info.alliance_id == settings.ALLIANCE_ID):
|
||||
EveManager.update_alliance_info(all_alliance_api_info['id'], all_alliance_api_info['executor_id'],
|
||||
all_alliance_api_info['member_count'], False)
|
||||
else:
|
||||
if 'alliance' in alliance_standings:
|
||||
if int(all_alliance_info.alliance_id) in alliance_standings['alliance']:
|
||||
if int(alliance_standings['alliance'][int(all_alliance_info.alliance_id)][
|
||||
'standing']) >= settings.ALLIANCE_BLUE_STANDING:
|
||||
EveManager.update_alliance_info(all_alliance_api_info['id'],
|
||||
all_alliance_api_info['executor_id'],
|
||||
all_alliance_api_info['member_count'], True)
|
||||
else:
|
||||
EveManager.update_alliance_info(all_alliance_api_info['id'],
|
||||
all_alliance_api_info['executor_id'],
|
||||
all_alliance_api_info['member_count'], False)
|
||||
|
||||
elif standing_level in corp_standings:
|
||||
if int(all_alliance_info.alliance_id) in corp_standings[standing_level]:
|
||||
if int(corp_standings[standing_level][int(all_alliance_info.alliance_id)][
|
||||
'standing']) >= settings.BLUE_STANDING:
|
||||
EveManager.update_alliance_info(all_alliance_api_info['id'],
|
||||
all_alliance_api_info['executor_id'],
|
||||
all_alliance_api_info['member_count'], True)
|
||||
else:
|
||||
EveManager.update_alliance_info(all_alliance_api_info['id'],
|
||||
all_alliance_api_info['executor_id'],
|
||||
@@ -307,6 +386,10 @@ def run_alliance_corp_update():
|
||||
EveManager.update_alliance_info(all_alliance_api_info['id'],
|
||||
all_alliance_api_info['executor_id'],
|
||||
all_alliance_api_info['member_count'], False)
|
||||
else:
|
||||
EveManager.update_alliance_info(all_alliance_api_info['id'],
|
||||
all_alliance_api_info['executor_id'],
|
||||
all_alliance_api_info['member_count'], False)
|
||||
|
||||
# Update corp infos
|
||||
for all_corp_info in EveManager.get_all_corporation_info():
|
||||
@@ -317,46 +400,42 @@ def run_alliance_corp_update():
|
||||
|
||||
if alliance is not None and all_corp_info.alliance is not None:
|
||||
|
||||
if all_corp_info.alliance.alliance_id == settings.ALLIANCE_ID:
|
||||
if (not settings.IS_CORP) and (all_corp_info.alliance.alliance_id == settings.ALLIANCE_ID):
|
||||
EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], alliance, False)
|
||||
else:
|
||||
if int(alliance.alliance_id) in alliance_standings['alliance']:
|
||||
if int(alliance_standings['alliance'][int(alliance.alliance_id)][
|
||||
'standing']) >= settings.ALLIANCE_BLUE_STANDING:
|
||||
EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], alliance,
|
||||
True)
|
||||
else:
|
||||
EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], alliance,
|
||||
False)
|
||||
elif int(alliance.alliance_id) in corp_standings[standing_level]:
|
||||
if int(corp_standings[standing_level][int(alliance.alliance_id)][
|
||||
'standing']) >= settings.BLUE_STANDING:
|
||||
EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], alliance,
|
||||
True)
|
||||
else:
|
||||
EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], alliance,
|
||||
False)
|
||||
else:
|
||||
EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], alliance,
|
||||
False)
|
||||
else:
|
||||
if int(all_corp_info.corporation_id) in alliance_standings['alliance']:
|
||||
if int(alliance_standings['alliance'][int(all_corp_info.corporation_id)][
|
||||
'standing']) >= settings.ALLIANCE_BLUE_STANDING:
|
||||
if int(all_corp_info.corporation_id) in corp_standings[standing_level]:
|
||||
if int(corp_standings[standing_level][int(all_corp_info.corporation_id)][
|
||||
'standing']) >= settings.BLUE_STANDING:
|
||||
EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], None, True)
|
||||
else:
|
||||
EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], None, False)
|
||||
else:
|
||||
EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], None, False)
|
||||
|
||||
# Nuke the none believers
|
||||
# Remove irrelevent corp and alliance models
|
||||
# Check the corps
|
||||
for all_corp_info in EveManager.get_all_corporation_info():
|
||||
if all_corp_info.alliance is not None:
|
||||
if all_corp_info.alliance.alliance_id is not None:
|
||||
if all_corp_info.alliance.alliance_id != settings.ALLIANCE_ID:
|
||||
if not all_corp_info.is_blue:
|
||||
all_corp_info.delete()
|
||||
else:
|
||||
if (settings.IS_CORP and all_corp_info.corporation_id != settings.CORP_ID) or (not settings.IS_CORP and all_corp_info.alliance_id != settings.ALLIANCE_ID):
|
||||
if not all_corp_info.is_blue:
|
||||
all_corp_info.delete()
|
||||
|
||||
# Check the alliances
|
||||
for all_alliance_info in EveManager.get_all_alliance_info():
|
||||
if all_alliance_info.alliance_id != settings.ALLIANCE_ID:
|
||||
if (not settings.IS_CORP and all_alliance_info.alliance_id != settings.ALLIANCE_ID):
|
||||
if all_alliance_info.is_blue is not True:
|
||||
all_alliance_info.delete()
|
||||
if all_alliance_info.is_blue is not True:
|
||||
all_alliance_info.delete()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user