From d93f36a18041485db04150c15a5ff9699c19ca67 Mon Sep 17 00:00:00 2001 From: Basraah Date: Mon, 25 Sep 2017 10:14:26 +1000 Subject: [PATCH] Ensure populate alliance is called on create --- allianceauth/eveonline/managers.py | 4 +++- allianceauth/eveonline/models.py | 9 ++++----- allianceauth/eveonline/tasks.py | 2 +- allianceauth/eveonline/tests/test_managers.py | 4 +++- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/allianceauth/eveonline/managers.py b/allianceauth/eveonline/managers.py index 10aa55d2..3e71d606 100644 --- a/allianceauth/eveonline/managers.py +++ b/allianceauth/eveonline/managers.py @@ -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( diff --git a/allianceauth/eveonline/models.py b/allianceauth/eveonline/models.py index 0bf26d36..43b48500 100644 --- a/allianceauth/eveonline/models.py +++ b/allianceauth/eveonline/models.py @@ -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): diff --git a/allianceauth/eveonline/tasks.py b/allianceauth/eveonline/tasks.py index e3741b36..399b9f78 100644 --- a/allianceauth/eveonline/tasks.py +++ b/allianceauth/eveonline/tasks.py @@ -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 diff --git a/allianceauth/eveonline/tests/test_managers.py b/allianceauth/eveonline/tests/test_managers.py index 24690c25..88470d68 100644 --- a/allianceauth/eveonline/tests/test_managers.py +++ b/allianceauth/eveonline/tests/test_managers.py @@ -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):