From 763b3c8230cdcb3eee1f0f08ca054f37de9cc51b Mon Sep 17 00:00:00 2001 From: Raynaldo Rivera Date: Sun, 26 Oct 2014 23:33:10 -0700 Subject: [PATCH] Added the task to auto update corp and alliance info --- .idea/inspectionProfiles/Project_Default.xml | 11 +++++++ .../inspectionProfiles/profiles_settings.xml | 7 ++++ celerytask/tasks.py | 29 ++++++++++++++++- eveonline/admin.py | 7 ++-- eveonline/managers.py | 32 +++++++++++++++++-- 5 files changed, 80 insertions(+), 6 deletions(-) create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..c66df003 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 00000000..3b312839 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/celerytask/tasks.py b/celerytask/tasks.py index e0662058..9a1dded7 100644 --- a/celerytask/tasks.py +++ b/celerytask/tasks.py @@ -166,5 +166,32 @@ def run_api_refresh(): # Run Every 2 hours @periodic_task(run_every=crontab(minute=0, hour="*/2")) def run_alliance_corp_update(): - alliance_info = EveApiManager.get_alliance_information(settings.ALLIANCE_ID) + 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']) + + EveManager.update_alliance_info(settings.ALLIANCE_ID, alliance_info['executor_id'], + alliance_info['member_count']) + + 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'], alliance) + + # Update all the corps + for all_corp_info in EveManager.get_all_corporation_info(): + corpinfo = EveApiManager.get_corporation_information(all_corp_info.corporation_id) + if corpinfo['alliance']['id'] == int(settings.ALLIANCE_ID): + EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], alliance) + else: + # No longer in the alliance nuke it + all_corp_info.delete() diff --git a/eveonline/admin.py b/eveonline/admin.py index d16a1a45..d1608787 100644 --- a/eveonline/admin.py +++ b/eveonline/admin.py @@ -2,7 +2,10 @@ from django.contrib import admin from models import EveCharacter from models import EveApiKeyPair - +from models import EveAllianceInfo +from models import EveCorporationInfo admin.site.register(EveCharacter) -admin.site.register(EveApiKeyPair) \ No newline at end of file +admin.site.register(EveApiKeyPair) +admin.site.register(EveAllianceInfo) +admin.site.register(EveCorporationInfo) \ No newline at end of file diff --git a/eveonline/managers.py b/eveonline/managers.py index c00a0448..d62fd0da 100644 --- a/eveonline/managers.py +++ b/eveonline/managers.py @@ -69,7 +69,7 @@ class EveManager: @staticmethod def create_alliance_info(alliance_id, alliance_name, alliance_ticker, alliance_executor_corp_id, alliance_member_count): - if EveManager.check_if_alliance_exists_by_id(alliance_id): + if not EveManager.check_if_alliance_exists_by_id(alliance_id): alliance_info = EveAllianceInfo() alliance_info.alliance_id = alliance_id alliance_info.alliance_name = alliance_name @@ -88,7 +88,7 @@ class EveManager: @staticmethod def create_corporation_info(corp_id, corp_name, corp_ticker, corp_member_count, alliance): - if EveManager.check_if_corporation_exists_by_id(corp_id): + if not EveManager.check_if_corporation_exists_by_id(corp_id): corp_info = EveCorporationInfo() corp_info.corporation_id = corp_id corp_info.corporation_name = corp_name @@ -97,6 +97,13 @@ class EveManager: corp_info.alliance = alliance corp_info.save() + @staticmethod + def update_corporation_info(corp_id, corp_member_count, alliance): + if EveManager.check_if_corporation_exists_by_id(corp_id): + corp_info = EveCorporationInfo.objects.get(corporation_id = corp_id) + corp_info.member_count = corp_member_count + corp_info.alliance = alliance + corp_info.save() @staticmethod def get_api_key_pairs(user): @@ -171,4 +178,23 @@ class EveManager: @staticmethod def check_if_corporation_exists_by_id(corp_id): - return EveCorporationInfo.objects.filter(corporation_id=corp_id).exists() \ No newline at end of file + return EveCorporationInfo.objects.filter(corporation_id=corp_id).exists() + + @staticmethod + def get_alliance_info_by_id(alliance_id): + if EveManager.check_if_alliance_exists_by_id(alliance_id): + return EveAllianceInfo.objects.get(alliance_id=alliance_id) + else: + return None + + @staticmethod + def get_corporation_info_by_id(corp_id): + if EveManager.check_if_corporation_exists_by_id(corp_id): + return EveCorporationInfo.objects.get(corporation_id=corp_id) + else: + return None + + + @staticmethod + def get_all_corporation_info(): + return EveCorporationInfo.objects.all() \ No newline at end of file