mirror of
https://github.com/nikdoof/django-evesde.git
synced 2025-12-18 12:19:23 +00:00
Initial import of existing codebase.
This commit is contained in:
112
evesde/models/types.py
Normal file
112
evesde/models/types.py
Normal file
@@ -0,0 +1,112 @@
|
||||
from django.conf import settings
|
||||
from django.db import models
|
||||
|
||||
|
||||
class TypeCategory(models.Model):
|
||||
id = models.BigIntegerField('Type Category ID', primary_key=True)
|
||||
name = models.CharField('Type Category Name', max_length=200)
|
||||
|
||||
class Meta:
|
||||
app_label = 'evesde'
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class TypeGroup(models.Model):
|
||||
id = models.BigIntegerField('Type Group ID', primary_key=True)
|
||||
category = models.ForeignKey(TypeCategory, related_name='groups')
|
||||
name = models.CharField('Type Group Name', max_length=200)
|
||||
|
||||
class Meta:
|
||||
app_label = 'evesde'
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Type(models.Model):
|
||||
"""Represents a EVE InvType"""
|
||||
id = models.BigIntegerField('Type ID', primary_key=True)
|
||||
group = models.ForeignKey(TypeGroup, related_name='types')
|
||||
name = models.CharField('Type Name', max_length=200)
|
||||
capacity = models.BigIntegerField('Capacity')
|
||||
|
||||
@property
|
||||
def image(self):
|
||||
return '%s/Type/%s_%s.png' % (
|
||||
getattr(settings, 'EVE_IMAGESERVER_URL', 'https://image.eveonline.com'),
|
||||
self.pk,
|
||||
getattr(settings, 'EVE_IMAGESERVER_TYPESIZE', 64)
|
||||
)
|
||||
|
||||
def render(self, size):
|
||||
if size % 32:
|
||||
raise ValueError('Size isn\'t a multiple of 32')
|
||||
if size > 512:
|
||||
raise ValueError('Size is too large (max 512px)')
|
||||
return '%s/Render/%s_%s.png' % (
|
||||
getattr(settings, 'EVE_IMAGESERVER_URL', 'https://image.eveonline.com'),
|
||||
self.pk,
|
||||
size
|
||||
)
|
||||
|
||||
@property
|
||||
def attributes_list(self):
|
||||
return [(attr.attribute.display_name or attr.attribute.name, attr.get_value_display()) for attr in self.attributes.all()]
|
||||
|
||||
class Meta:
|
||||
app_label = 'evesde'
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class UnitType(models.Model):
|
||||
|
||||
id = models.BigIntegerField('Unit ID', primary_key=True)
|
||||
name = models.CharField('Unit Name', max_length=200)
|
||||
display_name = models.CharField('Display Name', max_length=200)
|
||||
|
||||
class Meta:
|
||||
app_label = 'evesde'
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class AttributeType(models.Model):
|
||||
|
||||
id = models.BigIntegerField('Attribute ID', primary_key=True)
|
||||
name = models.CharField('Attribute Name', max_length=200)
|
||||
display_name = models.CharField('Display Name', max_length=200)
|
||||
unit = models.ForeignKey(UnitType, related_name='+', null=True)
|
||||
|
||||
class Meta:
|
||||
app_label = 'evesde'
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class TypeAttribute(models.Model):
|
||||
|
||||
type = models.ForeignKey(Type, related_name='attributes')
|
||||
attribute = models.ForeignKey(AttributeType, related_name='+')
|
||||
valueint = models.BigIntegerField('Int Value', null=True)
|
||||
valuefloat = models.FloatField('Float Value', null=True)
|
||||
|
||||
@property
|
||||
def value(self):
|
||||
return self.valuefloat or self.valueint
|
||||
|
||||
def get_value_display(self):
|
||||
if self.attribute.unit:
|
||||
return u'%d%s' % (self.value, self.attribute.unit.display_name)
|
||||
return self.value
|
||||
|
||||
class Meta:
|
||||
app_label = 'evesde'
|
||||
|
||||
def __unicode__(self):
|
||||
return self.attribute.name
|
||||
Reference in New Issue
Block a user