diff --git a/apps/cgs/models.py b/apps/cgs/models.py index 41b1b08..3adc74f 100644 --- a/apps/cgs/models.py +++ b/apps/cgs/models.py @@ -38,6 +38,8 @@ class CGSConfiguration(Configuration): parameters = {} + parameters['device_id'] = self.device.id + if self.freq0 == None or self.freq0 == '': parameters['freq0'] = 0 else: @@ -58,10 +60,17 @@ class CGSConfiguration(Configuration): else: parameters['freq3'] = self.freq3 - return parameters + def dict_to_parms(self, parameters): + + self.freq0 = parameters['freq0'] + self.freq1 = parameters['freq1'] + self.freq2 = parameters['freq2'] + self.freq3 = parameters['freq3'] + + def status_device(self): import requests diff --git a/apps/dds/models.py b/apps/dds/models.py index 67f4b8c..99cce2e 100644 --- a/apps/dds/models.py +++ b/apps/dds/models.py @@ -73,6 +73,8 @@ class DDSConfiguration(Configuration): parameters = {} + parameters['device_id'] = self.device.id + parameters['clock'] = float(self.clock) parameters['multiplier'] = int(self.multiplier) diff --git a/apps/main/models.py b/apps/main/models.py index f0e7ad6..10f053d 100644 --- a/apps/main/models.py +++ b/apps/main/models.py @@ -6,6 +6,7 @@ from polymorphic import PolymorphicModel from django.core.urlresolvers import reverse + CONF_STATES = ( (0, 'Disconnected'), (1, 'Connected'), @@ -146,18 +147,41 @@ class Campaign(models.Model): i += 1 - parameters['experimets'] =exp_parameters - parameters['end_date'] = self.end_date.strftime("%Y-%m-%d") - parameters['start_date'] = self.start_date.strftime("%Y-%m-%d") - parameters['campaign'] = self.__unicode__() + parameters['experiments'] = exp_parameters + parameters['end_date'] = self.end_date.strftime("%Y-%m-%d") + parameters['start_date'] = self.start_date.strftime("%Y-%m-%d") + parameters['campaign'] = self.__unicode__() + parameters['tags'] =self.tags parameters = json.dumps(parameters, indent=2, sort_keys=False) return parameters + def import_from_file(self, fp): + + import os, json + + parms = {} + + path, ext = os.path.splitext(fp.name) + + if ext == '.json': + parms = json.load(fp) + + return parms + + def get_absolute_url(self): + return reverse('url_campaign', args=[str(self.id)]) + + def get_absolute_url_edit(self): + return reverse('url_edit_campaign', args=[str(self.id)]) + def get_absolute_url_export(self): return reverse('url_export_campaign', args=[str(self.id)]) + def get_absolute_url_import(self): + return reverse('url_import_campaign', args=[str(self.id)]) + class RunningExperiment(models.Model): @@ -169,7 +193,6 @@ class RunningExperiment(models.Model): class Experiment(models.Model): template = models.BooleanField(default=False) - location = models.ForeignKey('Location', null=True, blank=True, on_delete=models.CASCADE) name = models.CharField(max_length=40, default='', unique=True) location = models.ForeignKey('Location', null=True, blank=True, on_delete=models.CASCADE) start_time = models.TimeField(default='00:00:00') @@ -272,15 +295,84 @@ class Experiment(models.Model): conf_parameters['abs'] = configuration.parms_to_dict() parameters['configurations'] = conf_parameters - parameters['end_time'] = self.end_time.strftime("%Y-%m-%d") - parameters['start_time'] = self.start_time.strftime("%Y-%m-%d") - parameters['radar'] = self.radar.name - parameters['experiment'] = self.name + parameters['end_time'] = self.end_time.strftime("%H:%M:%S") + parameters['start_time'] = self.start_time.strftime("%H:%M:%S") + parameters['radar'] = self.radar.name + parameters['experiment'] = self.name parameters = json.dumps(parameters, indent=2) - #parameters = json.dumps(parameters) return parameters + def import_from_file(self, fp): + + import os, json + + parms = {} + + path, ext = os.path.splitext(fp.name) + + if ext == '.json': + parms = json.load(fp) + + return parms + + def dict_to_parms(self, parms, CONF_MODELS): + + #self.name = parameters['experiment'] + #self.location = parameters['radar'] + #self.start_time = parameters['start_time'] + #self.end_time = parameters['end_time'] + + configurations = Configuration.objects.filter(experiment=self) + + if configurations: + for configuration in configurations: + configuration.delete() + + for conf_type in parms['configurations']: + #--For ABS Device: + #--For USRP Device: + #--For JARS Device: + #--For RC Device: + if conf_type == 'rc': + device = get_object_or_404(Device, pk=parms['configurations']['rc']['device_id']) + DevConfModel = CONF_MODELS[conf_type] + confrc_form = DevConfModel( + experiment = self, + name = 'RC', + device=device, + ) + confrc_form.dict_to_parms(parms['configurations']['rc']) + confrc_form.save() + #--For DDS Device: + if conf_type == 'dds': + device = get_object_or_404(Device, pk=parms['configurations']['dds']['device_id']) + DevConfModel = CONF_MODELS[conf_type] + confdds_form = DevConfModel( + experiment = self, + name = 'DDS', + device=device, + ) + confdds_form.dict_to_parms(parms['configurations']['dds']) + confdds_form.save() + #--For CGS Device: + if conf_type == 'cgs': + device = get_object_or_404(Device, pk=parms['configurations']['cgs']['device_id']) + DevConfModel = CONF_MODELS[conf_type] + confcgs_form = DevConfModel( + experiment = self, + name = 'CGS', + device=device, + ) + confcgs_form.dict_to_parms(parms['configurations']['cgs']) + confcgs_form.save() + + def get_absolute_url_edit(self): + return reverse('url_edit_experiment', args=[str(self.id)]) + + def get_absolute_url_import(self): + return reverse('url_import_experiment', args=[str(self.id)]) + def get_absolute_url_export(self): return reverse('url_export_experiment', args=[str(self.id)]) diff --git a/apps/main/templates/campaign.html b/apps/main/templates/campaign.html index 6c280b5..e68bd8a 100644 --- a/apps/main/templates/campaign.html +++ b/apps/main/templates/campaign.html @@ -19,7 +19,7 @@