##// END OF EJS Templates
A "Campaign" has many "Locations", A "Location" has many Experiments....
Fiorella Quino -
r48:292bafbb7b12
parent child
Show More
@@ -1,160 +1,161
1 1 from django.db import models
2 2 from polymorphic import PolymorphicModel
3 3
4 4 from django.core.urlresolvers import reverse
5 5
6 6 CONF_STATES = (
7 7 (0, 'Disconnected'),
8 8 (1, 'Connected'),
9 9 (1, 'Running'),
10 10 )
11 11
12 12 CONF_TYPES = (
13 13 (0, 'Active'),
14 14 (1, 'Historical'),
15 15 )
16 16
17 17 DEV_STATES = (
18 18 (0, 'No connected'),
19 19 (1, 'Connected'),
20 20 (2, 'Configured'),
21 21 (3, 'Running'),
22 22 )
23 23
24 24 DEV_TYPES = (
25 25 ('', 'Select a device type'),
26 26 ('rc', 'Radar Controller'),
27 27 ('dds', 'Direct Digital Synthesizer'),
28 28 ('jars', 'Jicamarca Radar Acquisition System'),
29 29 ('usrp', 'Universal Software Radio Peripheral'),
30 30 ('cgs', 'Clock Generator System'),
31 31 ('abs', 'Automatic Beam Switching'),
32 32 )
33 33
34 34 DEV_PORTS = {
35 35 'rc' : 2000,
36 36 'dds' : 2000,
37 37 'jars' : 2000,
38 38 'usrp' : 2000,
39 39 'cgs' : 8080,
40 40 'abs' : 8080
41 41 }
42 42
43 43 # Create your models here.
44 44
45 class Location(models.Model):
46
47 name = models.CharField(max_length = 30)
48 description = models.TextField(blank=True, null=True)
49
50 class Meta:
51 db_table = 'db_location'
52
53 def __unicode__(self):
54 return u'%s' % self.name
55
56 45 class DeviceType(models.Model):
57 46
58 47 name = models.CharField(max_length = 10, choices = DEV_TYPES, default = 'rc')
59 48 description = models.TextField(blank=True, null=True)
60 49
61 50 class Meta:
62 51 db_table = 'db_device_types'
63 52
64 53 def __unicode__(self):
65 54 return u'%s' % self.get_name_display()
66 55
67 56 class Device(models.Model):
68 57
69 58 device_type = models.ForeignKey(DeviceType)
70 59 # location = models.ForeignKey(Location)
71 60
72 61 name = models.CharField(max_length=40, default='')
73 62 ip_address = models.GenericIPAddressField(protocol='IPv4', default='0.0.0.0')
74 63 port_address = models.PositiveSmallIntegerField(default=2000)
75 64 description = models.TextField(blank=True, null=True)
76 65 status = models.PositiveSmallIntegerField(default=0, choices=DEV_STATES)
77 66
78 67 class Meta:
79 68 db_table = 'db_devices'
80 69
81 70 def __unicode__(self):
82 71 return u'%s | %s' % (self.name, self.ip_address)
83 72
84 73 def get_status(self):
85 74
86 75 return self.status
87 76
88 77
89 78 class Campaign(models.Model):
90 79
91 80 template = models.BooleanField(default=False)
92 81
93 82 name = models.CharField(max_length=40, unique=True)
94 83 start_date = models.DateTimeField(blank=True, null=True)
95 84 end_date = models.DateTimeField(blank=True, null=True)
96 85 tags = models.CharField(max_length=40)
97 86 description = models.TextField(blank=True, null=True)
98 87
99 88 class Meta:
100 89 db_table = 'db_campaigns'
101 90
102 91 def __unicode__(self):
103 92 return u'%s' % (self.name)
104 93
94 class Location(models.Model):
95
96 name = models.CharField(max_length = 30)
97 description = models.TextField(blank=True, null=True)
98 campaign = models.ForeignKey(Campaign)
99
100 class Meta:
101 db_table = 'db_location'
102
103 def __unicode__(self):
104 return u'%s' % self.name
105
105 106 class Experiment(models.Model):
106 107
107 108 template = models.BooleanField(default=False)
108 109
109 campaign = models.ForeignKey(Campaign)
110 location = models.ForeignKey(Location)
110 111 name = models.CharField(max_length=40, default='')
111 112 start_time = models.TimeField(default='00:00:00')
112 113 end_time = models.TimeField(default='23:59:59')
113 114
114 115 class Meta:
115 116 db_table = 'db_experiments'
116 117
117 118 def __unicode__(self):
118 119 return u'[%s]: %s' % (self.campaign.name, self.name)
119 120
120 121 class Configuration(PolymorphicModel):
121 122
122 123 template = models.BooleanField(default=False)
123 124
124 125 name = models.CharField(verbose_name="Configuration Name", max_length=40, default='')
125 126
126 127 experiment = models.ForeignKey(Experiment)
127 128 device = models.ForeignKey(Device)
128 129
129 130 type = models.PositiveSmallIntegerField(default=0, choices=CONF_TYPES)
130 131
131 132 created_date = models.DateTimeField(auto_now_add=True)
132 133 programmed_date = models.DateTimeField(auto_now=True)
133 134
134 135 parameters = models.TextField(default='{}')
135 136
136 137 class Meta:
137 138 db_table = 'db_configurations'
138 139
139 140 def __unicode__(self):
140 141 return u'[%s - %s]: %s' % (self.experiment.campaign.name,
141 142 self.experiment.name,
142 143 self.device.name)
143 144
144 145 def get_absolute_url(self):
145 146 return reverse('url_%s_conf' % self.device.device_type.name, args=[str(self.id)])
146 147
147 148 def get_absolute_url_edit(self):
148 149 return reverse('url_edit_%s_conf' % self.device.device_type.name, args=[str(self.id)])
149 150
150 151 def get_absolute_url_import(self):
151 152 return reverse('url_import_%s_conf' % self.device.device_type.name, args=[str(self.id)])
152 153
153 154 def get_absolute_url_export(self):
154 155 return reverse('url_export_%s_conf' % self.device.device_type.name, args=[str(self.id)])
155 156
156 157 def get_absolute_url_write(self):
157 158 return reverse('url_write_%s_conf' % self.device.device_type.name, args=[str(self.id)])
158 159
159 160 def get_absolute_url_read(self):
160 161 return reverse('url_read_%s_conf' % self.device.device_type.name, args=[str(self.id)]) No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now