##// END OF EJS Templates
Import Experiment Function...
Fiorella Quino -
r108:999098167c8a
parent child
Show More
@@ -0,0 +1,1
1 {% extends "campaign_edit.html" %} No newline at end of file
@@ -0,0 +1,1
1 {% extends "experiment_edit.html" %} No newline at end of file
@@ -38,6 +38,8 class CGSConfiguration(Configuration):
38 38
39 39 parameters = {}
40 40
41 parameters['device_id'] = self.device.id
42
41 43 if self.freq0 == None or self.freq0 == '':
42 44 parameters['freq0'] = 0
43 45 else:
@@ -58,10 +60,17 class CGSConfiguration(Configuration):
58 60 else:
59 61 parameters['freq3'] = self.freq3
60 62
61
62 63 return parameters
63 64
64 65
66 def dict_to_parms(self, parameters):
67
68 self.freq0 = parameters['freq0']
69 self.freq1 = parameters['freq1']
70 self.freq2 = parameters['freq2']
71 self.freq3 = parameters['freq3']
72
73
65 74 def status_device(self):
66 75
67 76 import requests
@@ -73,6 +73,8 class DDSConfiguration(Configuration):
73 73
74 74 parameters = {}
75 75
76 parameters['device_id'] = self.device.id
77
76 78 parameters['clock'] = float(self.clock)
77 79 parameters['multiplier'] = int(self.multiplier)
78 80
@@ -6,6 +6,7 from polymorphic import PolymorphicModel
6 6
7 7 from django.core.urlresolvers import reverse
8 8
9
9 10 CONF_STATES = (
10 11 (0, 'Disconnected'),
11 12 (1, 'Connected'),
@@ -146,18 +147,41 class Campaign(models.Model):
146 147 i += 1
147 148
148 149
149 parameters['experimets'] =exp_parameters
150 parameters['end_date'] = self.end_date.strftime("%Y-%m-%d")
151 parameters['start_date'] = self.start_date.strftime("%Y-%m-%d")
152 parameters['campaign'] = self.__unicode__()
150 parameters['experiments'] = exp_parameters
151 parameters['end_date'] = self.end_date.strftime("%Y-%m-%d")
152 parameters['start_date'] = self.start_date.strftime("%Y-%m-%d")
153 parameters['campaign'] = self.__unicode__()
154 parameters['tags'] =self.tags
153 155
154 156 parameters = json.dumps(parameters, indent=2, sort_keys=False)
155 157
156 158 return parameters
157 159
160 def import_from_file(self, fp):
161
162 import os, json
163
164 parms = {}
165
166 path, ext = os.path.splitext(fp.name)
167
168 if ext == '.json':
169 parms = json.load(fp)
170
171 return parms
172
173 def get_absolute_url(self):
174 return reverse('url_campaign', args=[str(self.id)])
175
176 def get_absolute_url_edit(self):
177 return reverse('url_edit_campaign', args=[str(self.id)])
178
158 179 def get_absolute_url_export(self):
159 180 return reverse('url_export_campaign', args=[str(self.id)])
160 181
182 def get_absolute_url_import(self):
183 return reverse('url_import_campaign', args=[str(self.id)])
184
161 185
162 186
163 187 class RunningExperiment(models.Model):
@@ -169,7 +193,6 class RunningExperiment(models.Model):
169 193 class Experiment(models.Model):
170 194
171 195 template = models.BooleanField(default=False)
172 location = models.ForeignKey('Location', null=True, blank=True, on_delete=models.CASCADE)
173 196 name = models.CharField(max_length=40, default='', unique=True)
174 197 location = models.ForeignKey('Location', null=True, blank=True, on_delete=models.CASCADE)
175 198 start_time = models.TimeField(default='00:00:00')
@@ -272,15 +295,84 class Experiment(models.Model):
272 295 conf_parameters['abs'] = configuration.parms_to_dict()
273 296
274 297 parameters['configurations'] = conf_parameters
275 parameters['end_time'] = self.end_time.strftime("%Y-%m-%d")
276 parameters['start_time'] = self.start_time.strftime("%Y-%m-%d")
277 parameters['radar'] = self.radar.name
278 parameters['experiment'] = self.name
298 parameters['end_time'] = self.end_time.strftime("%H:%M:%S")
299 parameters['start_time'] = self.start_time.strftime("%H:%M:%S")
300 parameters['radar'] = self.radar.name
301 parameters['experiment'] = self.name
279 302 parameters = json.dumps(parameters, indent=2)
280 #parameters = json.dumps(parameters)
281 303
282 304 return parameters
283 305
306 def import_from_file(self, fp):
307
308 import os, json
309
310 parms = {}
311
312 path, ext = os.path.splitext(fp.name)
313
314 if ext == '.json':
315 parms = json.load(fp)
316
317 return parms
318
319 def dict_to_parms(self, parms, CONF_MODELS):
320
321 #self.name = parameters['experiment']
322 #self.location = parameters['radar']
323 #self.start_time = parameters['start_time']
324 #self.end_time = parameters['end_time']
325
326 configurations = Configuration.objects.filter(experiment=self)
327
328 if configurations:
329 for configuration in configurations:
330 configuration.delete()
331
332 for conf_type in parms['configurations']:
333 #--For ABS Device:
334 #--For USRP Device:
335 #--For JARS Device:
336 #--For RC Device:
337 if conf_type == 'rc':
338 device = get_object_or_404(Device, pk=parms['configurations']['rc']['device_id'])
339 DevConfModel = CONF_MODELS[conf_type]
340 confrc_form = DevConfModel(
341 experiment = self,
342 name = 'RC',
343 device=device,
344 )
345 confrc_form.dict_to_parms(parms['configurations']['rc'])
346 confrc_form.save()
347 #--For DDS Device:
348 if conf_type == 'dds':
349 device = get_object_or_404(Device, pk=parms['configurations']['dds']['device_id'])
350 DevConfModel = CONF_MODELS[conf_type]
351 confdds_form = DevConfModel(
352 experiment = self,
353 name = 'DDS',
354 device=device,
355 )
356 confdds_form.dict_to_parms(parms['configurations']['dds'])
357 confdds_form.save()
358 #--For CGS Device:
359 if conf_type == 'cgs':
360 device = get_object_or_404(Device, pk=parms['configurations']['cgs']['device_id'])
361 DevConfModel = CONF_MODELS[conf_type]
362 confcgs_form = DevConfModel(
363 experiment = self,
364 name = 'CGS',
365 device=device,
366 )
367 confcgs_form.dict_to_parms(parms['configurations']['cgs'])
368 confcgs_form.save()
369
370 def get_absolute_url_edit(self):
371 return reverse('url_edit_experiment', args=[str(self.id)])
372
373 def get_absolute_url_import(self):
374 return reverse('url_import_experiment', args=[str(self.id)])
375
284 376 def get_absolute_url_export(self):
285 377 return reverse('url_export_experiment', args=[str(self.id)])
286 378
@@ -19,7 +19,7
19 19 <ul class="dropdown-menu" role="menu">
20 20 <li><a href="{% url 'url_edit_campaign' campaign.id %}"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Edit</a></li>
21 21 <li><a href="{% url 'url_delete_campaign' campaign.id %}"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Delete</a></li>
22 <li><a href="{{ dev_conf.get_absolute_url_import }}"><span class="glyphicon glyphicon-import" aria-hidden="true"></span> Import </a></li>
22 <li><a href="{{ campaign.get_absolute_url_import }}"><span class="glyphicon glyphicon-import" aria-hidden="true"></span> Import </a></li>
23 23 <li><a href="{{ campaign.get_absolute_url_export }}"><span class="glyphicon glyphicon-export" aria-hidden="true"></span> Export </a></li>
24 24 {% block extra-menu-actions %}
25 25 {% endblock %}
@@ -19,13 +19,14
19 19 <ul class="dropdown-menu" role="menu">
20 20 <li><a href="{% url 'url_edit_experiment' experiment.id %}"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Edit</a></li>
21 21 <li><a href="{% url 'url_delete_experiment' experiment.id %}"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Delete</a></li>
22 <li><a href="{{ dev_conf.get_absolute_url_import }}"><span class="glyphicon glyphicon-import" aria-hidden="true"></span> Import </a></li>
22 <li><a href="{{ experiment.get_absolute_url_import }}"><span class="glyphicon glyphicon-import" aria-hidden="true"></span> Import </a></li>
23 23 <li><a href="{{ experiment.get_absolute_url_export }}"><span class="glyphicon glyphicon-export" aria-hidden="true"></span> Export </a></li>
24 24 {% block extra-menu-actions %}
25 25 {% endblock %}
26 26 <li><a>----------------</a></li>
27 27 <li><a href="{% url 'url_mix_experiment' experiment.id %}"><span class="glyphicon glyphicon-random" aria-hidden="true"></span> Mix RC Configurations </a></li>
28 28 <li><a href="{% url 'url_add_dev_conf' experiment.id %}"><span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span> Add Configuration</a></li>
29
29 30 </ul>
30 31 </span>
31 32 {% endblock %}
@@ -19,6 +19,7 urlpatterns = (
19 19 url(r'^campaign/(?P<id_camp>-?\d+)/edit/$', 'apps.main.views.campaign_edit', name='url_edit_campaign'),
20 20 url(r'^campaign/(?P<id_camp>-?\d+)/delete/$', 'apps.main.views.campaign_delete', name='url_delete_campaign'),
21 21 url(r'^campaign/(?P<id_camp>-?\d+)/export/$', 'apps.main.views.campaign_export', name='url_export_campaign'),
22 url(r'^campaign/(?P<id_camp>-?\d+)/import/$', 'apps.main.views.campaign_import', name='url_import_campaign'),
22 23
23 24 url(r'^experiment/new/$', 'apps.main.views.experiment_new', name='url_add_experiment'),
24 25 url(r'^experiment/$', 'apps.main.views.experiments', name='url_experiments'),
@@ -26,6 +27,7 urlpatterns = (
26 27 url(r'^experiment/(?P<id_exp>-?\d+)/edit/$', 'apps.main.views.experiment_edit', name='url_edit_experiment'),
27 28 url(r'^experiment/(?P<id_exp>-?\d+)/delete/$', 'apps.main.views.experiment_delete', name='url_delete_experiment'),
28 29 url(r'^experiment/(?P<id_exp>-?\d+)/export/$', 'apps.main.views.experiment_export', name='url_export_experiment'),
30 url(r'^experiment/(?P<id_exp>-?\d+)/import/$', 'apps.main.views.experiment_import', name='url_import_experiment'),
29 31 url(r'^experiment/(?P<id_exp>-?\d+)/mix/$', 'apps.main.views.experiment_mix', name='url_mix_experiment'),
30 32 url(r'^experiment/(?P<id_exp>-?\d+)/mix/delete/$', 'apps.main.views.experiment_mix_delete', name='url_delete_mix_experiment'),
31 33
@@ -426,6 +426,64 def campaign_export(request, id_camp):
426 426
427 427 return response
428 428
429
430 def campaign_import(request, id_camp):
431 ###------FALTA CORREGIR!!!!!-----###
432 campaign = get_object_or_404(Campaign, pk=id_camp)
433 experiments = Experiment.objects.filter(campaign=campaign)
434 configurations = Configuration.objects.filter(experiment=experiments)
435
436 if request.method == 'GET':
437 file_form = UploadFileForm()
438
439 if request.method == 'POST':
440 file_form = UploadFileForm(request.POST, request.FILES)
441
442 if file_form.is_valid():
443
444 parms = campaign.import_from_file(request.FILES['file'])
445
446 if parms:
447 location = Location.objects.get(name = parms['radar'])
448 parms['location'] = location.id
449 parms['name'] = parms['experiment']
450
451 campaign.dict_to_parms(parms, CONF_MODELS)
452
453 messages.success(request, "Parameters imported from: '%s'." %request.FILES['file'].name)
454
455 form = CampaignForm(initial=parms, instance=campaign)
456
457 kwargs = {}
458 #kwargs['id_dev'] = conf.id
459 kwargs['form'] = form
460 kwargs['title'] = 'Campaign'
461 kwargs['suptitle'] = 'Parameters imported'
462 kwargs['button'] = 'Save'
463 kwargs['action'] = campaign.get_absolute_url_edit()
464 kwargs['previous'] = campaign.get_absolute_url()
465
466
467 ###### SIDEBAR ######
468 #kwargs.update(sidebar(conf=conf))
469 #kwargs.update(sidebar(campaign=campaign))
470
471 return render(request, 'campaign_edit.html', kwargs)
472
473 messages.error(request, "Could not import parameters from file")
474
475 kwargs = {}
476 #kwargs['id_dev'] = conf.id
477 kwargs['title'] = 'Campaign'
478 kwargs['form'] = file_form
479 kwargs['suptitle'] = 'Importing file'
480 kwargs['button'] = 'Import'
481
482 #kwargs.update(sidebar(campaign=campaign))
483
484 return render(request, 'campaign_import.html', kwargs)
485
486
429 487 def experiments(request):
430 488
431 489 experiment_list = Experiment.objects.all()
@@ -572,6 +630,59 def experiment_export(request, id_exp):
572 630
573 631 return response
574 632
633 def experiment_import(request, id_exp):
634
635 experiment = get_object_or_404(Experiment, pk=id_exp)
636 configurations = Configuration.objects.filter(experiment=experiment)
637
638 if request.method == 'GET':
639 file_form = UploadFileForm()
640
641 if request.method == 'POST':
642 file_form = UploadFileForm(request.POST, request.FILES)
643
644 if file_form.is_valid():
645
646 parms = experiment.import_from_file(request.FILES['file'])
647
648 if parms:
649 location = Location.objects.get(name = parms['radar'])
650 parms['location'] = location.id
651 parms['name'] = parms['experiment']
652
653 experiment.dict_to_parms(parms, CONF_MODELS)
654
655 messages.success(request, "Parameters imported from: '%s'." %request.FILES['file'].name)
656
657 form = ExperimentForm(initial=parms, instance=experiment)
658
659 kwargs = {}
660 #kwargs['id_dev'] = conf.id
661 kwargs['form'] = form
662 kwargs['title'] = 'Experiment'
663 kwargs['suptitle'] = 'Parameters imported'
664 kwargs['button'] = 'Save'
665 kwargs['action'] = experiment.get_absolute_url_edit()
666 kwargs['previous'] = experiment.get_absolute_url()
667
668 ###### SIDEBAR ######
669 #kwargs.update(sidebar(conf=conf))
670 kwargs.update(sidebar(experiment=experiment))
671
672 return render(request, 'experiment_edit.html', kwargs)
673
674 messages.error(request, "Could not import parameters from file")
675
676 kwargs = {}
677 #kwargs['id_dev'] = conf.id
678 kwargs['title'] = 'Experiment'
679 kwargs['form'] = file_form
680 kwargs['suptitle'] = 'Importing file'
681 kwargs['button'] = 'Import'
682
683 kwargs.update(sidebar(experiment=experiment))
684
685 return render(request, 'experiment_import.html', kwargs)
575 686
576 687 def experiment_mix(request, id_exp):
577 688
General Comments 0
You need to be logged in to leave comments. Login now