Ensure populate alliance is called on create

This commit is contained in:
Basraah 2017-09-25 10:14:26 +10:00
parent 941bcd3cd1
commit d93f36a180
4 changed files with 11 additions and 8 deletions

View File

@ -46,7 +46,9 @@ class EveAllianceManager(models.Manager):
provider = EveAllianceProviderManager() provider = EveAllianceProviderManager()
def create_alliance(self, alliance_id): def create_alliance(self, alliance_id):
return self.create_alliance_obj(self.provider.get_alliance(alliance_id)) obj = self.create_alliance_obj(self.provider.get_alliance(alliance_id))
obj.populate_alliance()
return obj
def create_alliance_obj(self, alliance: providers.Alliance): def create_alliance_obj(self, alliance: providers.Alliance):
return self.create( return self.create(

View File

@ -43,14 +43,13 @@ class EveAllianceInfo(models.Model):
objects = EveAllianceManager() objects = EveAllianceManager()
provider = EveAllianceProviderManager() provider = EveAllianceProviderManager()
def populate_alliance(self, alliance_id): def populate_alliance(self):
alliance_model = self.objects.get(alliance_id=alliance_id) alliance = self.provider.get_alliance(self.alliance_id)
alliance = self.objects.get_alliance(alliance_id)
for corp_id in alliance.corp_ids: for corp_id in alliance.corp_ids:
if not EveCorporationInfo.objects.filter(corporation_id=corp_id).exists(): if not EveCorporationInfo.objects.filter(corporation_id=corp_id).exists():
EveCorporationInfo.objects.create_corporation(corp_id) EveCorporationInfo.objects.create_corporation(corp_id)
EveCorporationInfo.objects.filter(corporation_id__in=alliance.corp_ids).update(alliance=alliance_model) EveCorporationInfo.objects.filter(corporation_id__in=alliance.corp_ids).update(alliance=self)
EveCorporationInfo.objects.filter(alliance=alliance_model).exclude(corporation_id__in=alliance.corp_ids).update( EveCorporationInfo.objects.filter(alliance=self).exclude(corporation_id__in=alliance.corp_ids).update(
alliance=None) alliance=None)
def update_alliance(self, alliance: providers.Alliance = None): def update_alliance(self, alliance: providers.Alliance = None):

View File

@ -15,7 +15,7 @@ def update_corp(corp_id):
@app.task @app.task
def update_alliance(alliance_id): def update_alliance(alliance_id):
EveAllianceInfo.objects.update_alliance(alliance_id).populate_alliance(alliance_id) EveAllianceInfo.objects.update_alliance(alliance_id).populate_alliance()
@app.task @app.task

View File

@ -106,8 +106,9 @@ class EveAllianceManagerTestCase(TestCase):
def corp(self, id): def corp(self, id):
return self._corps[id] return self._corps[id]
@mock.patch('allianceauth.eveonline.models.EveAllianceInfo.populate_alliance')
@mock.patch('allianceauth.eveonline.managers.providers.provider') @mock.patch('allianceauth.eveonline.managers.providers.provider')
def test_create_alliance(self, provider): def test_create_alliance(self, provider, populate_alliance):
# Also covers create_alliance_obj # Also covers create_alliance_obj
expected = self.TestAlliance(id='3456', name='Test Alliance', ticker='TEST', expected = self.TestAlliance(id='3456', name='Test Alliance', ticker='TEST',
corp_ids=['2345'], executor_corp_id='2345') corp_ids=['2345'], executor_corp_id='2345')
@ -120,6 +121,7 @@ class EveAllianceManagerTestCase(TestCase):
self.assertEqual(result.alliance_name, expected.name) self.assertEqual(result.alliance_name, expected.name)
self.assertEqual(result.alliance_ticker, expected.ticker) self.assertEqual(result.alliance_ticker, expected.ticker)
self.assertEqual(result.executor_corp_id, expected.executor_corp_id) self.assertEqual(result.executor_corp_id, expected.executor_corp_id)
self.assertTrue(populate_alliance.called)
@mock.patch('allianceauth.eveonline.managers.providers.provider') @mock.patch('allianceauth.eveonline.managers.providers.provider')
def test_update_alliance(self, provider): def test_update_alliance(self, provider):