Source code for characters.models

# -*- coding: utf-8 -*-
import datetime

from django.contrib.auth.models import User
from django.db import models

from eve.models import Item
from eve.models import SolarSystem
from eve.models import Station


# http://stackoverflow.com/a/8907269/1770233
def strfdelta(tdelta, fmt):
    d = {'days': tdelta.days}
    d['hours'], rem = divmod(tdelta.seconds, 3600)
    d['minutes'], d['seconds'] = divmod(rem, 60)

    return fmt.format(**d)


class ActiveOrderManager(models.Manager):

    def get_queryset(self):
        return super(ActiveOrderManager, self).get_queryset().filter(
            order_state='active'
        )


[docs]class Character(models.Model): """ A model representing a single character """ user = models.ForeignKey(User, related_name='characters') name = models.CharField(max_length=255) char_id = models.IntegerField(unique=True) key_id = models.IntegerField() v_code = models.CharField(max_length=255) def get_api_key(self): return (self.key_id, self.v_code) def __unicode__(self): return self.name
[docs]class Asset(models.Model): """ A model representing a single character """ character = models.ForeignKey(Character, related_name='assets') item = models.ForeignKey(Item, related_name='assets') solar_system = models.ForeignKey(SolarSystem, null=True, related_name='assets') station = models.ForeignKey(Station, null=True, related_name='assets') quantity = models.IntegerField() unique_item_id = models.BigIntegerField(unique=True) flag = models.SmallIntegerField() packaged = models.BooleanField() def __unicode__(self): return '{} ({})'.format(self.character.name, self.item.type_name)
[docs]class Order(models.Model): """ A model representing a single market order """ character = models.ForeignKey(Character, related_name='orders') item = models.ForeignKey(Item, related_name='orders') station = models.ForeignKey(Station, related_name='orders') order_id = models.BigIntegerField(unique=True) vol_entered = models.BigIntegerField() vol_remaining = models.BigIntegerField() order_state = models.CharField(max_length=255) order_type = models.CharField(max_length=255) duration = models.IntegerField() price = models.FloatField() issued = models.DateTimeField() qty_threshold = models.IntegerField(null=True, blank=True) objects = models.Manager() active_orders = ActiveOrderManager() class Meta: ordering = ['-issued'] @property def met_qty_threshold(self): return self.vol_remaining <= self.qty_threshold def expires_in(self): tdelta = (self.issued + datetime.timedelta(days=self.duration)) - datetime.datetime.utcnow() return strfdelta(tdelta, '{days}d {hours}h {minutes}m {seconds}s') def __unicode__(self): return 'Character: {}, Item: {}'.format( self.character.name, self.item.type_name )