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()
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):
return self.create(

View File

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

View File

@ -15,7 +15,7 @@ def update_corp(corp_id):
@app.task
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

View File

@ -106,8 +106,9 @@ class EveAllianceManagerTestCase(TestCase):
def corp(self, id):
return self._corps[id]
@mock.patch('allianceauth.eveonline.models.EveAllianceInfo.populate_alliance')
@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
expected = self.TestAlliance(id='3456', name='Test Alliance', ticker='TEST',
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_ticker, expected.ticker)
self.assertEqual(result.executor_corp_id, expected.executor_corp_id)
self.assertTrue(populate_alliance.called)
@mock.patch('allianceauth.eveonline.managers.providers.provider')
def test_update_alliance(self, provider):