diff --git a/apps/main/forms.py b/apps/main/forms.py index d8c46b9..27a493e 100644 --- a/apps/main/forms.py +++ b/apps/main/forms.py @@ -31,7 +31,7 @@ class CampaignForm(forms.ModelForm): class Meta: model = Campaign - fields = ['name', 'start_date', 'end_date', 'tags', 'description', 'template'] + exclude = [''] class ExperimentForm(forms.ModelForm): def __init__(self, *args, **kwargs): @@ -43,7 +43,7 @@ class ExperimentForm(forms.ModelForm): class Meta: model = Experiment - fields = ['campaign', 'name', 'start_time', 'end_time'] + exclude = [''] class LocationForm(forms.ModelForm): class Meta: @@ -58,7 +58,7 @@ class DeviceForm(forms.ModelForm): class ConfigurationForm(forms.ModelForm): class Meta: model = Configuration - fields = ['experiment', 'device'] + exclude = ['type', 'created_date', 'programmed_date', 'parameters'] class DeviceTypeForm(forms.Form): device_type = forms.ChoiceField(choices=add_empty_choice(DeviceType.objects.all().order_by('name').values_list('id', 'name'))) diff --git a/apps/main/models.py b/apps/main/models.py index cd1e8d1..4cbff98 100644 --- a/apps/main/models.py +++ b/apps/main/models.py @@ -4,32 +4,41 @@ from polymorphic import PolymorphicModel from django.core.urlresolvers import reverse CONF_STATES = ( - (0, 'Disconnected'), - (1, 'Connected'), - (1, 'Running'), - ) + (0, 'Disconnected'), + (1, 'Connected'), + (1, 'Running'), + ) CONF_TYPES = ( - (0, 'Active'), - (1, 'Historical'), - ) + (0, 'Active'), + (1, 'Historical'), + ) DEV_STATES = ( - (0, 'No connected'), - (1, 'Connected'), - (2, 'Configured'), - (3, 'Running'), - ) + (0, 'No connected'), + (1, 'Connected'), + (2, 'Configured'), + (3, 'Running'), + ) DEV_TYPES = ( - ('', 'Select a device type'), - ('rc', 'Radar Controller'), - ('dds', 'Direct Digital Synthesizer'), - ('jars', 'Jicamarca Radar Acquisition System'), - ('usrp', 'Universal Software Radio Peripheral'), - ('cgs', 'Clock Generator System'), - ('abs', 'Automatic Beam Switching'), -) + ('', 'Select a device type'), + ('rc', 'Radar Controller'), + ('dds', 'Direct Digital Synthesizer'), + ('jars', 'Jicamarca Radar Acquisition System'), + ('usrp', 'Universal Software Radio Peripheral'), + ('cgs', 'Clock Generator System'), + ('abs', 'Automatic Beam Switching'), + ) + +DEV_PORTS = { + 'rc' : 2000, + 'dds' : 2000, + 'jars' : 2000, + 'usrp' : 2000, + 'cgs' : 8080, + 'abs' : 8080 + } # Create your models here. @@ -71,15 +80,21 @@ class Device(models.Model): def __unicode__(self): return u'%s | %s' % (self.name, self.ip_address) + + def get_status(self): + + return self.status + class Campaign(models.Model): + template = models.BooleanField(default=False) + name = models.CharField(max_length=40, unique=True) start_date = models.DateTimeField(blank=True, null=True) end_date = models.DateTimeField(blank=True, null=True) tags = models.CharField(max_length=40) description = models.TextField(blank=True, null=True) - template = models.BooleanField(default=False) class Meta: db_table = 'db_campaigns' @@ -89,6 +104,8 @@ class Campaign(models.Model): class Experiment(models.Model): + template = models.BooleanField(default=False) + campaign = models.ForeignKey(Campaign) name = models.CharField(max_length=40, default='') start_time = models.TimeField(default='00:00:00') @@ -102,14 +119,15 @@ class Experiment(models.Model): class Configuration(PolymorphicModel): + template = models.BooleanField(default=False) + + name = models.CharField(verbose_name="Configuration Name", max_length=40, default='') + experiment = models.ForeignKey(Experiment) device = models.ForeignKey(Device) - status = models.PositiveSmallIntegerField(default=0, choices=CONF_STATES) type = models.PositiveSmallIntegerField(default=0, choices=CONF_TYPES) - name = models.CharField(max_length=40, default='') - created_date = models.DateTimeField(auto_now_add=True) programmed_date = models.DateTimeField(auto_now=True) @@ -120,10 +138,10 @@ class Configuration(PolymorphicModel): def __unicode__(self): return u'[%s - %s]: %s' % (self.experiment.campaign.name, - self.experiment.name, - self.device.name) - def get_absolute_url(self): + self.experiment.name, + self.device.name) + def get_absolute_url(self): return reverse('url_%s_conf' % self.device.device_type.name, args=[str(self.id)]) def get_absolute_url_edit(self): diff --git a/apps/main/templatetags/main_tags.py b/apps/main/templatetags/main_tags.py index 76d2217..59a1c88 100644 --- a/apps/main/templatetags/main_tags.py +++ b/apps/main/templatetags/main_tags.py @@ -22,7 +22,6 @@ def value(instance, key): item = instance for my_key in key.split("__"): - print "TP Value", item, my_key item = attr(item, my_key) print item diff --git a/apps/main/views.py b/apps/main/views.py index bcf79f1..07e08ce 100644 --- a/apps/main/views.py +++ b/apps/main/views.py @@ -448,7 +448,7 @@ def dev_conf(request, id_conf): kwargs = {} kwargs['dev_conf'] = dev_conf - kwargs['dev_conf_keys'] = ['experiment', 'device'] + kwargs['dev_conf_keys'] = ['name', 'experiment', 'device'] kwargs['title'] = 'Configuration' kwargs['suptitle'] = 'Details' @@ -466,22 +466,17 @@ def dev_conf_new(request, id_exp=0): form = ConfigurationForm(initial={'experiment':id_exp}) if request.method == 'POST': - form = ConfigurationForm(request.POST) + experiment = Experiment.objects.get(pk=request.POST['experiment']) + device = Device.objects.get(pk=request.POST['device']) + + DevConfForm = CONF_FORMS[device.device_type.name] + + form = DevConfForm(request.POST, initial={'experiment':experiment.id}) if form.is_valid(): - experiment = Experiment.objects.get(pk=request.POST['experiment']) - device = Device.objects.get(pk=request.POST['device']) - - exp_devices = Device.objects.filter(configuration__experiment=experiment, - configuration__type=0) - - if device.id not in exp_devices.values('id',): - - DevConfModel = CONF_MODELS[device.device_type.name] - conf = DevConfModel(experiment=experiment, device=device) - conf.save() - - return redirect('url_experiment', id_exp=experiment.id) + dev_conf = form.save() + + return redirect('url_experiment', id_exp=experiment.id) kwargs = {} kwargs['form'] = form