From 870d1f3dfb997aa02a9ddc20a018b1c5b3b2e600 Mon Sep 17 00:00:00 2001 From: Ajurna Date: Mon, 23 Apr 2018 16:50:06 +0100 Subject: [PATCH] some initial work on models and getting updates from the api. --- eve_auth/admin.py | 22 +++++ eve_auth/models.py | 209 ++++++++++++++++++++++++++++++++++++++++++--- eve_auth/views.py | 4 + 3 files changed, 223 insertions(+), 12 deletions(-) diff --git a/eve_auth/admin.py b/eve_auth/admin.py index 8c38f3f..5247518 100644 --- a/eve_auth/admin.py +++ b/eve_auth/admin.py @@ -1,3 +1,25 @@ from django.contrib import admin +from eve_auth import models # Register your models here. + + +@admin.register(models.Station) +class StationAdmin(admin.ModelAdmin): + list_display = ['name'] + + +@admin.register(models.Alliance) +class AllianceAdmin(admin.ModelAdmin): + list_display = ['name', 'ticker', 'executor_corporation'] + + +@admin.register(models.Corporation) +class CorporationAdmin(admin.ModelAdmin): + list_display = ['name', 'ticker', 'alliance', 'updated'] + + +@admin.register(models.Character) +class CharacterAdmin(admin.ModelAdmin): + list_display = ['name', 'corp', 'updated'] + diff --git a/eve_auth/models.py b/eve_auth/models.py index 8f85a5c..d0cbeb2 100644 --- a/eve_auth/models.py +++ b/eve_auth/models.py @@ -1,19 +1,204 @@ +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 Alliance(models.Model): -# id = models.IntegerField(primary_key=True) -# name = models.CharField(max_length=255, blank=True, null=True) -# creator_id = models.IntegerField(blank=True, null=True) -# creator_corporation_id = models.IntegerField(blank=True, null=True) -# ticker = models.CharField(max_length=20, blank=True, null=True) -# date_founded = models.DateTimeField(blank=True, null=True) -# executor_corporation_id = models.IntegerField(blank=True, null=True) -# updated = models.DateTimeField(auto_now=True) -# -# class Corporation(models.Model): -# id = models.IntegerField(primary_key=True) \ No newline at end of file +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() diff --git a/eve_auth/views.py b/eve_auth/views.py index 1f5ed3c..abc0dd3 100644 --- a/eve_auth/views.py +++ b/eve_auth/views.py @@ -9,9 +9,13 @@ from allauth.socialaccount.models import SocialAccount, SocialToken, SocialApp from requests.auth import HTTPBasicAuth +from eve_auth.models import Corporation def hello(request): + c = Corporation(id=98002591) + c.save() + c.update() return render( request, 'base.html',