From ccdc999077465e68150e53ef933028659b49c5a6 Mon Sep 17 00:00:00 2001 From: Ajurna Date: Tue, 24 Apr 2018 08:59:09 +0100 Subject: [PATCH] some general fixes needed to handle NPC corps. --- eve_auth/models.py | 88 ++++++++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 38 deletions(-) diff --git a/eve_auth/models.py b/eve_auth/models.py index d0cbeb2..99552e9 100644 --- a/eve_auth/models.py +++ b/eve_auth/models.py @@ -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__()