rename UsableResource to UsableObject
[raven.git] / apps / billingsystem / billing / models.py
1 from django.db import models
2
3 # Create your models here.
4
5 class ServiceLevel(models.Model):
6     name = models.CharField(max_length=32)
7     description = models.CharField(max_length=255)
8     commitment = models.IntegerField(default=365)
9     membershipFee = models.IntegerField(default=0)
10     membershipFeeMonths = models.IntegerField(default=0)
11     upgradeRequiresApproval = models.BooleanField(default=False)
12     def __unicode__(self):
13         return self.name
14
15 class Resource(models.Model):
16     serviceLevel = models.ForeignKey(ServiceLevel)
17     name = models.CharField(max_length=32)
18     maxUnitsDeployment = models.IntegerField(default=1)
19     maxUnitsNode = models.IntegerField(default=1)
20     maxDuration = models.IntegerField(default=1)
21     bucketInRate = models.IntegerField(default=0)
22     bucketMaxSize = models.IntegerField(default=0)
23     def __unicode__(self):
24         return self.name
25
26 class BillingContact(models.Model):
27     email = models.CharField(max_length=255)
28     def __unicode__(self):
29         return self.email
30
31 class Account(models.Model):
32     name = models.CharField(max_length=255)
33     serviceLevel = models.ForeignKey(ServiceLevel)
34     goodStanding = models.BooleanField(default=True)
35     multiplier = models.IntegerField(default=1)
36     billingContacts = models.ManyToManyField(BillingContact, blank=True, null=True)
37     freezeUnreserved = models.BooleanField(default=False)
38     autoRenew = models.BooleanField(default=True)
39     serviceStartDate = models.DateTimeField()
40     balance = models.FloatField(default=0.0)
41     def __unicode__(self):
42         return self.name
43
44 class Bucket(models.Model):
45     account = models.ForeignKey(Account)
46     resource = models.ForeignKey(Resource)
47     balance = models.IntegerField(default=0)
48     lastInTime = models.DateTimeField(blank=True, null=True)
49     def __unicode__(self):
50         return unicode(self.pk)
51
52 class UsableObject(models.Model):
53     name = models.CharField(max_length=255)
54     def __unicode__(self):
55         return self.name
56
57 class ChargeKind(models.Model):
58     name = models.CharField(max_length=32)
59     def __unicode__(self):
60         return self.name
61
62 class ChargeState(models.Model):
63     name = models.CharField(max_length=32)
64     def __unicode__(self):
65         return self.name
66
67 class Charge(models.Model):
68     account = models.ForeignKey(Account)
69     object = models.ForeignKey(UsableObject)
70     parent = models.ForeignKey('self', blank=True, null=True, related_name="children")
71     kind = models.ForeignKey(ChargeKind)
72     state = models.ForeignKey(ChargeState)
73     date = models.DateTimeField()
74     amount = models.FloatField(default=0.0)
75     coreHours = models.FloatField(default=0.0)
76     def __unicode__(self):
77         return unicode(self.pk)
78
79
80
81
82