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 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 # } id = models.IntegerField(primary_key=True) name = models.CharField(max_length=100, blank=True, null=True) def update(self): res = requests.get(f'https://esi.tech.ccp.is/latest/universe/stations/{self.id}/?datasource=tranquility') data = res.json() self.name = data['name'] self.save() class Alliance(models.Model): # https://esi.tech.ccp.is/latest/alliances/{alliance_id}/?datasource=tranquility alliance = { "name": "Goonswarm Federation", "creator_id": 240070320, "creator_corporation_id": 459299583, "ticker": "CONDI", "date_founded": "2010-06-01T05:36:00Z", "executor_corporation_id": 1344654522 } id = models.IntegerField(primary_key=True) name = models.CharField(max_length=255, blank=True, null=True) creator = models.ForeignKey('Character', on_delete=models.SET_NULL, null=True) creator_corporation = models.ForeignKey('Corporation', on_delete=models.SET_NULL, null=True, related_name='+') ticker = models.CharField(max_length=20, blank=True, null=True) date_founded = models.DateTimeField(blank=True, null=True) executor_corporation = models.ForeignKey('Corporation', on_delete=models.SET_NULL, null=True, related_name='executor') updated = models.DateTimeField(auto_now=True) def update(self): 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.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.save() class Corporation(models.Model): corp = { "name": "Ajurna Jakar Corporation", "ticker": "AJC12", "member_count": 1, "ceo_id": 197587263, "tax_rate": 0, "creator_id": 197587263, "description": "Enter a description of your corporation here.", "date_founded": "2018-04-20T08:09:24Z", "url": "http://", "home_station_id": 60014740, "shares": 1000 } corp_in_alliance = { "name": "The Dream Team", "ticker": "-TDT-", "member_count": 13, "ceo_id": 874898855, "tax_rate": 0.15, "creator_id": 213704116, "alliance_id": 1354830081, "description": "We are an \"Invite Only\" Corp", "date_founded": "2010-11-15T22:04:00Z", "url": "", "home_station_id": 60013960, "shares": 1000 } id = models.IntegerField(primary_key=True) name = models.CharField(max_length=255, null=True, blank=True) ticker = models.CharField(max_length=10, null=True, blank=True) ceo = models.ForeignKey('Character', on_delete=models.SET_NULL, null=True) tax_rate = models.IntegerField(default=0) creator = models.ForeignKey('Character', on_delete=models.SET_NULL, null=True, related_name='+') alliance = models.ForeignKey(Alliance, on_delete=models.SET_NULL, null=True) date_founded = models.DateTimeField(default=timezone.now) description = models.TextField(blank=True, null=True) url = models.URLField(blank=True, null=True) home_station = models.ForeignKey(Station, on_delete=models.SET_NULL, null=True) updated = models.DateTimeField(auto_now=True) def update(self): res = requests.get(f'https://esi.tech.ccp.is/latest/corporations/{self.id}/?datasource=tranquility') data = 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.tax_rate = data['tax_rate'] creator, created = Character.objects.get_or_create(id=data['creator_id']) if created: creator.update() self.creator = creator if 'alliance_id' in data: alliance, created = Alliance.objects.get_or_create(id=data['alliance_id']) if created: alliance.update() self.alliance = alliance self.date_founded = parser.parse(data['date_founded']) self.description = data['description'] self.url = data['url'] home_station, created = Station.objects.get_or_create(id=data['home_station_id']) if created: home_station.update() self.home_station = home_station self.save() def __str__(self): return self.name if self.name else '' class Character(models.Model): character = { "corporation_id": 98556532, "birthday": "2006-01-19T15:10:00Z", "name": "Ajurna Jakar", "gender": "male", "race_id": 8, "bloodline_id": 8, "description": "lots of text", "ancestry_id": 18, "security_status": 5.0093381834 } id = models.IntegerField(primary_key=True) corp = models.ForeignKey(Corporation, on_delete=models.SET_NULL, null=True) name = models.CharField(max_length=50, null=True) security_status = models.FloatField(default=0.0) birthday = models.DateTimeField(default=timezone.now) updated = models.DateTimeField(auto_now=True) def update(self): res = requests.get(f'https://esi.tech.ccp.is/latest/characters/{self.id}/?datasource=tranquility') data = res.json() print(data) corp, created = Corporation.objects.get_or_create(id=data['corporation_id']) if created: corp.update() self.corp = corp self.name = data['name'] self.security_status = data['security_status'] self.birthday = parser.parse(data['birthday']) self.save()