some general fixes needed to handle NPC corps.

This commit is contained in:
2018-04-24 11:12:51 +01:00
parent ccdc999077
commit c0b17a0ef0
5 changed files with 30 additions and 38 deletions

View File

@@ -3,3 +3,6 @@ from django.apps import AppConfig
class EveAuthConfig(AppConfig): class EveAuthConfig(AppConfig):
name = 'eve_auth' name = 'eve_auth'
def ready(self):
import eve_auth.signals

View File

@@ -1,12 +1,10 @@
from datetime import date
import requests import requests
from dateutil import parser from dateutil import parser
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.db import models 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 django.utils import timezone
from datetime import date
class Station(models.Model): 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') res = requests.get(f'https://esi.tech.ccp.is/latest/alliances/{self.id}/?datasource=tranquility')
data = res.json() data = res.json()
self.name = data['name'] self.name = data['name']
creator, created = Character.objects.get_or_create(id=data['creator_id']) self.creator, _ = Character.objects.get_or_create(id=data['creator_id'])
if created: self.creator_corporation, _ = Corporation.objects.get_or_create(id=data['creator_corporation_id'])
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.ticker = data['ticker'] self.ticker = data['ticker']
self.date_founded = parser.parse(data['date_founded']) self.date_founded = parser.parse(data['date_founded'])
executor_corporation, created = Corporation.objects.get_or_create(id=data['executor_corporation_id']) self.executor_corporation, _ = Corporation.objects.get_or_create(id=data['executor_corporation_id'])
if created:
executor_corporation.update()
self.executor_corporation = executor_corporation
self.save() self.save()
def __str__(self): def __str__(self):
@@ -147,29 +136,17 @@ class Corporation(models.Model):
data: dict = res.json() data: dict = res.json()
self.name = data['name'] self.name = data['name']
self.ticker = data['ticker'] self.ticker = data['ticker']
ceo, created = Character.objects.get_or_create(id=data['ceo_id']) self.ceo, _ = Character.objects.get_or_create(id=data['ceo_id'])
if created:
ceo.update()
self.ceo = ceo
self.tax_rate = data['tax_rate'] self.tax_rate = data['tax_rate']
creator, created = Character.objects.get_or_create(id=data['creator_id']) self.creator, _ = Character.objects.get_or_create(id=data['creator_id'])
if created:
creator.update()
self.creator = creator
if 'alliance_id' in data: if 'alliance_id' in data:
alliance, created = Alliance.objects.get_or_create(id=data['alliance_id']) self.alliance, _ = Alliance.objects.get_or_create(id=data['alliance_id'])
if created:
alliance.update()
self.alliance = alliance
# The backup date here is the release date of eve-online it # The backup date here is the release date of eve-online it
# raises a warning but timezones don't really matter here. # 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.date_founded = parser.parse(data['date_founded']) if 'date_founded' in data else date(2003, 5, 6)
self.description = data['description'] self.description = data['description']
self.url = data.get('url', None) self.url = data.get('url', None)
home_station, created = Station.objects.get_or_create(id=data['home_station_id']) self.home_station, _ = Station.objects.get_or_create(id=data['home_station_id'])
if created:
home_station.update()
self.home_station = home_station
self.save() self.save()
def __str__(self): def __str__(self):
@@ -203,10 +180,7 @@ class Character(models.Model):
self.name = 'NPC Character' self.name = 'NPC Character'
self.save() self.save()
return return
corp, created = Corporation.objects.get_or_create(id=data['corporation_id']) self.corp, _ = Corporation.objects.get_or_create(id=data['corporation_id'])
if created:
corp.update()
self.corp = corp
self.name = data['name'] self.name = data['name']
self.security_status = data['security_status'] self.security_status = data['security_status']
self.birthday = parser.parse(data['birthday']) self.birthday = parser.parse(data['birthday'])

15
eve_auth/signals.py Normal file
View File

@@ -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()

View File

@@ -15,7 +15,7 @@ from eve_auth.models import Corporation
def hello(request): def hello(request):
c = Corporation(id=98002591) c = Corporation(id=98002591)
c.save() c.save()
c.update() #c.update()
return render( return render(
request, request,
'base.html', 'base.html',

View File

@@ -38,7 +38,7 @@ INSTALLED_APPS = [
'django.contrib.sessions', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'eve_auth', 'eve_auth.apps.EveAuthConfig',
'allauth', 'allauth',
'allauth.account', 'allauth.account',
'allauth.socialaccount', 'allauth.socialaccount',