@@ -31,7 +31,7 class CampaignForm(forms.ModelForm): | |||||
31 |
|
31 | |||
32 | class Meta: |
|
32 | class Meta: | |
33 | model = Campaign |
|
33 | model = Campaign | |
34 | fields = ['name', 'start_date', 'end_date', 'tags', 'description', 'template'] |
|
34 | exclude = [''] | |
35 |
|
35 | |||
36 | class ExperimentForm(forms.ModelForm): |
|
36 | class ExperimentForm(forms.ModelForm): | |
37 | def __init__(self, *args, **kwargs): |
|
37 | def __init__(self, *args, **kwargs): | |
@@ -43,7 +43,7 class ExperimentForm(forms.ModelForm): | |||||
43 |
|
43 | |||
44 | class Meta: |
|
44 | class Meta: | |
45 | model = Experiment |
|
45 | model = Experiment | |
46 | fields = ['campaign', 'name', 'start_time', 'end_time'] |
|
46 | exclude = [''] | |
47 |
|
47 | |||
48 | class LocationForm(forms.ModelForm): |
|
48 | class LocationForm(forms.ModelForm): | |
49 | class Meta: |
|
49 | class Meta: | |
@@ -58,7 +58,7 class DeviceForm(forms.ModelForm): | |||||
58 | class ConfigurationForm(forms.ModelForm): |
|
58 | class ConfigurationForm(forms.ModelForm): | |
59 | class Meta: |
|
59 | class Meta: | |
60 | model = Configuration |
|
60 | model = Configuration | |
61 | fields = ['experiment', 'device'] |
|
61 | exclude = ['type', 'created_date', 'programmed_date', 'parameters'] | |
62 |
|
62 | |||
63 | class DeviceTypeForm(forms.Form): |
|
63 | class DeviceTypeForm(forms.Form): | |
64 | device_type = forms.ChoiceField(choices=add_empty_choice(DeviceType.objects.all().order_by('name').values_list('id', 'name'))) |
|
64 | device_type = forms.ChoiceField(choices=add_empty_choice(DeviceType.objects.all().order_by('name').values_list('id', 'name'))) |
@@ -4,32 +4,41 from polymorphic import PolymorphicModel | |||||
4 | from django.core.urlresolvers import reverse |
|
4 | from django.core.urlresolvers import reverse | |
5 |
|
5 | |||
6 | CONF_STATES = ( |
|
6 | CONF_STATES = ( | |
7 | (0, 'Disconnected'), |
|
7 | (0, 'Disconnected'), | |
8 | (1, 'Connected'), |
|
8 | (1, 'Connected'), | |
9 | (1, 'Running'), |
|
9 | (1, 'Running'), | |
10 | ) |
|
10 | ) | |
11 |
|
11 | |||
12 | CONF_TYPES = ( |
|
12 | CONF_TYPES = ( | |
13 | (0, 'Active'), |
|
13 | (0, 'Active'), | |
14 | (1, 'Historical'), |
|
14 | (1, 'Historical'), | |
15 | ) |
|
15 | ) | |
16 |
|
16 | |||
17 | DEV_STATES = ( |
|
17 | DEV_STATES = ( | |
18 | (0, 'No connected'), |
|
18 | (0, 'No connected'), | |
19 | (1, 'Connected'), |
|
19 | (1, 'Connected'), | |
20 | (2, 'Configured'), |
|
20 | (2, 'Configured'), | |
21 | (3, 'Running'), |
|
21 | (3, 'Running'), | |
22 | ) |
|
22 | ) | |
23 |
|
23 | |||
24 | DEV_TYPES = ( |
|
24 | DEV_TYPES = ( | |
25 | ('', 'Select a device type'), |
|
25 | ('', 'Select a device type'), | |
26 | ('rc', 'Radar Controller'), |
|
26 | ('rc', 'Radar Controller'), | |
27 | ('dds', 'Direct Digital Synthesizer'), |
|
27 | ('dds', 'Direct Digital Synthesizer'), | |
28 | ('jars', 'Jicamarca Radar Acquisition System'), |
|
28 | ('jars', 'Jicamarca Radar Acquisition System'), | |
29 | ('usrp', 'Universal Software Radio Peripheral'), |
|
29 | ('usrp', 'Universal Software Radio Peripheral'), | |
30 | ('cgs', 'Clock Generator System'), |
|
30 | ('cgs', 'Clock Generator System'), | |
31 | ('abs', 'Automatic Beam Switching'), |
|
31 | ('abs', 'Automatic Beam Switching'), | |
32 | ) |
|
32 | ) | |
|
33 | ||||
|
34 | DEV_PORTS = { | |||
|
35 | 'rc' : 2000, | |||
|
36 | 'dds' : 2000, | |||
|
37 | 'jars' : 2000, | |||
|
38 | 'usrp' : 2000, | |||
|
39 | 'cgs' : 8080, | |||
|
40 | 'abs' : 8080 | |||
|
41 | } | |||
33 |
|
42 | |||
34 | # Create your models here. |
|
43 | # Create your models here. | |
35 |
|
44 | |||
@@ -71,15 +80,21 class Device(models.Model): | |||||
71 |
|
80 | |||
72 | def __unicode__(self): |
|
81 | def __unicode__(self): | |
73 | return u'%s | %s' % (self.name, self.ip_address) |
|
82 | return u'%s | %s' % (self.name, self.ip_address) | |
|
83 | ||||
|
84 | def get_status(self): | |||
|
85 | ||||
|
86 | return self.status | |||
|
87 | ||||
74 |
|
88 | |||
75 | class Campaign(models.Model): |
|
89 | class Campaign(models.Model): | |
76 |
|
90 | |||
|
91 | template = models.BooleanField(default=False) | |||
|
92 | ||||
77 | name = models.CharField(max_length=40, unique=True) |
|
93 | name = models.CharField(max_length=40, unique=True) | |
78 | start_date = models.DateTimeField(blank=True, null=True) |
|
94 | start_date = models.DateTimeField(blank=True, null=True) | |
79 | end_date = models.DateTimeField(blank=True, null=True) |
|
95 | end_date = models.DateTimeField(blank=True, null=True) | |
80 | tags = models.CharField(max_length=40) |
|
96 | tags = models.CharField(max_length=40) | |
81 | description = models.TextField(blank=True, null=True) |
|
97 | description = models.TextField(blank=True, null=True) | |
82 | template = models.BooleanField(default=False) |
|
|||
83 |
|
98 | |||
84 | class Meta: |
|
99 | class Meta: | |
85 | db_table = 'db_campaigns' |
|
100 | db_table = 'db_campaigns' | |
@@ -89,6 +104,8 class Campaign(models.Model): | |||||
89 |
|
104 | |||
90 | class Experiment(models.Model): |
|
105 | class Experiment(models.Model): | |
91 |
|
106 | |||
|
107 | template = models.BooleanField(default=False) | |||
|
108 | ||||
92 | campaign = models.ForeignKey(Campaign) |
|
109 | campaign = models.ForeignKey(Campaign) | |
93 | name = models.CharField(max_length=40, default='') |
|
110 | name = models.CharField(max_length=40, default='') | |
94 | start_time = models.TimeField(default='00:00:00') |
|
111 | start_time = models.TimeField(default='00:00:00') | |
@@ -102,14 +119,15 class Experiment(models.Model): | |||||
102 |
|
119 | |||
103 | class Configuration(PolymorphicModel): |
|
120 | class Configuration(PolymorphicModel): | |
104 |
|
121 | |||
|
122 | template = models.BooleanField(default=False) | |||
|
123 | ||||
|
124 | name = models.CharField(verbose_name="Configuration Name", max_length=40, default='') | |||
|
125 | ||||
105 | experiment = models.ForeignKey(Experiment) |
|
126 | experiment = models.ForeignKey(Experiment) | |
106 | device = models.ForeignKey(Device) |
|
127 | device = models.ForeignKey(Device) | |
107 |
|
128 | |||
108 | status = models.PositiveSmallIntegerField(default=0, choices=CONF_STATES) |
|
|||
109 | type = models.PositiveSmallIntegerField(default=0, choices=CONF_TYPES) |
|
129 | type = models.PositiveSmallIntegerField(default=0, choices=CONF_TYPES) | |
110 |
|
130 | |||
111 | name = models.CharField(max_length=40, default='') |
|
|||
112 |
|
||||
113 | created_date = models.DateTimeField(auto_now_add=True) |
|
131 | created_date = models.DateTimeField(auto_now_add=True) | |
114 | programmed_date = models.DateTimeField(auto_now=True) |
|
132 | programmed_date = models.DateTimeField(auto_now=True) | |
115 |
|
133 | |||
@@ -120,10 +138,10 class Configuration(PolymorphicModel): | |||||
120 |
|
138 | |||
121 | def __unicode__(self): |
|
139 | def __unicode__(self): | |
122 | return u'[%s - %s]: %s' % (self.experiment.campaign.name, |
|
140 | return u'[%s - %s]: %s' % (self.experiment.campaign.name, | |
123 | self.experiment.name, |
|
141 | self.experiment.name, | |
124 |
self.device.name) |
|
142 | self.device.name) | |
125 | def get_absolute_url(self): |
|
|||
126 |
|
143 | |||
|
144 | def get_absolute_url(self): | |||
127 | return reverse('url_%s_conf' % self.device.device_type.name, args=[str(self.id)]) |
|
145 | return reverse('url_%s_conf' % self.device.device_type.name, args=[str(self.id)]) | |
128 |
|
146 | |||
129 | def get_absolute_url_edit(self): |
|
147 | def get_absolute_url_edit(self): |
@@ -22,7 +22,6 def value(instance, key): | |||||
22 |
|
22 | |||
23 | item = instance |
|
23 | item = instance | |
24 | for my_key in key.split("__"): |
|
24 | for my_key in key.split("__"): | |
25 | print "TP Value", item, my_key |
|
|||
26 | item = attr(item, my_key) |
|
25 | item = attr(item, my_key) | |
27 |
|
26 | |||
28 | print item |
|
27 | print item |
@@ -448,7 +448,7 def dev_conf(request, id_conf): | |||||
448 |
|
448 | |||
449 | kwargs = {} |
|
449 | kwargs = {} | |
450 | kwargs['dev_conf'] = dev_conf |
|
450 | kwargs['dev_conf'] = dev_conf | |
451 | kwargs['dev_conf_keys'] = ['experiment', 'device'] |
|
451 | kwargs['dev_conf_keys'] = ['name', 'experiment', 'device'] | |
452 |
|
452 | |||
453 | kwargs['title'] = 'Configuration' |
|
453 | kwargs['title'] = 'Configuration' | |
454 | kwargs['suptitle'] = 'Details' |
|
454 | kwargs['suptitle'] = 'Details' | |
@@ -466,22 +466,17 def dev_conf_new(request, id_exp=0): | |||||
466 | form = ConfigurationForm(initial={'experiment':id_exp}) |
|
466 | form = ConfigurationForm(initial={'experiment':id_exp}) | |
467 |
|
467 | |||
468 | if request.method == 'POST': |
|
468 | if request.method == 'POST': | |
469 | form = ConfigurationForm(request.POST) |
|
469 | experiment = Experiment.objects.get(pk=request.POST['experiment']) | |
|
470 | device = Device.objects.get(pk=request.POST['device']) | |||
|
471 | ||||
|
472 | DevConfForm = CONF_FORMS[device.device_type.name] | |||
|
473 | ||||
|
474 | form = DevConfForm(request.POST, initial={'experiment':experiment.id}) | |||
470 |
|
475 | |||
471 | if form.is_valid(): |
|
476 | if form.is_valid(): | |
472 | experiment = Experiment.objects.get(pk=request.POST['experiment']) |
|
477 | dev_conf = form.save() | |
473 | device = Device.objects.get(pk=request.POST['device']) |
|
478 | ||
474 |
|
479 | return redirect('url_experiment', id_exp=experiment.id) | ||
475 | exp_devices = Device.objects.filter(configuration__experiment=experiment, |
|
|||
476 | configuration__type=0) |
|
|||
477 |
|
||||
478 | if device.id not in exp_devices.values('id',): |
|
|||
479 |
|
||||
480 | DevConfModel = CONF_MODELS[device.device_type.name] |
|
|||
481 | conf = DevConfModel(experiment=experiment, device=device) |
|
|||
482 | conf.save() |
|
|||
483 |
|
||||
484 | return redirect('url_experiment', id_exp=experiment.id) |
|
|||
485 |
|
480 | |||
486 | kwargs = {} |
|
481 | kwargs = {} | |
487 | kwargs['form'] = form |
|
482 | kwargs['form'] = form |
General Comments 0
You need to be logged in to leave comments.
Login now