some general fixes needed to handle NPC corps.

This commit is contained in:
2018-04-24 08:59:09 +01:00
parent 870d1f3dfb
commit ccdc999077

View File

@@ -6,42 +6,43 @@ from django.db.models.signals import post_save
from django.dispatch import receiver from django.dispatch import receiver
# Create your models here. # 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):
# station = { station = {
# "station_id": 60014740, "station_id": 60014740,
# "name": "Balle VII - Moon 17 - Center for Advanced Studies School", "name": "Balle VII - Moon 17 - Center for Advanced Studies School",
# "type_id": 57, "type_id": 57,
# "position": { "position": {
# "x": 1888188211200, "x": 1888188211200,
# "y": -102009446400, "y": -102009446400,
# "z": 859582832640 "z": 859582832640
# }, },
# "system_id": 30002634, "system_id": 30002634,
# "reprocessing_efficiency": 0.5, "reprocessing_efficiency": 0.5,
# "reprocessing_stations_take": 0.05, "reprocessing_stations_take": 0.05,
# "max_dockable_ship_volume": 50000000, "max_dockable_ship_volume": 50000000,
# "office_rental_cost": 19056579, "office_rental_cost": 19056579,
# "services": [ "services": [
# "bounty-missions", "bounty-missions",
# "courier-missions", "courier-missions",
# "reprocessing-plant", "reprocessing-plant",
# "market", "market",
# "cloning", "cloning",
# "repair-facilities", "repair-facilities",
# "factory", "factory",
# "fitting", "fitting",
# "news", "news",
# "insurance", "insurance",
# "docking", "docking",
# "office-rental", "office-rental",
# "loyalty-point-store", "loyalty-point-store",
# "navy-offices" "navy-offices"
# ], ],
# "owner": 1000169, "owner": 1000169,
# "race_id": 8 "race_id": 8
# } }
id = models.IntegerField(primary_key=True) id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=100, blank=True, null=True) name = models.CharField(max_length=100, blank=True, null=True)
@@ -94,6 +95,9 @@ class Alliance(models.Model):
self.executor_corporation = executor_corporation self.executor_corporation = executor_corporation
self.save() self.save()
def __str__(self):
return self.name if self.name else super().__str__()
class Corporation(models.Model): class Corporation(models.Model):
corp = { corp = {
@@ -140,7 +144,7 @@ class Corporation(models.Model):
def update(self): def update(self):
res = requests.get(f'https://esi.tech.ccp.is/latest/corporations/{self.id}/?datasource=tranquility') res = requests.get(f'https://esi.tech.ccp.is/latest/corporations/{self.id}/?datasource=tranquility')
data = 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']) ceo, created = Character.objects.get_or_create(id=data['ceo_id'])
@@ -157,9 +161,11 @@ class Corporation(models.Model):
if created: if created:
alliance.update() alliance.update()
self.alliance = alliance self.alliance = alliance
self.date_founded = parser.parse(data['date_founded']) # 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.description = data['description']
self.url = data['url'] self.url = data.get('url', None)
home_station, created = Station.objects.get_or_create(id=data['home_station_id']) home_station, created = Station.objects.get_or_create(id=data['home_station_id'])
if created: if created:
home_station.update() home_station.update()
@@ -167,7 +173,7 @@ class Corporation(models.Model):
self.save() self.save()
def __str__(self): def __str__(self):
return self.name if self.name else '' return self.name if self.name else super().__str__()
class Character(models.Model): class Character(models.Model):
@@ -193,7 +199,10 @@ class Character(models.Model):
def update(self): def update(self):
res = requests.get(f'https://esi.tech.ccp.is/latest/characters/{self.id}/?datasource=tranquility') res = requests.get(f'https://esi.tech.ccp.is/latest/characters/{self.id}/?datasource=tranquility')
data = res.json() data = res.json()
print(data) if 'error' in data:
self.name = 'NPC Character'
self.save()
return
corp, created = Corporation.objects.get_or_create(id=data['corporation_id']) corp, created = Corporation.objects.get_or_create(id=data['corporation_id'])
if created: if created:
corp.update() corp.update()
@@ -202,3 +211,6 @@ class Character(models.Model):
self.security_status = data['security_status'] self.security_status = data['security_status']
self.birthday = parser.parse(data['birthday']) self.birthday = parser.parse(data['birthday'])
self.save() self.save()
def __str__(self):
return self.name if self.name else super().__str__()