|
|
from django.db import models
|
|
|
|
|
|
STATES = (
|
|
|
(0, 'Inactive'),
|
|
|
(1, 'Active'),
|
|
|
)
|
|
|
|
|
|
# Create your models here.
|
|
|
|
|
|
class DeviceType(models.Model):
|
|
|
|
|
|
name = models.CharField(max_length=40)
|
|
|
alias = models.CharField(max_length=40)
|
|
|
info = models.TextField(blank=True, null=True)
|
|
|
status = models.PositiveSmallIntegerField(default=1, choices=STATES)
|
|
|
|
|
|
class Meta:
|
|
|
db_table = 'device_types'
|
|
|
|
|
|
def __unicode__(self):
|
|
|
return u'%s' % self.alias
|
|
|
|
|
|
class Device(models.Model):
|
|
|
|
|
|
device_type = models.ForeignKey(DeviceType)
|
|
|
model = models.CharField(max_length=40, default='')
|
|
|
serial = models.CharField(max_length=40, default='')
|
|
|
ip_address = models.GenericIPAddressField(protocol='IPv4', default='0.0.0.0')
|
|
|
status = models.PositiveSmallIntegerField(default=1, choices=STATES)
|
|
|
|
|
|
class Meta:
|
|
|
db_table = 'devices'
|
|
|
|
|
|
def __unicode__(self):
|
|
|
return u'%s-%s' % (self.device_type, self.ip_address)
|
|
|
|
|
|
class Experiment(models.Model):
|
|
|
|
|
|
name = models.CharField(max_length=40)
|
|
|
alias = models.CharField(max_length=40)
|
|
|
start_date = models.DateTimeField()
|
|
|
end_date = models.DateTimeField()
|
|
|
status = models.PositiveSmallIntegerField(default=1, choices=STATES)
|
|
|
|
|
|
class Meta:
|
|
|
db_table = 'experiments'
|
|
|
|
|
|
def __unicode__(self):
|
|
|
return u'%s: %s-%s' % (self.name, self.start_date, self.end_date)
|
|
|
|
|
|
class Configuration(models.Model):
|
|
|
|
|
|
device = models.ForeignKey(Device)
|
|
|
parameters = models.TextField()
|
|
|
status = models.PositiveSmallIntegerField(default=1, choices=STATES)
|
|
|
|
|
|
def __unicode__(self):
|
|
|
return u'%s Conf' % self.device
|
|
|
class Meta:
|
|
|
db_table = 'configurations'
|
|
|
|
|
|
class ExperimentDetail(models.Model):
|
|
|
|
|
|
experiment = models.ForeignKey(Experiment)
|
|
|
configurations = models.ManyToManyField(Configuration)
|
|
|
status = models.PositiveSmallIntegerField(default=1, choices=STATES)
|
|
|
|
|
|
class Meta:
|
|
|
db_table = 'experiments_detail'
|
|
|
|
|
|
def __unicode__(self):
|
|
|
return u'%s Configuration' % self.experiment.name
|
|
|
|
|
|
class ExperimentTemplate(models.Model):
|
|
|
|
|
|
experiment_detail = models.ForeignKey(ExperimentDetail)
|
|
|
status = models.PositiveSmallIntegerField(default=1, choices=STATES)
|
|
|
|
|
|
class Meta:
|
|
|
db_table = 'templates'
|
|
|
|
|
|
def __unicode__(self):
|
|
|
return u'%s Template' % (self.experiment_detail.experiment.name)
|
|
|
|