From e359672c5dc7ea77f9d51c6cf0dc416478dbe849 2016-04-19 23:42:26 From: Fiorella Quino Date: 2016-04-19 23:42:26 Subject: [PATCH] Export Campaign Export Experiment urls.py / models.py / views.py / campaign.html / experiment.html git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@121 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71 --- 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 %} {% endfor %}
{{key|title}}{{campaign|attr:key}}
- - + +



@@ -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 %} {% endfor %}
{{key|title}}{{experiment|attr:key}}
- -



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')