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