from itertools import chain from django.db import models from polymorphic import PolymorphicModel 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') mac_address = models.CharField(max_length = 20, null=True, blank=True) 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() template = models.BooleanField(default=False) status = models.PositiveSmallIntegerField(default=1, choices=STATES) class Meta: db_table = 'experiments' def __unicode__(self): return u'%s: %s - %s' % (self.alias, self.start_date, self.end_date) class Configuration(PolymorphicModel): experiment = models.ForeignKey(Experiment) device = models.ForeignKey(Device) parameters = models.TextField(default='{}') status = models.PositiveSmallIntegerField(default=1, choices=STATES) class Meta: db_table = 'configurations' def __unicode__(self): return u'%s - %s' % (self.experiment.alias, self.device)