Ejemplo n.º 1
0
class AssetDiff(models.Model):

    class Meta:
        get_latest_by = 'date'

    id = bigintpatch.BigAutoField(primary_key=True) #@ReservedAssignment
    solarSystemID = models.BigIntegerField()
    stationID = models.BigIntegerField()
    hangarID = models.PositiveIntegerField() # hangar division
    eve_type = softfk.SoftForeignKey(to='eve.Type')
    quantity = models.IntegerField(default=0)
    date = models.DateTimeField(db_index=True)
    new = models.BooleanField()
    flag = models.BigIntegerField() # used to determine the state or path of the asset
    volume = models.BigIntegerField(default=0)
    
    DATE_FIELD = 'date' # used for garbage collection
    
    def __unicode__(self):
        try:
            return u'%s x%d' % (self.eve_type.typeName, self.quantity)
        except ObjectDoesNotExist:
            return unicode(id(self))
        
    
    def __getattr__(self, attr):
        from ecm.apps.eve.models import Type
        try:
            return Type.__getattr__(self.eve_type, attr) #@UndefinedVariable
        except AttributeError:
            return models.Model.__getattribute__(self, attr)
Ejemplo n.º 2
0
class JournalEntry(models.Model):
    """
    Represents a wallet journal entry that can be fetched from the API
    at the following url http://api.eve-online.com/corp/WalletJournal.xml.aspx
    """
    id = bigintpatch.BigAutoField(primary_key=True)  #@ReservedAssignment
    refID = models.BigIntegerField(
    )  # the couple (refID, wallet_id) should be unique
    wallet = models.ForeignKey(Wallet, db_index=True)
    date = models.DateTimeField()
    type = models.ForeignKey(EntryType, db_index=True)  #@ReservedAssignment
    ownerName1 = models.CharField(
        max_length=128)  # first party of the transaction
    ownerID1 = models.BigIntegerField()
    ownerName2 = models.CharField(
        max_length=128)  # second party of the transaction
    ownerID2 = models.BigIntegerField()
    argName1 = models.CharField(max_length=128)
    argID1 = models.BigIntegerField()
    amount = models.FloatField()  # amount of the transaction
    balance = models.FloatField(
    )  # balance of the account after the transaction
    reason = models.CharField(max_length=512)  # comment

    DATE_FIELD = 'date'  # used for garbage collection

    class Meta:
        get_latest_by = 'refID'
        verbose_name = _("Journal Entry")
        verbose_name_plural = _("Journal Entries")

    def __unicode__(self):
        return unicode(self.id)
Ejemplo n.º 3
0
class RoleMemberDiff(models.Model):
    """
    Represents the change in the assignment of a Role to a Member
    """
    class Meta:
        app_label = 'hr'
        ordering = ['date']

    id = bigintpatch.BigAutoField(primary_key=True)  #@ReservedAssignment
    member = models.ForeignKey(Member)
    role = models.ForeignKey(Role)
    # true if role is new for member, false if role was removed
    new = models.BooleanField(db_index=True, default=True)
    # date of change
    date = models.DateTimeField(db_index=True, auto_now_add=True)

    DATE_FIELD = 'date'  # used for garbage collection

    @property
    def access_permalink(self):
        return self.role.permalink

    @property
    def member_permalink(self):
        try:
            return self.member.permalink
        except:
            # this could fail if the RoleMemberDiff has been recorded from
            # /corp/MemberSecurity.xml.aspx but that the member has not been
            # parsed from /corp/MemberTracking.xml.aspx yet
            return '<a href="/hr/members/%d/" class="member">???</a>' % self.member_id

    def __eq__(self, other):
        return self.id == other.id

    def __hash__(self):
        return self.id

    def __unicode__(self):
        try:
            membername = self.member.name
        except:
            membername = unicode(self.member_id)
        if self.new: return u'%s got %s' % (membername, self.role.name)
        else: return u'%s lost %s' % (membername, self.role.name)
Ejemplo n.º 4
0
class MemberSession(models.Model):
    class Meta:
        app_label = 'hr'

    id = bigintpatch.BigAutoField(primary_key=True)  # @ReservedAssignment
    # TODO: somehow use FK's
    # member = models.ForeignKey(Member, related_name="diffs")
    # no defaults! forcing valid entries!
    character_id = models.BigIntegerField(db_index=True)
    session_begin = models.DateTimeField(db_index=True)
    session_end = models.DateTimeField()
    session_seconds = models.BigIntegerField(default=0)

    DATE_FIELD = 'session_begin'  # used for garbage collection

    def __eq__(self, other):
        return self.id == other.id

    def __hash__(self):
        return self.id
Ejemplo n.º 5
0
class MemberDiff(models.Model):
    """
    Represents the arrival or departure of a member of the corporation
    """
    class Meta:
        app_label = 'hr'
        ordering = ['date']

    id = bigintpatch.BigAutoField(primary_key=True)  # @ReservedAssignment
    member = models.ForeignKey(Member, related_name="diffs")
    name = models.CharField(max_length=100, db_index=True)
    nickname = models.CharField(max_length=256, db_index=True)
    # true if member has been corped. False if he/she has leaved the corporation
    new = models.BooleanField(db_index=True, default=True)
    # date of change
    date = models.DateTimeField(db_index=True, auto_now_add=True)

    DATE_FIELD = 'date'  # used for garbage collection

    @property
    def url(self):
        return '/%s/members/%d/' % (app_prefix, self.member_id)

    @property
    def permalink(self):
        return '<a href="%s" class="member">%s</a>' % (self.url, self.name)

    def __eq__(self, other):
        return self.id == other.id

    def __hash__(self):
        return self.id

    def __unicode__(self):
        if self.new:
            return '%s corped' % self.name
        else:
            return '%s leaved' % self.name