diff --git a/apps/main/models.py b/apps/main/models.py
index eaaf822..c919851 100644
--- a/apps/main/models.py
+++ b/apps/main/models.py
@@ -1,4 +1,4 @@
-
+from django.shortcuts import render, redirect, get_object_or_404, HttpResponse
from datetime import datetime
from django.db import models
@@ -130,6 +130,24 @@ class Campaign(models.Model):
def get_absolute_url(self):
return reverse('url_campaign', args=[str(self.id)])
+ def parms_to_dict(self):
+
+ import json
+
+ parameters = {}
+ experiments = Experiment.objects.filter(campaign = campaign)
+
+
+ parameters['campaign'] = self.name
+
+ #parameters = json.dumps(parameters, indent=2)
+ parameters = json.dumps(parameters)
+ return parameters
+
+ def get_absolute_url_export(self):
+ return reverse('url_export_campaign', args=[str(self.id)])
+
+
class RunningExperiment(models.Model):
radar = models.OneToOneField('Location', on_delete=models.CASCADE)
@@ -220,6 +238,41 @@ class Experiment(models.Model):
def get_absolute_url(self):
return reverse('url_experiment', args=[str(self.id)])
+ def parms_to_dict(self):
+
+ import json
+
+ configurations = Configuration.objects.filter(experiment=self)
+ conf_parameters = {}
+ parameters={}
+
+ for configuration in configurations:
+ if 'cgs' in configuration.device.device_type.name:
+ conf_parameters['cgs'] = configuration.parms_to_dict()
+ if 'dds' in configuration.device.device_type.name:
+ conf_parameters['dds'] = configuration.parms_to_dict()
+ if 'rc' in configuration.device.device_type.name:
+ conf_parameters['rc'] = configuration.parms_to_dict()
+ if 'jars' in configuration.device.device_type.name:
+ conf_parameters['jars'] = configuration.parms_to_dict()
+ if 'usrp' in configuration.device.device_type.name:
+ conf_parameters['usrp'] = configuration.parms_to_dict()
+ if 'abs' in configuration.device.device_type.name:
+ 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 = json.dumps(parameters, indent=2)
+ #parameters = json.dumps(parameters)
+
+ return parameters
+
+ def get_absolute_url_export(self):
+ return reverse('url_export_experiment', args=[str(self.id)])
+
class Configuration(PolymorphicModel):
diff --git a/apps/main/templates/campaign.html b/apps/main/templates/campaign.html
index 23f7bba..3a25420 100644
--- a/apps/main/templates/campaign.html
+++ b/apps/main/templates/campaign.html
@@ -12,14 +12,38 @@
{% block content-suptitle %}{{suptitle}}{% endblock %}
{% block content %}
+
+{% block menu-actions %}
+
+
+
+
+{% endblock %}
+
{% for key in campaign_keys %}
{{key|title}} | {{campaign|attr:key}} |
{% endfor %}
-
-
+
+
@@ -72,12 +96,12 @@
document.location = $(this).data("href");
});
- $("#bt_edit").click(function() {
- document.location = "{% url 'url_edit_campaign' campaign.id %}";
- });
+// $("#bt_edit").click(function() {
+// document.location = "{% url 'url_edit_campaign' campaign.id %}";
+// });
$("#bt_mix").click(function() {
- document.location = "{% url 'url_mix_campaign' campaign.id %}";
+
});
diff --git a/apps/main/templates/experiment.html b/apps/main/templates/experiment.html
index 9354435..980679c 100644
--- a/apps/main/templates/experiment.html
+++ b/apps/main/templates/experiment.html
@@ -12,13 +12,28 @@
{% block content-suptitle %}{{suptitle}}{% endblock %}
{% block content %}
+
+{% block menu-actions %}
+
+
+
+
+{% endblock %}
+
{% for key in experiment_keys %}
{{key|title}} | {{experiment|attr:key}} |
{% endfor %}
-
-
diff --git a/apps/main/urls.py b/apps/main/urls.py
index 527695a..e956300 100644
--- a/apps/main/urls.py
+++ b/apps/main/urls.py
@@ -18,12 +18,14 @@ urlpatterns = (
url(r'^campaign/(?P-?\d+)/$', 'apps.main.views.campaign', name='url_campaign'),
url(r'^campaign/(?P-?\d+)/edit/$', 'apps.main.views.campaign_edit', name='url_edit_campaign'),
url(r'^campaign/(?P-?\d+)/delete/$', 'apps.main.views.campaign_delete', name='url_delete_campaign'),
+ url(r'^campaign/(?P-?\d+)/export/$', 'apps.main.views.campaign_export', name='url_export_campaign'),
url(r'^experiment/new/$', 'apps.main.views.experiment_new', name='url_add_experiment'),
url(r'^experiment/$', 'apps.main.views.experiments', name='url_experiments'),
url(r'^experiment/(?P-?\d+)/$', 'apps.main.views.experiment', name='url_experiment'),
url(r'^experiment/(?P-?\d+)/edit/$', 'apps.main.views.experiment_edit', name='url_edit_experiment'),
url(r'^experiment/(?P-?\d+)/delete/$', 'apps.main.views.experiment_delete', name='url_delete_experiment'),
+ url(r'^experiment/(?P-?\d+)/export/$', 'apps.main.views.experiment_export', name='url_export_experiment'),
url(r'^experiment/(?P-?\d+)/new_dev_conf/$', 'apps.main.views.dev_conf_new', name='url_add_dev_conf'),
url(r'^experiment/(?P-?\d+)/new_dev_conf/(?P-?\d+)/$', 'apps.main.views.dev_conf_new', name='url_add_dev_conf'),
diff --git a/apps/main/views.py b/apps/main/views.py
index 668f40e..a5816a5 100644
--- a/apps/main/views.py
+++ b/apps/main/views.py
@@ -404,6 +404,18 @@ def campaign_delete(request, id_camp):
return render(request, 'confirm.html', kwargs)
+def campaign_export(request, id_camp):
+
+ campaign = get_object_or_404(Campaign, pk=id_camp)
+ content = campaign.parms_to_dict()
+ content_type = 'application/json'
+ filename = '%s_%s.json' %(campaign.name, campaign.id)
+
+ response = HttpResponse(content_type=content_type)
+ response['Content-Disposition'] = 'attachment; filename="%s"' %filename
+ response.write(content)
+
+ return response
def experiments(request):
@@ -538,6 +550,20 @@ def experiment_delete(request, id_exp):
return render(request, 'confirm.html', kwargs)
+def experiment_export(request, id_exp):
+
+ experiment = get_object_or_404(Experiment, pk=id_exp)
+ content = experiment.parms_to_dict()
+ content_type = 'application/json'
+ filename = '%s_%s.json' %(experiment.name, experiment.id)
+
+ response = HttpResponse(content_type=content_type)
+ response['Content-Disposition'] = 'attachment; filename="%s"' %filename
+ response.write(content)
+
+ return response
+
+
def dev_confs(request):
configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment')