# Eve W-Space
# Copyright (C) 2013 Andrew Austin and other contributors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. An additional term under section
# 7 of the GPL is included in the LICENSE file.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from django.db import models
from django.conf import settings
# Core models contains models used across multiple apps
User = settings.AUTH_USER_MODEL
[docs]class NewsFeed(models.Model):
"""
Contains information about an RSS feed. If user is None, the feed is
global.
"""
name = models.CharField(max_length=255, null=True, blank=True)
description = models.CharField(max_length=255, null=True, blank=True)
url = models.CharField(max_length=255)
user = models.ForeignKey(User, related_name='feeds', null=True)
class Meta:
ordering = ['name']
[docs]class Alliance(models.Model):
"""Represents an alliance, data pulled from api"""
id = models.BigIntegerField(primary_key=True)
name = models.CharField(max_length=100)
shortname = models.CharField(max_length=100)
executor = models.ForeignKey('Corporation', blank=True, null=True, related_name='+')
def __unicode__(self):
return self.name
[docs]class Corporation(models.Model):
"""Represents a corporation, data pulled from api"""
id = models.BigIntegerField(primary_key=True)
name = models.CharField(max_length=100)
ticker = models.CharField(max_length=100)
alliance = models.ForeignKey(Alliance, null=True, blank=True, related_name='member_corps')
member_count = models.IntegerField()
def __unicode__(self):
return self.name
[docs]class ConfigEntry(models.Model):
"""A configuration setting that may be changed at runtime."""
name = models.CharField(max_length=32, unique=True)
value = models.CharField(max_length=255, null=True, blank=True)
user = models.ForeignKey(User, related_name='settings', null=True, blank=True)
[docs]class MarketGroup(models.Model):
"""A market group from the Eve SDD."""
id = models.IntegerField(primary_key=True, db_column='marketGroupID')
name = models.CharField(max_length = 100, null=True, blank=True,
db_column='marketGroupName')
parentgroup = models.ForeignKey("self", related_name="childgroups",
blank=True, null=True, db_column='parentGroupID')
description = models.CharField(max_length = 200, null=True, blank=True)
hasTypes = models.IntegerField()
def __unicode__(self):
return self.name
class Meta:
db_table = 'invMarketGroups'
managed = False
[docs]class Type(models.Model):
"""A type from the Eve SDD invTypes table."""
id = models.IntegerField(primary_key=True, db_column='typeID')
name = models.CharField(max_length = 100, db_column='typeName')
description = models.TextField(blank=True, null=True)
volume = models.FloatField(blank=True, null=True)
marketgroup = models.ForeignKey(MarketGroup, null=True, blank=True, related_name="types",
db_column='marketGroupID')
published = models.BooleanField()
def __unicode__(self):
return self.name
class Meta:
db_table = 'invTypes'
managed = False
[docs]class Region(models.Model):
"""Core model for static region data"""
id = models.IntegerField(primary_key=True, db_column='regionID')
name = models.CharField(max_length=100, db_column='regionName')
x = models.FloatField()
y = models.FloatField()
z = models.FloatField()
def __unicode__(self):
return self.name
class Meta:
db_table = 'mapRegions'
managed = False
[docs]class Constellation(models.Model):
"""Core model for static constellation data, references Region"""
id = models.IntegerField(primary_key=True, db_column='constellationID')
name = models.CharField(max_length=100, db_column='constellationName')
region = models.ForeignKey(Region, related_name='constellations',
db_column='regionID')
x = models.FloatField()
y = models.FloatField()
z = models.FloatField()
def __unicode__(self):
return self.name
class Meta:
db_table = 'mapConstellations'
managed = False
[docs]class SystemData(models.Model):
"""Core model for static system data from the SDD, references Region and Constellation"""
id = models.IntegerField(primary_key=True, db_column='solarSystemID')
name = models.CharField(max_length=100, db_column='solarSystemName')
constellation = models.ForeignKey(Constellation, related_name='systems',
db_column='constellationID')
region = models.ForeignKey(Region, related_name='systems', db_column='regionID')
x = models.FloatField()
y = models.FloatField()
z = models.FloatField()
security = models.FloatField()
def __unicode__(self):
return self.name
class Meta:
db_table = 'mapSolarSystems'
managed = False
[docs]class StarbaseResourcePurpose(models.Model):
"""Core model for SDD invControlTowerResourcePurpose table."""
purpose = models.IntegerField(primary_key=True)
purposeText = models.CharField(max_length=100, blank=True, null=True)
def __unicode__(self):
return self.purposeText
class Meta:
db_table = 'invControlTowerResourcePurposes'
managed = False
[docs]class StarbaseResource(models.Model):
"""Core model for SDD invStarbaseResources table. Maps tower types
to their fuel"""
towerType = models.ForeignKey(Type, related_name='posesfueled',
db_column='controlTowerTypeID', primary_key=True)
resourceType = models.ForeignKey(Type, related_name='posfuel',
db_column='resourceTypeID')
purpose = models.ForeignKey(StarbaseResourcePurpose, related_name='usedby',
db_column='purpose', blank=True, null=True)
quantity = models.IntegerField(blank=True, null=True, db_column='quantity')
minSecurityLevel = models.FloatField(blank=True, null=True, db_column='minSecurityLevel')
def __unicode__(self):
return '%s %s' % (self.towerType.name, self.resourceType.name)
class Meta:
db_table = 'invControlTowerResources'
managed = False
[docs]class Location(models.Model):
"""Core model for SDD mapDenormalize table that generic locations map to."""
itemid = models.IntegerField(primary_key=True, db_column='itemID')
typeid = models.ForeignKey(Type, null=True, blank=True, related_name='mapentries',
db_column='typeID')
system = models.ForeignKey(SystemData, null=True, blank=True, related_name='mapentries',
db_column='solarSystemID')
constellation = models.ForeignKey(Constellation, null=True, blank=True,
related_name='mapentries', db_column='constellationID')
region = models.ForeignKey(Region, null=True, blank=True, related_name='mapentries',
db_column='regionID')
orbitparent = models.ForeignKey('Location', null=True, blank=True,
related_name='satellites', db_column='orbitID')
name = models.CharField(max_length=100, null=True, blank=True, db_column='itemName')
x = models.FloatField(null=True, blank=True, db_column='x')
y = models.FloatField(null=True, blank=True, db_column='y')
z = models.FloatField(null=True, blank=True, db_column='z')
security = models.FloatField(null=True, blank=True, db_column='security')
class Meta:
db_table='mapDenormalize'
managed = False
[docs]class LocationWormholeClass(models.Model):
"""Core model for SDD mapLocationWormholeClasses used to generate system tables."""
location = models.ForeignKey(Location, primary_key=True, related_name="whclass",
db_column='locationID')
sysclass = models.IntegerField(null=True, blank=True, db_column='wormholeClassID')
class Meta:
db_table='mapLocationWormholeClasses'
managed = False
[docs]class SystemJump(models.Model):
"""Core model for SDD mapSolarSystemJumps used in A* calcs."""
fromregion = models.IntegerField(db_column="fromRegionID")
fromconstellation = models.IntegerField(db_column="fromConstellationID")
fromsystem = models.IntegerField(db_column="fromSolarSystemID", primary_key=True)
tosystem = models.IntegerField(db_column="toSolarSystemID", primary_key=True)
toconstellation = models.IntegerField(db_column="toConstellationID")
toregion = models.IntegerField(db_column="toRegionID")
class Meta:
db_table='mapSolarSystemJumps'
managed = False
[docs]class Faction(models.Model):
id = models.IntegerField(primary_key=True, db_column='factionID')
name = models.CharField(max_length=300, db_column='factionName', blank=True)
description = models.CharField(max_length=3000, blank=True)
iconid = models.IntegerField(null=True, db_column='iconID', blank=True)
class Meta:
managed = False
db_table = u'chrFactions'