@@ -1,4 +1,4 | |||||
1 |
|
1 | from django.shortcuts import render, redirect, get_object_or_404, HttpResponse | ||
2 | from datetime import datetime |
|
2 | from datetime import datetime | |
3 |
|
3 | |||
4 | from django.db import models |
|
4 | from django.db import models | |
@@ -130,6 +130,24 class Campaign(models.Model): | |||||
130 | def get_absolute_url(self): |
|
130 | def get_absolute_url(self): | |
131 | return reverse('url_campaign', args=[str(self.id)]) |
|
131 | return reverse('url_campaign', args=[str(self.id)]) | |
132 |
|
132 | |||
|
133 | def parms_to_dict(self): | |||
|
134 | ||||
|
135 | import json | |||
|
136 | ||||
|
137 | parameters = {} | |||
|
138 | experiments = Experiment.objects.filter(campaign = campaign) | |||
|
139 | ||||
|
140 | ||||
|
141 | parameters['campaign'] = self.name | |||
|
142 | ||||
|
143 | #parameters = json.dumps(parameters, indent=2) | |||
|
144 | parameters = json.dumps(parameters) | |||
|
145 | return parameters | |||
|
146 | ||||
|
147 | def get_absolute_url_export(self): | |||
|
148 | return reverse('url_export_campaign', args=[str(self.id)]) | |||
|
149 | ||||
|
150 | ||||
133 |
|
151 | |||
134 | class RunningExperiment(models.Model): |
|
152 | class RunningExperiment(models.Model): | |
135 | radar = models.OneToOneField('Location', on_delete=models.CASCADE) |
|
153 | radar = models.OneToOneField('Location', on_delete=models.CASCADE) | |
@@ -220,6 +238,41 class Experiment(models.Model): | |||||
220 | def get_absolute_url(self): |
|
238 | def get_absolute_url(self): | |
221 | return reverse('url_experiment', args=[str(self.id)]) |
|
239 | return reverse('url_experiment', args=[str(self.id)]) | |
222 |
|
240 | |||
|
241 | def parms_to_dict(self): | |||
|
242 | ||||
|
243 | import json | |||
|
244 | ||||
|
245 | configurations = Configuration.objects.filter(experiment=self) | |||
|
246 | conf_parameters = {} | |||
|
247 | parameters={} | |||
|
248 | ||||
|
249 | for configuration in configurations: | |||
|
250 | if 'cgs' in configuration.device.device_type.name: | |||
|
251 | conf_parameters['cgs'] = configuration.parms_to_dict() | |||
|
252 | if 'dds' in configuration.device.device_type.name: | |||
|
253 | conf_parameters['dds'] = configuration.parms_to_dict() | |||
|
254 | if 'rc' in configuration.device.device_type.name: | |||
|
255 | conf_parameters['rc'] = configuration.parms_to_dict() | |||
|
256 | if 'jars' in configuration.device.device_type.name: | |||
|
257 | conf_parameters['jars'] = configuration.parms_to_dict() | |||
|
258 | if 'usrp' in configuration.device.device_type.name: | |||
|
259 | conf_parameters['usrp'] = configuration.parms_to_dict() | |||
|
260 | if 'abs' in configuration.device.device_type.name: | |||
|
261 | conf_parameters['abs'] = configuration.parms_to_dict() | |||
|
262 | ||||
|
263 | parameters['configurations'] = conf_parameters | |||
|
264 | parameters['end_time'] = self.end_time.strftime("%Y-%m-%d") | |||
|
265 | parameters['start_time'] = self.start_time.strftime("%Y-%m-%d") | |||
|
266 | parameters['radar'] = self.radar.name | |||
|
267 | parameters['experiment'] = self.name | |||
|
268 | parameters = json.dumps(parameters, indent=2) | |||
|
269 | #parameters = json.dumps(parameters) | |||
|
270 | ||||
|
271 | return parameters | |||
|
272 | ||||
|
273 | def get_absolute_url_export(self): | |||
|
274 | return reverse('url_export_experiment', args=[str(self.id)]) | |||
|
275 | ||||
223 |
|
276 | |||
224 | class Configuration(PolymorphicModel): |
|
277 | class Configuration(PolymorphicModel): | |
225 |
|
278 |
@@ -12,14 +12,38 | |||||
12 | {% block content-suptitle %}{{suptitle}}{% endblock %} |
|
12 | {% block content-suptitle %}{{suptitle}}{% endblock %} | |
13 |
|
13 | |||
14 | {% block content %} |
|
14 | {% block content %} | |
|
15 | ||||
|
16 | {% block menu-actions %} | |||
|
17 | <span class=" dropdown pull-right"> | |||
|
18 | <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-menu-hamburger gi-2x" aria-hidden="true"></span></a> | |||
|
19 | <ul class="dropdown-menu" role="menu"> | |||
|
20 | <li><a href="{% url 'url_edit_campaign' campaign.id %}"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Edit</a></li> | |||
|
21 | <li><a href="{% url 'url_delete_campaign' campaign.id %}"><span class="glyphicon glyphicon-remove-sign" 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> | |||
|
23 | <li><a href="{{ campaign.get_absolute_url_export }}"><span class="glyphicon glyphicon-export" aria-hidden="true"></span> Export </a></li> | |||
|
24 | {% block extra-menu-actions %} | |||
|
25 | {% endblock %} | |||
|
26 | <li><a>----------------</a></li> | |||
|
27 | <li><a href="#"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Mix Experiments</a></li> | |||
|
28 | <!--<li><a href="{{ dev_conf.get_absolute_url_status }}"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Status</a></li> | |||
|
29 | {% if not no_play %} | |||
|
30 | <li><a href="{{ dev_conf.get_absolute_url_start}}"><span class="glyphicon glyphicon-play" aria-hidden="true"></span> Start</a></li> | |||
|
31 | <li><a href="{{ dev_conf.get_absolute_url_stop }}"><span class="glyphicon glyphicon-stop" aria-hidden="true"></span> Stop</a></li> | |||
|
32 | {% endif %} | |||
|
33 | <li><a href="{{ dev_conf.get_absolute_url_write }}"><span class="glyphicon glyphicon-download" aria-hidden="true"></span> Write</a></li> | |||
|
34 | <li><a href="{{ dev_conf.get_absolute_url_read }}"><span class="glyphicon glyphicon-upload" aria-hidden="true"></span> Read</a></li>--> | |||
|
35 | </ul> | |||
|
36 | </span> | |||
|
37 | {% endblock %} | |||
|
38 | ||||
15 | <table class="table table-bordered"> |
|
39 | <table class="table table-bordered"> | |
16 | {% for key in campaign_keys %} |
|
40 | {% for key in campaign_keys %} | |
17 | <tr><th>{{key|title}}</th><td>{{campaign|attr:key}}</td></tr> |
|
41 | <tr><th>{{key|title}}</th><td>{{campaign|attr:key}}</td></tr> | |
18 | {% endfor %} |
|
42 | {% endfor %} | |
19 | </table> |
|
43 | </table> | |
20 |
|
44 | |||
21 | <button class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_export">Export</button> |
|
45 | <!--<button class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_export">Export</button>--> | |
22 | <button class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_edit">Edit</button> |
|
46 | <!--<button class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_edit">Edit</button>--> | |
23 |
|
47 | |||
24 | <br></br> |
|
48 | <br></br> | |
25 | <br></br> |
|
49 | <br></br> | |
@@ -72,12 +96,12 | |||||
72 | document.location = $(this).data("href"); |
|
96 | document.location = $(this).data("href"); | |
73 | }); |
|
97 | }); | |
74 |
|
98 | |||
75 |
|
|
99 | // $("#bt_edit").click(function() { | |
76 |
|
|
100 | // document.location = "{% url 'url_edit_campaign' campaign.id %}"; | |
77 |
|
|
101 | // }); | |
78 |
|
102 | |||
79 | $("#bt_mix").click(function() { |
|
103 | $("#bt_mix").click(function() { | |
80 | document.location = "{% url 'url_mix_campaign' campaign.id %}"; |
|
104 | ||
81 | }); |
|
105 | }); | |
82 |
|
106 | |||
83 | </script> |
|
107 | </script> |
@@ -12,13 +12,28 | |||||
12 | {% block content-suptitle %}{{suptitle}}{% endblock %} |
|
12 | {% block content-suptitle %}{{suptitle}}{% endblock %} | |
13 |
|
13 | |||
14 | {% block content %} |
|
14 | {% block content %} | |
|
15 | ||||
|
16 | {% block menu-actions %} | |||
|
17 | <span class=" dropdown pull-right"> | |||
|
18 | <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-menu-hamburger gi-2x" aria-hidden="true"></span></a> | |||
|
19 | <ul class="dropdown-menu" role="menu"> | |||
|
20 | <li><a href="{% url 'url_edit_experiment' experiment.id %}"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Edit</a></li> | |||
|
21 | <li><a href="{% url 'url_delete_experiment' experiment.id %}"><span class="glyphicon glyphicon-remove-sign" 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> | |||
|
23 | <li><a href="{{ experiment.get_absolute_url_export }}"><span class="glyphicon glyphicon-export" aria-hidden="true"></span> Export </a></li> | |||
|
24 | {% block extra-menu-actions %} | |||
|
25 | {% endblock %} | |||
|
26 | <li><a>----------------</a></li> | |||
|
27 | <li><a href="#"><span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span> Add Configuration</a></li> | |||
|
28 | </ul> | |||
|
29 | </span> | |||
|
30 | {% endblock %} | |||
|
31 | ||||
15 | <table class="table table-bordered"> |
|
32 | <table class="table table-bordered"> | |
16 | {% for key in experiment_keys %} |
|
33 | {% for key in experiment_keys %} | |
17 | <tr><th>{{key|title}}</th><td>{{experiment|attr:key}}</td></tr> |
|
34 | <tr><th>{{key|title}}</th><td>{{experiment|attr:key}}</td></tr> | |
18 | {% endfor %} |
|
35 | {% endfor %} | |
19 | </table> |
|
36 | </table> | |
20 | <button class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_export">Export</button> |
|
|||
21 | <button class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_edit">Edit</button> |
|
|||
22 | <br></br> |
|
37 | <br></br> | |
23 | <br></br> |
|
38 | <br></br> | |
24 |
|
39 |
@@ -18,12 +18,14 urlpatterns = ( | |||||
18 | url(r'^campaign/(?P<id_camp>-?\d+)/$', 'apps.main.views.campaign', name='url_campaign'), |
|
18 | url(r'^campaign/(?P<id_camp>-?\d+)/$', 'apps.main.views.campaign', name='url_campaign'), | |
19 | url(r'^campaign/(?P<id_camp>-?\d+)/edit/$', 'apps.main.views.campaign_edit', name='url_edit_campaign'), |
|
19 | url(r'^campaign/(?P<id_camp>-?\d+)/edit/$', 'apps.main.views.campaign_edit', name='url_edit_campaign'), | |
20 | url(r'^campaign/(?P<id_camp>-?\d+)/delete/$', 'apps.main.views.campaign_delete', name='url_delete_campaign'), |
|
20 | url(r'^campaign/(?P<id_camp>-?\d+)/delete/$', 'apps.main.views.campaign_delete', name='url_delete_campaign'), | |
|
21 | url(r'^campaign/(?P<id_camp>-?\d+)/export/$', 'apps.main.views.campaign_export', name='url_export_campaign'), | |||
21 |
|
22 | |||
22 | url(r'^experiment/new/$', 'apps.main.views.experiment_new', name='url_add_experiment'), |
|
23 | url(r'^experiment/new/$', 'apps.main.views.experiment_new', name='url_add_experiment'), | |
23 | url(r'^experiment/$', 'apps.main.views.experiments', name='url_experiments'), |
|
24 | url(r'^experiment/$', 'apps.main.views.experiments', name='url_experiments'), | |
24 | url(r'^experiment/(?P<id_exp>-?\d+)/$', 'apps.main.views.experiment', name='url_experiment'), |
|
25 | url(r'^experiment/(?P<id_exp>-?\d+)/$', 'apps.main.views.experiment', name='url_experiment'), | |
25 | url(r'^experiment/(?P<id_exp>-?\d+)/edit/$', 'apps.main.views.experiment_edit', name='url_edit_experiment'), |
|
26 | url(r'^experiment/(?P<id_exp>-?\d+)/edit/$', 'apps.main.views.experiment_edit', name='url_edit_experiment'), | |
26 | url(r'^experiment/(?P<id_exp>-?\d+)/delete/$', 'apps.main.views.experiment_delete', name='url_delete_experiment'), |
|
27 | url(r'^experiment/(?P<id_exp>-?\d+)/delete/$', 'apps.main.views.experiment_delete', name='url_delete_experiment'), | |
|
28 | url(r'^experiment/(?P<id_exp>-?\d+)/export/$', 'apps.main.views.experiment_export', name='url_export_experiment'), | |||
27 |
|
29 | |||
28 | url(r'^experiment/(?P<id_exp>-?\d+)/new_dev_conf/$', 'apps.main.views.dev_conf_new', name='url_add_dev_conf'), |
|
30 | url(r'^experiment/(?P<id_exp>-?\d+)/new_dev_conf/$', 'apps.main.views.dev_conf_new', name='url_add_dev_conf'), | |
29 | url(r'^experiment/(?P<id_exp>-?\d+)/new_dev_conf/(?P<id_dev>-?\d+)/$', 'apps.main.views.dev_conf_new', name='url_add_dev_conf'), |
|
31 | url(r'^experiment/(?P<id_exp>-?\d+)/new_dev_conf/(?P<id_dev>-?\d+)/$', 'apps.main.views.dev_conf_new', name='url_add_dev_conf'), |
@@ -404,6 +404,18 def campaign_delete(request, id_camp): | |||||
404 |
|
404 | |||
405 | return render(request, 'confirm.html', kwargs) |
|
405 | return render(request, 'confirm.html', kwargs) | |
406 |
|
406 | |||
|
407 | def campaign_export(request, id_camp): | |||
|
408 | ||||
|
409 | campaign = get_object_or_404(Campaign, pk=id_camp) | |||
|
410 | content = campaign.parms_to_dict() | |||
|
411 | content_type = 'application/json' | |||
|
412 | filename = '%s_%s.json' %(campaign.name, campaign.id) | |||
|
413 | ||||
|
414 | response = HttpResponse(content_type=content_type) | |||
|
415 | response['Content-Disposition'] = 'attachment; filename="%s"' %filename | |||
|
416 | response.write(content) | |||
|
417 | ||||
|
418 | return response | |||
407 |
|
419 | |||
408 | def experiments(request): |
|
420 | def experiments(request): | |
409 |
|
421 | |||
@@ -538,6 +550,20 def experiment_delete(request, id_exp): | |||||
538 | return render(request, 'confirm.html', kwargs) |
|
550 | return render(request, 'confirm.html', kwargs) | |
539 |
|
551 | |||
540 |
|
552 | |||
|
553 | def experiment_export(request, id_exp): | |||
|
554 | ||||
|
555 | experiment = get_object_or_404(Experiment, pk=id_exp) | |||
|
556 | content = experiment.parms_to_dict() | |||
|
557 | content_type = 'application/json' | |||
|
558 | filename = '%s_%s.json' %(experiment.name, experiment.id) | |||
|
559 | ||||
|
560 | response = HttpResponse(content_type=content_type) | |||
|
561 | response['Content-Disposition'] = 'attachment; filename="%s"' %filename | |||
|
562 | response.write(content) | |||
|
563 | ||||
|
564 | return response | |||
|
565 | ||||
|
566 | ||||
541 | def dev_confs(request): |
|
567 | def dev_confs(request): | |
542 |
|
568 | |||
543 | configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment') |
|
569 | configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment') |
General Comments 0
You need to be logged in to leave comments.
Login now