diff --git a/eve_auth/apps.py b/eve_auth/apps.py index a129ec3..3f2dfd7 100644 --- a/eve_auth/apps.py +++ b/eve_auth/apps.py @@ -3,3 +3,6 @@ from django.apps import AppConfig class EveAuthConfig(AppConfig): name = 'eve_auth' + + def ready(self): + import eve_auth.signals diff --git a/eve_auth/models.py b/eve_auth/models.py index 99552e9..ffb05e0 100644 --- a/eve_auth/models.py +++ b/eve_auth/models.py @@ -1,12 +1,10 @@ +from datetime import date + import requests from dateutil import parser from django.contrib.auth.models import User from django.db import models -from django.db.models.signals import post_save -from django.dispatch import receiver -# Create your models here. from django.utils import timezone -from datetime import date class Station(models.Model): @@ -79,20 +77,11 @@ class Alliance(models.Model): res = requests.get(f'https://esi.tech.ccp.is/latest/alliances/{self.id}/?datasource=tranquility') data = res.json() self.name = data['name'] - creator, created = Character.objects.get_or_create(id=data['creator_id']) - if created: - creator.update() - self.creator = creator - creator_corporation, created = Corporation.objects.get_or_create(id=data['creator_corporation_id']) - if created: - creator_corporation.update() - self.creator_corporation = creator_corporation + self.creator, _ = Character.objects.get_or_create(id=data['creator_id']) + self.creator_corporation, _ = Corporation.objects.get_or_create(id=data['creator_corporation_id']) self.ticker = data['ticker'] self.date_founded = parser.parse(data['date_founded']) - executor_corporation, created = Corporation.objects.get_or_create(id=data['executor_corporation_id']) - if created: - executor_corporation.update() - self.executor_corporation = executor_corporation + self.executor_corporation, _ = Corporation.objects.get_or_create(id=data['executor_corporation_id']) self.save() def __str__(self): @@ -147,29 +136,17 @@ class Corporation(models.Model): data: dict = res.json() self.name = data['name'] self.ticker = data['ticker'] - ceo, created = Character.objects.get_or_create(id=data['ceo_id']) - if created: - ceo.update() - self.ceo = ceo + self.ceo, _ = Character.objects.get_or_create(id=data['ceo_id']) self.tax_rate = data['tax_rate'] - creator, created = Character.objects.get_or_create(id=data['creator_id']) - if created: - creator.update() - self.creator = creator + self.creator, _ = Character.objects.get_or_create(id=data['creator_id']) if 'alliance_id' in data: - alliance, created = Alliance.objects.get_or_create(id=data['alliance_id']) - if created: - alliance.update() - self.alliance = alliance + self.alliance, _ = Alliance.objects.get_or_create(id=data['alliance_id']) # The backup date here is the release date of eve-online it # raises a warning but timezones don't really matter here. self.date_founded = parser.parse(data['date_founded']) if 'date_founded' in data else date(2003, 5, 6) self.description = data['description'] self.url = data.get('url', None) - home_station, created = Station.objects.get_or_create(id=data['home_station_id']) - if created: - home_station.update() - self.home_station = home_station + self.home_station, _ = Station.objects.get_or_create(id=data['home_station_id']) self.save() def __str__(self): @@ -203,10 +180,7 @@ class Character(models.Model): self.name = 'NPC Character' self.save() return - corp, created = Corporation.objects.get_or_create(id=data['corporation_id']) - if created: - corp.update() - self.corp = corp + self.corp, _ = Corporation.objects.get_or_create(id=data['corporation_id']) self.name = data['name'] self.security_status = data['security_status'] self.birthday = parser.parse(data['birthday']) diff --git a/eve_auth/signals.py b/eve_auth/signals.py new file mode 100644 index 0000000..e74c026 --- /dev/null +++ b/eve_auth/signals.py @@ -0,0 +1,15 @@ +from django.db.models.signals import post_save +from django.dispatch import receiver + +from eve_auth import models + + +@receiver(post_save, sender=models.Station) +@receiver(post_save, sender=models.Alliance) +@receiver(post_save, sender=models.Corporation) +@receiver(post_save, sender=models.Character) +def run_update_details(sender, instance, created, **kwargs): + if created: + print(instance) + instance.update() + diff --git a/eve_auth/views.py b/eve_auth/views.py index abc0dd3..85f622e 100644 --- a/eve_auth/views.py +++ b/eve_auth/views.py @@ -15,7 +15,7 @@ from eve_auth.models import Corporation def hello(request): c = Corporation(id=98002591) c.save() - c.update() + #c.update() return render( request, 'base.html', diff --git a/eve_verify/settings.py b/eve_verify/settings.py index 85c6824..6dacf8a 100644 --- a/eve_verify/settings.py +++ b/eve_verify/settings.py @@ -38,7 +38,7 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - 'eve_auth', + 'eve_auth.apps.EveAuthConfig', 'allauth', 'allauth.account', 'allauth.socialaccount',