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)
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)
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)
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
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