##// END OF EJS Templates
Task 487: Operation View gets status from database and radar_refresh button updates status...
Fiorella Quino -
r88:35eccea3581b
parent child
Show More
@@ -1,144 +1,149
1 {% extends "base.html" %}
1 {% extends "base.html" %}
2 {% load bootstrap3 %}
2 {% load bootstrap3 %}
3 {% load static %}
3 {% load static %}
4 {% load main_tags %}
4 {% load main_tags %}
5 {% block extra-head %}
5 {% block extra-head %}
6 <link href="{% static 'css/bootstrap-datetimepicker.min.css' %}" media="screen" rel="stylesheet">
6 <link href="{% static 'css/bootstrap-datetimepicker.min.css' %}" media="screen" rel="stylesheet">
7 {% endblock %}
7 {% endblock %}
8
8
9 {% block camp-active %}active{% endblock %}
9 {% block camp-active %}active{% endblock %}
10
10
11 {% block content-title %}{{title}}{% endblock %}
11 {% block content-title %}{{title}}{% endblock %}
12 {% block content-suptitle %}{{suptitle}}{% endblock %}
12 {% block content-suptitle %}{{suptitle}}{% endblock %}
13
13
14 {% block content %}
14 {% block content %}
15
15
16 <!-- Not Empty-->
16 <!-- Not Empty-->
17 {% if details %}
17 {% if details %}
18
18
19 <form class="form" method="post" action="">
19 <form class="form" method="post" action="">
20 {% csrf_token %}
20 {% csrf_token %}
21
21
22 {% bootstrap_form form layout='horizontal' size='medium' %}
22 {% bootstrap_form form layout='horizontal' size='medium' %}
23 <div style="clear: both;"></div>
23 <div style="clear: both;"></div>
24 <br>
24 <br>
25 <!-- For deep search -->
25 <!-- For deep search -->
26 {% if search_button == True %}
26 {% if search_button == True %}
27 <button id="button-1" type="button" class="btn btn-primary pull-right">{{button}}</button>
27 <button id="button-1" type="button" class="btn btn-primary pull-right">{{button}}</button>
28 {% endif %}
28 {% endif %}
29 <br>
29 <br>
30 <br>
30 <br>
31 </form>
31 </form>
32 <br>
32 <br>
33 <br>
33 <br>
34
34
35 {% endif %}
35 {% endif %}
36
36
37 <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true" >
37 <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true" >
38
38
39 {% for location in locations %}
39 {% for location in locations %}
40
40
41 <div class="panel panel-default">
41 <div class="panel panel-default">
42 <div class="panel-heading" role="tab" id="headingTwo">
42 <div class="panel-heading" role="tab" id="headingTwo">
43 <h4 class="panel-title">
43 <h4 class="panel-title">
44
44
45 <a class="collapsed" role="button" data-toggle="collapse" href="#collapseTwo-{{ location.id }}" aria-expanded="false" aria-controls="collapseTwo">
45 <a class="collapsed" role="button" data-toggle="collapse" href="#collapseTwo-{{ location.id }}" aria-expanded="false" aria-controls="collapseTwo">
46 {{location.name}}: Experiment List
46 {{location.name}}: Experiment List
47 <span>
47 <span>
48 </span>
48 </span>
49 </a>
49 </a>
50
50
51 <button type="button" name="bt_play" class="btn btn-primary pull-right btn-xs" data-url="{% url 'url_radar_play' campaign.id location.id %}" style="margin-left: 10px">
51 <button type="button" name="bt_play" class="btn btn-primary pull-right btn-xs" data-url="{% url 'url_radar_play' campaign.id location.id %}" style="margin-left: 10px">
52 <span class="glyphicon glyphicon-play" aria-hidden="true"></span>
52 <span class="glyphicon glyphicon-play" aria-hidden="true"></span>
53 </button>
53 </button>
54 <button type="button" name="bt_stop" class="btn btn-primary pull-right btn-xs" data-url="{% url 'url_radar_stop' campaign.id location.id %}" aria-label="Left Align" style="margin-left: 10px">
54 <button type="button" name="bt_stop" class="btn btn-primary pull-right btn-xs" data-url="{% url 'url_radar_stop' campaign.id location.id %}" aria-label="Left Align" style="margin-left: 10px">
55 <span class="glyphicon glyphicon-stop" aria-hidden="true"></span>
55 <span class="glyphicon glyphicon-stop" aria-hidden="true"></span>
56 </button>
56 </button>
57 <button type="button" name="bt_refresh" class="btn btn-primary pull-right btn-xs" data-url="{% url 'url_radar_stop' campaign.id location.id %}" aria-label="Left Align" style="margin-left: 10px">
57 <button type="button" name="bt_refresh" class="btn btn-primary pull-right btn-xs" data-url="{% url 'url_radar_refresh' campaign.id location.id %}" aria-label="Left Align" style="margin-left: 10px">
58 <span class="glyphicon glyphicon-refresh" aria-hidden="true"></span>
58 <span class="glyphicon glyphicon-refresh" aria-hidden="true"></span>
59 </button>
59 </button>
60 </h4>
60 </h4>
61 </div>
61 </div>
62
62
63 <div id="collapseTwo-{{ location.id }}" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingTwo">
63 <div id="collapseTwo-{{ location.id }}" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingTwo">
64 <div class="panel-body">
64 <div class="panel-body">
65 <table class="table table-hover">
65 <table class="table table-hover">
66 <tr>
66 <tr>
67 <th>#</th>
67 <th>#</th>
68 {% for header in experiment_keys %}
68 {% for header in experiment_keys %}
69 <th>{{ header|title }}</th>
69 <th>{{ header|title }}</th>
70 {% endfor%}
70 {% endfor%}
71 </tr>
71 </tr>
72
72
73 {% for item in experiments %}
73 {% for item in experiments %}
74 {% if location.name in item.location.name %}
74 {% if location.name in item.location.name %}
75
75
76 <tr class="clickable-row" data-href="{% url 'url_experiment' item.id %}" >
76 <tr class="clickable-row" data-href="{% url 'url_experiment' item.id %}" >
77 <td>{{ forloop.counter }}</td>
77 <td>{{ forloop.counter }}</td>
78 {% for key in experiment_keys %}
78 {% for key in experiment_keys %}
79 {% if 'status' in key %}
79 {% if 'status' in key %}
80 <td class="text-{{item.status_color}}">{{ item|value:key }}</td>
80 <td class="text-{{item.status_color}}">{{ item|value:key }}</td>
81 {% else %}
81 {% else %}
82 <td>{{ item|value:key }}</td>
82 <td>{{ item|value:key }}</td>
83 {% endif %}
83 {% endif %}
84 {% endfor %}
84 {% endfor %}
85 </tr>
85 </tr>
86 {% endif %}
86 {% endif %}
87 {% endfor %}
87 {% endfor %}
88 </table>
88 </table>
89 </div>
89 </div>
90 </div>
90 </div>
91 </div>
91 </div>
92 {% endfor %}
92 {% endfor %}
93 </div>
93 </div>
94
94
95
95
96
96
97 {% endblock %}
97 {% endblock %}
98
98
99
99
100
100
101 {% block extra-js%}
101 {% block extra-js%}
102 <script type="text/javascript">
102 <script type="text/javascript">
103
103
104 //--------For PLAY Button-------
104 //--------For PLAY Button-------
105 $("#accordion").on("click", "button[name=bt_play]", function(){
105 $("#accordion").on("click", "button[name=bt_play]", function(){
106 //alert($(this).data('url'));
106 //alert($(this).data('url'));
107 document.location = $(this).data('url');
107 document.location = $(this).data('url');
108 });
108 });
109
109
110 //--------For STOP Button-------
110 //--------For STOP Button-------
111 $("#accordion").on("click", "button[name=bt_stop]", function(){
111 $("#accordion").on("click", "button[name=bt_stop]", function(){
112 //alert($(this).data('url'));
112 //alert($(this).data('url'));
113 document.location = $(this).data('url');
113 document.location = $(this).data('url');
114 });
114 });
115
116 //--------For REFRESH Button-------
117 $("#accordion").on("click", "button[name=bt_refresh]", function(){
118 document.location = $(this).data('url');
119 });
115
120
116 $(".clickable-row").click(function() {
121 $(".clickable-row").click(function() {
117 document.location = $(this).data("href");
122 document.location = $(this).data("href");
118 });
123 });
119
124
120 {% if search_button == True %}
125 {% if search_button == True %}
121 $(document).ready(function() {
126 $(document).ready(function() {
122 $("#id_campaign").change(function() {
127 $("#id_campaign").change(function() {
123 var id_camp = document.getElementById("id_campaign").value;
128 var id_camp = document.getElementById("id_campaign").value;
124 //alert(id_camp);
129 //alert(id_camp);
125 document.location = "{% url 'url_operation'%}"+String(id_camp);
130 document.location = "{% url 'url_operation'%}"+String(id_camp);
126 });
131 });
127 });
132 });
128 {% else %}
133 {% else %}
129 $(document).ready(function() {
134 $(document).ready(function() {
130 $("#id_campaign").change(function() {
135 $("#id_campaign").change(function() {
131 var id_camp = document.getElementById("id_campaign").value;
136 var id_camp = document.getElementById("id_campaign").value;
132 //alert(id_camp);
137 //alert(id_camp);
133 document.location = "{% url 'url_operation_search'%}"+String(id_camp);
138 document.location = "{% url 'url_operation_search'%}"+String(id_camp);
134 });
139 });
135 });
140 });
136 {% endif %}
141 {% endif %}
137
142
138 $("#button-1").click(function() {
143 $("#button-1").click(function() {
139 document.location = "{% url 'url_operation_search' %}";
144 document.location = "{% url 'url_operation_search' %}";
140 });
145 });
141
146
142
147
143 </script>
148 </script>
144 {% endblock %} No newline at end of file
149 {% endblock %}
@@ -1,50 +1,51
1 from django.conf.urls import url
1 from django.conf.urls import url
2
2
3 urlpatterns = (
3 urlpatterns = (
4 url(r'^location/new/$', 'apps.main.views.location_new', name='url_add_location'),
4 url(r'^location/new/$', 'apps.main.views.location_new', name='url_add_location'),
5 url(r'^location/$', 'apps.main.views.locations', name='url_locations'),
5 url(r'^location/$', 'apps.main.views.locations', name='url_locations'),
6 url(r'^location/(?P<id_loc>-?\d+)/$', 'apps.main.views.location', name='url_location'),
6 url(r'^location/(?P<id_loc>-?\d+)/$', 'apps.main.views.location', name='url_location'),
7 url(r'^location/(?P<id_loc>-?\d+)/edit/$', 'apps.main.views.location_edit', name='url_edit_location'),
7 url(r'^location/(?P<id_loc>-?\d+)/edit/$', 'apps.main.views.location_edit', name='url_edit_location'),
8 url(r'^location/(?P<id_loc>-?\d+)/delete/$', 'apps.main.views.location_delete', name='url_delete_location'),
8 url(r'^location/(?P<id_loc>-?\d+)/delete/$', 'apps.main.views.location_delete', name='url_delete_location'),
9
9
10 url(r'^device/new/$', 'apps.main.views.device_new', name='url_add_device'),
10 url(r'^device/new/$', 'apps.main.views.device_new', name='url_add_device'),
11 url(r'^device/$', 'apps.main.views.devices', name='url_devices'),
11 url(r'^device/$', 'apps.main.views.devices', name='url_devices'),
12 url(r'^device/(?P<id_dev>-?\d+)/$', 'apps.main.views.device', name='url_device'),
12 url(r'^device/(?P<id_dev>-?\d+)/$', 'apps.main.views.device', name='url_device'),
13 url(r'^device/(?P<id_dev>-?\d+)/edit/$', 'apps.main.views.device_edit', name='url_edit_device'),
13 url(r'^device/(?P<id_dev>-?\d+)/edit/$', 'apps.main.views.device_edit', name='url_edit_device'),
14 url(r'^device/(?P<id_dev>-?\d+)/delete/$', 'apps.main.views.device_delete', name='url_delete_device'),
14 url(r'^device/(?P<id_dev>-?\d+)/delete/$', 'apps.main.views.device_delete', name='url_delete_device'),
15
15
16 url(r'^campaign/new/$', 'apps.main.views.campaign_new', name='url_add_campaign'),
16 url(r'^campaign/new/$', 'apps.main.views.campaign_new', name='url_add_campaign'),
17 url(r'^campaign/$', 'apps.main.views.campaigns', name='url_campaigns'),
17 url(r'^campaign/$', 'apps.main.views.campaigns', name='url_campaigns'),
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
21
22 url(r'^experiment/new/$', 'apps.main.views.experiment_new', name='url_add_experiment'),
22 url(r'^experiment/new/$', 'apps.main.views.experiment_new', name='url_add_experiment'),
23 url(r'^experiment/$', 'apps.main.views.experiments', name='url_experiments'),
23 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'),
24 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'),
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+)/delete/$', 'apps.main.views.experiment_delete', name='url_delete_experiment'),
26 url(r'^experiment/(?P<id_exp>-?\d+)/delete/$', 'apps.main.views.experiment_delete', name='url_delete_experiment'),
27
27
28 url(r'^experiment/(?P<id_exp>-?\d+)/new_dev_conf/$', 'apps.main.views.dev_conf_new', name='url_add_dev_conf'),
28 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'),
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'),
30 url(r'^dev_conf/$', 'apps.main.views.dev_confs', name='url_dev_confs'),
30 url(r'^dev_conf/$', 'apps.main.views.dev_confs', name='url_dev_confs'),
31 url(r'^dev_conf/(?P<id_conf>-?\d+)/$', 'apps.main.views.dev_conf', name='url_dev_conf'),
31 url(r'^dev_conf/(?P<id_conf>-?\d+)/$', 'apps.main.views.dev_conf', name='url_dev_conf'),
32 url(r'^dev_conf/(?P<id_conf>-?\d+)/edit/$', 'apps.main.views.dev_conf_edit', name='url_edit_dev_conf'),
32 url(r'^dev_conf/(?P<id_conf>-?\d+)/edit/$', 'apps.main.views.dev_conf_edit', name='url_edit_dev_conf'),
33 url(r'^dev_conf/(?P<id_conf>-?\d+)/delete/$', 'apps.main.views.dev_conf_delete', name='url_delete_dev_conf'),
33 url(r'^dev_conf/(?P<id_conf>-?\d+)/delete/$', 'apps.main.views.dev_conf_delete', name='url_delete_dev_conf'),
34
34
35 url(r'^dev_conf/(?P<id_conf>-?\d+)/write/$', 'apps.main.views.dev_conf_write', name='url_write_dev_conf'),
35 url(r'^dev_conf/(?P<id_conf>-?\d+)/write/$', 'apps.main.views.dev_conf_write', name='url_write_dev_conf'),
36 url(r'^dev_conf/(?P<id_conf>-?\d+)/read/$', 'apps.main.views.dev_conf_read', name='url_read_dev_conf'),
36 url(r'^dev_conf/(?P<id_conf>-?\d+)/read/$', 'apps.main.views.dev_conf_read', name='url_read_dev_conf'),
37 url(r'^dev_conf/(?P<id_conf>-?\d+)/import/$', 'apps.main.views.dev_conf_import', name='url_import_dev_conf'),
37 url(r'^dev_conf/(?P<id_conf>-?\d+)/import/$', 'apps.main.views.dev_conf_import', name='url_import_dev_conf'),
38 url(r'^dev_conf/(?P<id_conf>-?\d+)/export/$', 'apps.main.views.dev_conf_export', name='url_export_dev_conf'),
38 url(r'^dev_conf/(?P<id_conf>-?\d+)/export/$', 'apps.main.views.dev_conf_export', name='url_export_dev_conf'),
39 url(r'^dev_conf/(?P<id_conf>-?\d+)/start/$', 'apps.main.views.dev_conf_start', name='url_start_dev_conf'),
39 url(r'^dev_conf/(?P<id_conf>-?\d+)/start/$', 'apps.main.views.dev_conf_start', name='url_start_dev_conf'),
40 url(r'^dev_conf/(?P<id_conf>-?\d+)/stop/$', 'apps.main.views.dev_conf_stop', name='url_stop_dev_conf'),
40 url(r'^dev_conf/(?P<id_conf>-?\d+)/stop/$', 'apps.main.views.dev_conf_stop', name='url_stop_dev_conf'),
41 url(r'^dev_conf/(?P<id_conf>-?\d+)/status/$', 'apps.main.views.dev_conf_status', name='url_status_dev_conf'),
41 url(r'^dev_conf/(?P<id_conf>-?\d+)/status/$', 'apps.main.views.dev_conf_status', name='url_status_dev_conf'),
42
42
43 url(r'^operation/$', 'apps.main.views.operation', name='url_operation'),
43 url(r'^operation/$', 'apps.main.views.operation', name='url_operation'),
44 url(r'^operation/(?P<id_camp>-?\d+)/$', 'apps.main.views.operation', name='url_operation'),
44 url(r'^operation/(?P<id_camp>-?\d+)/$', 'apps.main.views.operation', name='url_operation'),
45 url(r'^operation/search/$', 'apps.main.views.operation_search', name='url_operation_search'),
45 url(r'^operation/search/$', 'apps.main.views.operation_search', name='url_operation_search'),
46 url(r'^operation/search/(?P<id_camp>-?\d+)/$', 'apps.main.views.operation_search', name='url_operation_search'),
46 url(r'^operation/search/(?P<id_camp>-?\d+)/$', 'apps.main.views.operation_search', name='url_operation_search'),
47 url(r'^operation/(?P<id_camp>-?\d+)/radar/(?P<id_radar>-?\d+)/play/$', 'apps.main.views.radar_play', name='url_radar_play'),
47 url(r'^operation/(?P<id_camp>-?\d+)/radar/(?P<id_radar>-?\d+)/play/$', 'apps.main.views.radar_play', name='url_radar_play'),
48 url(r'^operation/(?P<id_camp>-?\d+)/radar/(?P<id_radar>-?\d+)/stop/$', 'apps.main.views.radar_stop', name='url_radar_stop'),
48 url(r'^operation/(?P<id_camp>-?\d+)/radar/(?P<id_radar>-?\d+)/stop/$', 'apps.main.views.radar_stop', name='url_radar_stop'),
49 url(r'^operation/(?P<id_camp>-?\d+)/radar/(?P<id_radar>-?\d+)/refresh/$', 'apps.main.views.radar_refresh', name='url_radar_refresh'),
49
50
50 )
51 )
@@ -1,961 +1,962
1 from django.shortcuts import render, redirect, get_object_or_404, HttpResponse
1 from django.shortcuts import render, redirect, get_object_or_404, HttpResponse
2 from django.http import HttpResponseRedirect
2 from django.http import HttpResponseRedirect
3 from django.core.urlresolvers import reverse
3 from django.core.urlresolvers import reverse
4 from django.contrib import messages
4 from django.contrib import messages
5 from datetime import datetime
5
6
6 from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm, LocationForm, UploadFileForm, DownloadFileForm, OperationForm, NewForm
7 from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm, LocationForm, UploadFileForm, DownloadFileForm, OperationForm, NewForm
7 from .forms import OperationSearchForm
8 from .forms import OperationSearchForm
8 from apps.cgs.forms import CGSConfigurationForm
9 from apps.cgs.forms import CGSConfigurationForm
9 from apps.jars.forms import JARSConfigurationForm
10 from apps.jars.forms import JARSConfigurationForm
10 from apps.usrp.forms import USRPConfigurationForm
11 from apps.usrp.forms import USRPConfigurationForm
11 from apps.abs.forms import ABSConfigurationForm
12 from apps.abs.forms import ABSConfigurationForm
12 from apps.rc.forms import RCConfigurationForm
13 from apps.rc.forms import RCConfigurationForm
13 from apps.dds.forms import DDSConfigurationForm
14 from apps.dds.forms import DDSConfigurationForm
14
15
15 from .models import Campaign, Experiment, Device, Configuration, Location, RunningExperiment
16 from .models import Campaign, Experiment, Device, Configuration, Location, RunningExperiment
16 from apps.cgs.models import CGSConfiguration
17 from apps.cgs.models import CGSConfiguration
17 from apps.jars.models import JARSConfiguration
18 from apps.jars.models import JARSConfiguration
18 from apps.usrp.models import USRPConfiguration
19 from apps.usrp.models import USRPConfiguration
19 from apps.abs.models import ABSConfiguration
20 from apps.abs.models import ABSConfiguration
20 from apps.rc.models import RCConfiguration
21 from apps.rc.models import RCConfiguration
21 from apps.dds.models import DDSConfiguration
22 from apps.dds.models import DDSConfiguration
22
23
23 # Create your views here.
24 # Create your views here.
24
25
25 CONF_FORMS = {
26 CONF_FORMS = {
26 'rc': RCConfigurationForm,
27 'rc': RCConfigurationForm,
27 'dds': DDSConfigurationForm,
28 'dds': DDSConfigurationForm,
28 'jars': JARSConfigurationForm,
29 'jars': JARSConfigurationForm,
29 'cgs': CGSConfigurationForm,
30 'cgs': CGSConfigurationForm,
30 'abs': ABSConfigurationForm,
31 'abs': ABSConfigurationForm,
31 'usrp': USRPConfigurationForm,
32 'usrp': USRPConfigurationForm,
32 }
33 }
33
34
34 CONF_MODELS = {
35 CONF_MODELS = {
35 'rc': RCConfiguration,
36 'rc': RCConfiguration,
36 'dds': DDSConfiguration,
37 'dds': DDSConfiguration,
37 'jars': JARSConfiguration,
38 'jars': JARSConfiguration,
38 'cgs': CGSConfiguration,
39 'cgs': CGSConfiguration,
39 'abs': ABSConfiguration,
40 'abs': ABSConfiguration,
40 'usrp': USRPConfiguration,
41 'usrp': USRPConfiguration,
41 }
42 }
42
43
43 def index(request):
44 def index(request):
44 kwargs = {}
45 kwargs = {}
45
46
46 return render(request, 'index.html', kwargs)
47 return render(request, 'index.html', kwargs)
47
48
48 def locations(request):
49 def locations(request):
49
50
50 locations = Location.objects.all().order_by('name')
51 locations = Location.objects.all().order_by('name')
51
52
52 keys = ['id', 'name', 'description']
53 keys = ['id', 'name', 'description']
53
54
54 kwargs = {}
55 kwargs = {}
55 kwargs['location_keys'] = keys[1:]
56 kwargs['location_keys'] = keys[1:]
56 kwargs['locations'] = locations
57 kwargs['locations'] = locations
57 kwargs['title'] = 'Location'
58 kwargs['title'] = 'Location'
58 kwargs['suptitle'] = 'List'
59 kwargs['suptitle'] = 'List'
59 kwargs['button'] = 'New Location'
60 kwargs['button'] = 'New Location'
60
61
61 return render(request, 'locations.html', kwargs)
62 return render(request, 'locations.html', kwargs)
62
63
63 def location(request, id_loc):
64 def location(request, id_loc):
64
65
65 location = get_object_or_404(Location, pk=id_loc)
66 location = get_object_or_404(Location, pk=id_loc)
66
67
67 kwargs = {}
68 kwargs = {}
68 kwargs['location'] = location
69 kwargs['location'] = location
69 kwargs['location_keys'] = ['name', 'description']
70 kwargs['location_keys'] = ['name', 'description']
70
71
71 kwargs['title'] = 'Location'
72 kwargs['title'] = 'Location'
72 kwargs['suptitle'] = 'Details'
73 kwargs['suptitle'] = 'Details'
73
74
74 return render(request, 'location.html', kwargs)
75 return render(request, 'location.html', kwargs)
75
76
76 #def location_play(request, id_camp, id_loc):
77
78 # campaign = get_object_or_404(Campaign, pk=id_camp)
79 # print campaign
80 # location = get_object_or_404(Location, pk=id_loc)
81 # experiments = Experiment.objects.filter(location__pk=location.id).filter(campaign__pk=campaign.id)
82 # locations = Location.objects.filter(pk=id_loc)
83
84 # if request.method=='GET':
85 # form = OperationForm(initial={'campaign': campaign.id})
86
87 # kwargs = {}
88 #---Campaign
89 # kwargs['campaign'] = campaign
90 # kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
91 #---Experiment
92 # keys = ['id', 'name', 'start_time', 'end_time']
93 # kwargs['experiment_keys'] = keys[1:]
94 # kwargs['experiments'] = experiments
95 #---Radar
96 # kwargs['location'] = location
97 #---Else
98 # kwargs['title'] = 'Campaign'
99 # kwargs['suptitle'] = campaign.name
100 # kwargs['form'] = form
101 # kwargs['button'] = 'Search'
102
103 # return render(request, 'operation_play.html', kwargs)
104
77
105 def location_new(request):
78 def location_new(request):
106
79
107 if request.method == 'GET':
80 if request.method == 'GET':
108 form = LocationForm()
81 form = LocationForm()
109
82
110 if request.method == 'POST':
83 if request.method == 'POST':
111 form = LocationForm(request.POST)
84 form = LocationForm(request.POST)
112
85
113 if form.is_valid():
86 if form.is_valid():
114 form.save()
87 form.save()
115 return redirect('url_locations')
88 return redirect('url_locations')
116
89
117 kwargs = {}
90 kwargs = {}
118 kwargs['form'] = form
91 kwargs['form'] = form
119 kwargs['title'] = 'Location'
92 kwargs['title'] = 'Location'
120 kwargs['suptitle'] = 'New'
93 kwargs['suptitle'] = 'New'
121 kwargs['button'] = 'Create'
94 kwargs['button'] = 'Create'
122
95
123 return render(request, 'location_edit.html', kwargs)
96 return render(request, 'location_edit.html', kwargs)
124
97
125 def location_edit(request, id_loc):
98 def location_edit(request, id_loc):
126
99
127 location = get_object_or_404(Location, pk=id_loc)
100 location = get_object_or_404(Location, pk=id_loc)
128
101
129 if request.method=='GET':
102 if request.method=='GET':
130 form = LocationForm(instance=location)
103 form = LocationForm(instance=location)
131
104
132 if request.method=='POST':
105 if request.method=='POST':
133 form = LocationForm(request.POST, instance=location)
106 form = LocationForm(request.POST, instance=location)
134
107
135 if form.is_valid():
108 if form.is_valid():
136 form.save()
109 form.save()
137 return redirect('url_locations')
110 return redirect('url_locations')
138
111
139 kwargs = {}
112 kwargs = {}
140 kwargs['form'] = form
113 kwargs['form'] = form
141 kwargs['title'] = 'Location'
114 kwargs['title'] = 'Location'
142 kwargs['suptitle'] = 'Edit'
115 kwargs['suptitle'] = 'Edit'
143 kwargs['button'] = 'Update'
116 kwargs['button'] = 'Update'
144
117
145 return render(request, 'location_edit.html', kwargs)
118 return render(request, 'location_edit.html', kwargs)
146
119
147 def location_delete(request, id_loc):
120 def location_delete(request, id_loc):
148
121
149 location = get_object_or_404(Location, pk=id_loc)
122 location = get_object_or_404(Location, pk=id_loc)
150
123
151 if request.method=='POST':
124 if request.method=='POST':
152
125
153 if request.user.is_staff:
126 if request.user.is_staff:
154 location.delete()
127 location.delete()
155 return redirect('url_locations')
128 return redirect('url_locations')
156
129
157 return HttpResponse("Not enough permission to delete this object")
130 return HttpResponse("Not enough permission to delete this object")
158
131
159 kwargs = {'object':location, 'loc_active':'active',
132 kwargs = {'object':location, 'loc_active':'active',
160 'url_cancel':'url_location', 'id_item':id_loc}
133 'url_cancel':'url_location', 'id_item':id_loc}
161
134
162 return render(request, 'item_delete.html', kwargs)
135 return render(request, 'item_delete.html', kwargs)
163
136
164 def devices(request):
137 def devices(request):
165
138
166 devices = Device.objects.all().order_by('device_type__name')
139 devices = Device.objects.all().order_by('device_type__name')
167
140
168 # keys = ['id', 'device_type__name', 'name', 'ip_address']
141 # keys = ['id', 'device_type__name', 'name', 'ip_address']
169 keys = ['id', 'name', 'ip_address', 'port_address', 'device_type']
142 keys = ['id', 'name', 'ip_address', 'port_address', 'device_type']
170
143
171 kwargs = {}
144 kwargs = {}
172 kwargs['device_keys'] = keys[1:]
145 kwargs['device_keys'] = keys[1:]
173 kwargs['devices'] = devices#.values(*keys)
146 kwargs['devices'] = devices#.values(*keys)
174 kwargs['title'] = 'Device'
147 kwargs['title'] = 'Device'
175 kwargs['suptitle'] = 'List'
148 kwargs['suptitle'] = 'List'
176 kwargs['button'] = 'New Device'
149 kwargs['button'] = 'New Device'
177
150
178 return render(request, 'devices.html', kwargs)
151 return render(request, 'devices.html', kwargs)
179
152
180 def device(request, id_dev):
153 def device(request, id_dev):
181
154
182 device = get_object_or_404(Device, pk=id_dev)
155 device = get_object_or_404(Device, pk=id_dev)
183
156
184 kwargs = {}
157 kwargs = {}
185 kwargs['device'] = device
158 kwargs['device'] = device
186 kwargs['device_keys'] = ['device_type', 'name', 'ip_address', 'port_address', 'description']
159 kwargs['device_keys'] = ['device_type', 'name', 'ip_address', 'port_address', 'description']
187
160
188 kwargs['title'] = 'Device'
161 kwargs['title'] = 'Device'
189 kwargs['suptitle'] = 'Details'
162 kwargs['suptitle'] = 'Details'
190
163
191 return render(request, 'device.html', kwargs)
164 return render(request, 'device.html', kwargs)
192
165
193 def device_new(request):
166 def device_new(request):
194
167
195 if request.method == 'GET':
168 if request.method == 'GET':
196 form = DeviceForm()
169 form = DeviceForm()
197
170
198 if request.method == 'POST':
171 if request.method == 'POST':
199 form = DeviceForm(request.POST)
172 form = DeviceForm(request.POST)
200
173
201 if form.is_valid():
174 if form.is_valid():
202 form.save()
175 form.save()
203 return redirect('url_devices')
176 return redirect('url_devices')
204
177
205 kwargs = {}
178 kwargs = {}
206 kwargs['form'] = form
179 kwargs['form'] = form
207 kwargs['title'] = 'Device'
180 kwargs['title'] = 'Device'
208 kwargs['suptitle'] = 'New'
181 kwargs['suptitle'] = 'New'
209 kwargs['button'] = 'Create'
182 kwargs['button'] = 'Create'
210
183
211 return render(request, 'device_edit.html', kwargs)
184 return render(request, 'device_edit.html', kwargs)
212
185
213 def device_edit(request, id_dev):
186 def device_edit(request, id_dev):
214
187
215 device = get_object_or_404(Device, pk=id_dev)
188 device = get_object_or_404(Device, pk=id_dev)
216
189
217 if request.method=='GET':
190 if request.method=='GET':
218 form = DeviceForm(instance=device)
191 form = DeviceForm(instance=device)
219
192
220 if request.method=='POST':
193 if request.method=='POST':
221 form = DeviceForm(request.POST, instance=device)
194 form = DeviceForm(request.POST, instance=device)
222
195
223 if form.is_valid():
196 if form.is_valid():
224 form.save()
197 form.save()
225 return redirect('url_devices')
198 return redirect('url_devices')
226
199
227 kwargs = {}
200 kwargs = {}
228 kwargs['form'] = form
201 kwargs['form'] = form
229 kwargs['title'] = 'Device'
202 kwargs['title'] = 'Device'
230 kwargs['suptitle'] = 'Edit'
203 kwargs['suptitle'] = 'Edit'
231 kwargs['button'] = 'Update'
204 kwargs['button'] = 'Update'
232
205
233 return render(request, 'device_edit.html', kwargs)
206 return render(request, 'device_edit.html', kwargs)
234
207
235 def device_delete(request, id_dev):
208 def device_delete(request, id_dev):
236
209
237 device = get_object_or_404(Device, pk=id_dev)
210 device = get_object_or_404(Device, pk=id_dev)
238
211
239 if request.method=='POST':
212 if request.method=='POST':
240
213
241 if request.user.is_staff:
214 if request.user.is_staff:
242 device.delete()
215 device.delete()
243 return redirect('url_devices')
216 return redirect('url_devices')
244
217
245 return HttpResponse("Not enough permission to delete this object")
218 return HttpResponse("Not enough permission to delete this object")
246
219
247 kwargs = {'object':device, 'dev_active':'active',
220 kwargs = {'object':device, 'dev_active':'active',
248 'url_cancel':'url_device', 'id_item':id_dev}
221 'url_cancel':'url_device', 'id_item':id_dev}
249
222
250 return render(request, 'item_delete.html', kwargs)
223 return render(request, 'item_delete.html', kwargs)
251
224
252 def campaigns(request):
225 def campaigns(request):
253
226
254 campaigns = Campaign.objects.all().order_by('start_date')
227 campaigns = Campaign.objects.all().order_by('start_date')
255
228
256 keys = ['id', 'name', 'start_date', 'end_date']
229 keys = ['id', 'name', 'start_date', 'end_date']
257
230
258 kwargs = {}
231 kwargs = {}
259 kwargs['campaign_keys'] = keys[1:]
232 kwargs['campaign_keys'] = keys[1:]
260 kwargs['campaigns'] = campaigns#.values(*keys)
233 kwargs['campaigns'] = campaigns#.values(*keys)
261 kwargs['title'] = 'Campaign'
234 kwargs['title'] = 'Campaign'
262 kwargs['suptitle'] = 'List'
235 kwargs['suptitle'] = 'List'
263 kwargs['button'] = 'New Campaign'
236 kwargs['button'] = 'New Campaign'
264
237
265 return render(request, 'campaigns.html', kwargs)
238 return render(request, 'campaigns.html', kwargs)
266
239
267 def campaign(request, id_camp):
240 def campaign(request, id_camp):
268
241
269 campaign = get_object_or_404(Campaign, pk=id_camp)
242 campaign = get_object_or_404(Campaign, pk=id_camp)
270 experiments = Experiment.objects.filter(campaign=campaign)
243 experiments = Experiment.objects.filter(campaign=campaign)
271
244
272 form = CampaignForm(instance=campaign)
245 form = CampaignForm(instance=campaign)
273
246
274 kwargs = {}
247 kwargs = {}
275 kwargs['campaign'] = campaign
248 kwargs['campaign'] = campaign
276 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
249 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
277
250
278 keys = ['id', 'name', 'start_time', 'end_time']
251 keys = ['id', 'name', 'start_time', 'end_time']
279
252
280 kwargs['experiment_keys'] = keys[1:]
253 kwargs['experiment_keys'] = keys[1:]
281 kwargs['experiments'] = experiments.values(*keys)
254 kwargs['experiments'] = experiments.values(*keys)
282
255
283 kwargs['title'] = 'Campaign'
256 kwargs['title'] = 'Campaign'
284 kwargs['suptitle'] = 'Details'
257 kwargs['suptitle'] = 'Details'
285
258
286 kwargs['form'] = form
259 kwargs['form'] = form
287 kwargs['button'] = 'Add Experiment'
260 kwargs['button'] = 'Add Experiment'
288
261
289 return render(request, 'campaign.html', kwargs)
262 return render(request, 'campaign.html', kwargs)
290
263
291 def campaign_new(request):
264 def campaign_new(request):
292
265
293 kwargs = {}
266 kwargs = {}
294
267
295 if request.method == 'GET':
268 if request.method == 'GET':
296
269
297 if 'template' in request.GET:
270 if 'template' in request.GET:
298 if request.GET['template']=='0':
271 if request.GET['template']=='0':
299 form = NewForm(initial={'create_from':2},
272 form = NewForm(initial={'create_from':2},
300 template_choices=Campaign.objects.filter(template=True).values_list('id', 'name'))
273 template_choices=Campaign.objects.filter(template=True).values_list('id', 'name'))
301 else:
274 else:
302 kwargs['button'] = 'Create'
275 kwargs['button'] = 'Create'
303 kwargs['experiments'] = Configuration.objects.filter(experiment=request.GET['template'])
276 kwargs['experiments'] = Configuration.objects.filter(experiment=request.GET['template'])
304 kwargs['experiment_keys'] = ['name', 'start_time', 'end_time']
277 kwargs['experiment_keys'] = ['name', 'start_time', 'end_time']
305 form = CampaignForm(instance=Campaign.objects.get(pk=request.GET['template']),
278 form = CampaignForm(instance=Campaign.objects.get(pk=request.GET['template']),
306 initial={'template':False})
279 initial={'template':False})
307 elif 'blank' in request.GET:
280 elif 'blank' in request.GET:
308 kwargs['button'] = 'Create'
281 kwargs['button'] = 'Create'
309 form = CampaignForm()
282 form = CampaignForm()
310 else:
283 else:
311 form = NewForm()
284 form = NewForm()
312
285
313 if request.method == 'POST':
286 if request.method == 'POST':
314 kwargs['button'] = 'Create'
287 kwargs['button'] = 'Create'
315 post = request.POST.copy()
288 post = request.POST.copy()
316 experiments = []
289 experiments = []
317
290
318 for id_exp in post.getlist('experiments'):
291 for id_exp in post.getlist('experiments'):
319 exp = Experiment.objects.get(pk=id_exp)
292 exp = Experiment.objects.get(pk=id_exp)
320 new_exp = exp.clone(template=False)
293 new_exp = exp.clone(template=False)
321 experiments.append(new_exp)
294 experiments.append(new_exp)
322
295
323 post.setlist('experiments', [])
296 post.setlist('experiments', [])
324
297
325 form = CampaignForm(post)
298 form = CampaignForm(post)
326
299
327 if form.is_valid():
300 if form.is_valid():
328 campaign = form.save()
301 campaign = form.save()
329 for exp in experiments:
302 for exp in experiments:
330 campaign.experiments.add(exp)
303 campaign.experiments.add(exp)
331 campaign.save()
304 campaign.save()
332 return redirect('url_campaign', id_camp=campaign.id)
305 return redirect('url_campaign', id_camp=campaign.id)
333
306
334 kwargs['form'] = form
307 kwargs['form'] = form
335 kwargs['title'] = 'Campaign'
308 kwargs['title'] = 'Campaign'
336 kwargs['suptitle'] = 'New'
309 kwargs['suptitle'] = 'New'
337
310
338 return render(request, 'campaign_edit.html', kwargs)
311 return render(request, 'campaign_edit.html', kwargs)
339
312
340 def campaign_edit(request, id_camp):
313 def campaign_edit(request, id_camp):
341
314
342 campaign = get_object_or_404(Campaign, pk=id_camp)
315 campaign = get_object_or_404(Campaign, pk=id_camp)
343
316
344 if request.method=='GET':
317 if request.method=='GET':
345 form = CampaignForm(instance=campaign)
318 form = CampaignForm(instance=campaign)
346
319
347 if request.method=='POST':
320 if request.method=='POST':
348 form = CampaignForm(request.POST, instance=campaign)
321 form = CampaignForm(request.POST, instance=campaign)
349
322
350 if form.is_valid():
323 if form.is_valid():
351 form.save()
324 form.save()
352 return redirect('url_campaign', id_camp=id_camp)
325 return redirect('url_campaign', id_camp=id_camp)
353
326
354 kwargs = {}
327 kwargs = {}
355 kwargs['form'] = form
328 kwargs['form'] = form
356 kwargs['title'] = 'Campaign'
329 kwargs['title'] = 'Campaign'
357 kwargs['suptitle'] = 'Edit'
330 kwargs['suptitle'] = 'Edit'
358 kwargs['button'] = 'Update'
331 kwargs['button'] = 'Update'
359
332
360 return render(request, 'campaign_edit.html', kwargs)
333 return render(request, 'campaign_edit.html', kwargs)
361
334
362 def campaign_delete(request, id_camp):
335 def campaign_delete(request, id_camp):
363
336
364 campaign = get_object_or_404(Campaign, pk=id_camp)
337 campaign = get_object_or_404(Campaign, pk=id_camp)
365
338
366 if request.method=='POST':
339 if request.method=='POST':
367 if request.user.is_staff:
340 if request.user.is_staff:
368
341
369 for exp in campaign.experiments.all():
342 for exp in campaign.experiments.all():
370 for conf in Configuration.objects.filter(experiment=exp):
343 for conf in Configuration.objects.filter(experiment=exp):
371 conf.delete()
344 conf.delete()
372 exp.delete()
345 exp.delete()
373 campaign.delete()
346 campaign.delete()
374
347
375 return redirect('url_campaigns')
348 return redirect('url_campaigns')
376
349
377 return HttpResponse("Not enough permission to delete this object")
350 return HttpResponse("Not enough permission to delete this object")
378
351
379 kwargs = {'object':campaign, 'camp_active':'active',
352 kwargs = {'object':campaign, 'camp_active':'active',
380 'url_cancel':'url_campaign', 'id_item':id_camp}
353 'url_cancel':'url_campaign', 'id_item':id_camp}
381
354
382 return render(request, 'item_delete.html', kwargs)
355 return render(request, 'item_delete.html', kwargs)
383
356
384 def experiments(request):
357 def experiments(request):
385
358
386 experiment_list = Experiment.objects.all()
359 experiment_list = Experiment.objects.all()
387
360
388 keys = ['id', 'name', 'start_time', 'end_time']
361 keys = ['id', 'name', 'start_time', 'end_time']
389
362
390 kwargs = {}
363 kwargs = {}
391
364
392 kwargs['experiment_keys'] = keys[1:]
365 kwargs['experiment_keys'] = keys[1:]
393 kwargs['experiments'] = experiment_list
366 kwargs['experiments'] = experiment_list
394
367
395 kwargs['title'] = 'Experiment'
368 kwargs['title'] = 'Experiment'
396 kwargs['suptitle'] = 'List'
369 kwargs['suptitle'] = 'List'
397 kwargs['button'] = 'New Experiment'
370 kwargs['button'] = 'New Experiment'
398
371
399 return render(request, 'experiments.html', kwargs)
372 return render(request, 'experiments.html', kwargs)
400
373
401 def experiment(request, id_exp):
374 def experiment(request, id_exp):
402
375
403 experiment = get_object_or_404(Experiment, pk=id_exp)
376 experiment = get_object_or_404(Experiment, pk=id_exp)
404
377
405 configurations = Configuration.objects.filter(experiment=experiment, type=0)
378 configurations = Configuration.objects.filter(experiment=experiment, type=0)
406
379
407 kwargs = {}
380 kwargs = {}
408
381
409 exp_keys = ['id', 'location', 'name', 'start_time', 'end_time']
382 exp_keys = ['id', 'location', 'name', 'start_time', 'end_time']
410 conf_keys = ['id', 'device__name', 'device__device_type', 'device__ip_address', 'device__port_address']
383 conf_keys = ['id', 'device__name', 'device__device_type', 'device__ip_address', 'device__port_address']
411
384
412 conf_labels = ['id', 'device__name', 'device_type', 'ip_address', 'port_address']
385 conf_labels = ['id', 'device__name', 'device_type', 'ip_address', 'port_address']
413
386
414 kwargs['experiment_keys'] = exp_keys[1:]
387 kwargs['experiment_keys'] = exp_keys[1:]
415 kwargs['experiment'] = experiment
388 kwargs['experiment'] = experiment
416
389
417 kwargs['configuration_labels'] = conf_labels[1:]
390 kwargs['configuration_labels'] = conf_labels[1:]
418 kwargs['configuration_keys'] = conf_keys[1:]
391 kwargs['configuration_keys'] = conf_keys[1:]
419 kwargs['configurations'] = configurations #.values(*conf_keys)
392 kwargs['configurations'] = configurations #.values(*conf_keys)
420
393
421 kwargs['title'] = 'Experiment'
394 kwargs['title'] = 'Experiment'
422 kwargs['suptitle'] = 'Details'
395 kwargs['suptitle'] = 'Details'
423
396
424 kwargs['button'] = 'Add Configuration'
397 kwargs['button'] = 'Add Configuration'
425
398
426 ###### SIDEBAR ######
399 ###### SIDEBAR ######
427 kwargs.update(sidebar(experiment=experiment))
400 kwargs.update(sidebar(experiment=experiment))
428
401
429 return render(request, 'experiment.html', kwargs)
402 return render(request, 'experiment.html', kwargs)
430
403
431
404
432 def experiment_new(request, id_camp=None):
405 def experiment_new(request, id_camp=None):
433
406
434 kwargs = {}
407 kwargs = {}
435
408
436 if request.method == 'GET':
409 if request.method == 'GET':
437 if 'template' in request.GET:
410 if 'template' in request.GET:
438 if request.GET['template']=='0':
411 if request.GET['template']=='0':
439 form = NewForm(initial={'create_from':2},
412 form = NewForm(initial={'create_from':2},
440 template_choices=Experiment.objects.filter(template=True).values_list('id', 'name'))
413 template_choices=Experiment.objects.filter(template=True).values_list('id', 'name'))
441 else:
414 else:
442 kwargs['button'] = 'Create'
415 kwargs['button'] = 'Create'
443 kwargs['configurations'] = Configuration.objects.filter(experiment=request.GET['template'])
416 kwargs['configurations'] = Configuration.objects.filter(experiment=request.GET['template'])
444 kwargs['configuration_keys'] = ['name', 'device__name', 'device__ip_address', 'device__port_address']
417 kwargs['configuration_keys'] = ['name', 'device__name', 'device__ip_address', 'device__port_address']
445 form = ExperimentForm(instance=Experiment.objects.get(pk=request.GET['template']),
418 form = ExperimentForm(instance=Experiment.objects.get(pk=request.GET['template']),
446 initial={'template':False})
419 initial={'template':False})
447 elif 'blank' in request.GET:
420 elif 'blank' in request.GET:
448 kwargs['button'] = 'Create'
421 kwargs['button'] = 'Create'
449 form = ExperimentForm()
422 form = ExperimentForm()
450 else:
423 else:
451 form = NewForm()
424 form = NewForm()
452
425
453 if request.method == 'POST':
426 if request.method == 'POST':
454 form = ExperimentForm(request.POST)
427 form = ExperimentForm(request.POST)
455 if form.is_valid():
428 if form.is_valid():
456 experiment = form.save()
429 experiment = form.save()
457
430
458 if 'template' in request.GET:
431 if 'template' in request.GET:
459 configurations = Configuration.objects.filter(experiment=request.GET['template'], type=0)
432 configurations = Configuration.objects.filter(experiment=request.GET['template'], type=0)
460 for conf in configurations:
433 for conf in configurations:
461 conf.clone(experiment=experiment, template=False)
434 conf.clone(experiment=experiment, template=False)
462
435
463 return redirect('url_experiment', id_exp=experiment.id)
436 return redirect('url_experiment', id_exp=experiment.id)
464
437
465 kwargs['form'] = form
438 kwargs['form'] = form
466 kwargs['title'] = 'Experiment'
439 kwargs['title'] = 'Experiment'
467 kwargs['suptitle'] = 'New'
440 kwargs['suptitle'] = 'New'
468
441
469 return render(request, 'experiment_edit.html', kwargs)
442 return render(request, 'experiment_edit.html', kwargs)
470
443
471 def experiment_edit(request, id_exp):
444 def experiment_edit(request, id_exp):
472
445
473 experiment = get_object_or_404(Experiment, pk=id_exp)
446 experiment = get_object_or_404(Experiment, pk=id_exp)
474
447
475 if request.method == 'GET':
448 if request.method == 'GET':
476 form = ExperimentForm(instance=experiment)
449 form = ExperimentForm(instance=experiment)
477
450
478 if request.method=='POST':
451 if request.method=='POST':
479 form = ExperimentForm(request.POST, instance=experiment)
452 form = ExperimentForm(request.POST, instance=experiment)
480
453
481 if form.is_valid():
454 if form.is_valid():
482 experiment = form.save()
455 experiment = form.save()
483 return redirect('url_experiment', id_exp=experiment.id)
456 return redirect('url_experiment', id_exp=experiment.id)
484
457
485 kwargs = {}
458 kwargs = {}
486 kwargs['form'] = form
459 kwargs['form'] = form
487 kwargs['title'] = 'Experiment'
460 kwargs['title'] = 'Experiment'
488 kwargs['suptitle'] = 'Edit'
461 kwargs['suptitle'] = 'Edit'
489 kwargs['button'] = 'Update'
462 kwargs['button'] = 'Update'
490
463
491 return render(request, 'experiment_edit.html', kwargs)
464 return render(request, 'experiment_edit.html', kwargs)
492
465
493 def experiment_delete(request, id_exp):
466 def experiment_delete(request, id_exp):
494
467
495 experiment = get_object_or_404(Experiment, pk=id_exp)
468 experiment = get_object_or_404(Experiment, pk=id_exp)
496
469
497 if request.method=='POST':
470 if request.method=='POST':
498 if request.user.is_staff:
471 if request.user.is_staff:
499 experiment.delete()
472 experiment.delete()
500 return redirect('url_experiments')
473 return redirect('url_experiments')
501
474
502 return HttpResponse("Not enough permission to delete this object")
475 return HttpResponse("Not enough permission to delete this object")
503
476
504 kwargs = {'object':experiment, 'exp_active':'active',
477 kwargs = {'object':experiment, 'exp_active':'active',
505 'url_cancel':'url_experiment', 'id_item':id_exp}
478 'url_cancel':'url_experiment', 'id_item':id_exp}
506
479
507 return render(request, 'item_delete.html', kwargs)
480 return render(request, 'item_delete.html', kwargs)
508
481
509 def dev_confs(request):
482 def dev_confs(request):
510
483
511 configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment')
484 configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment')
512
485
513 # keys = ['id', 'device__device_type__name', 'device__name', 'experiment__campaign__name', 'experiment__name']
486 # keys = ['id', 'device__device_type__name', 'device__name', 'experiment__campaign__name', 'experiment__name']
514
487
515 keys = ['id', 'device', 'experiment', 'type', 'programmed_date']
488 keys = ['id', 'device', 'experiment', 'type', 'programmed_date']
516
489
517 kwargs = {}
490 kwargs = {}
518
491
519 kwargs['configuration_keys'] = keys[1:]
492 kwargs['configuration_keys'] = keys[1:]
520 kwargs['configurations'] = configurations#.values(*keys)
493 kwargs['configurations'] = configurations#.values(*keys)
521
494
522 kwargs['title'] = 'Configuration'
495 kwargs['title'] = 'Configuration'
523 kwargs['suptitle'] = 'List'
496 kwargs['suptitle'] = 'List'
524 kwargs['button'] = 'New Configuration'
497 kwargs['button'] = 'New Configuration'
525
498
526 return render(request, 'dev_confs.html', kwargs)
499 return render(request, 'dev_confs.html', kwargs)
527
500
528 def dev_conf(request, id_conf):
501 def dev_conf(request, id_conf):
529
502
530 conf = get_object_or_404(Configuration, pk=id_conf)
503 conf = get_object_or_404(Configuration, pk=id_conf)
531
504
532 return redirect(conf.get_absolute_url())
505 return redirect(conf.get_absolute_url())
533
506
534
507
535 def dev_conf_new(request, id_exp=0, id_dev=0):
508 def dev_conf_new(request, id_exp=0, id_dev=0):
536
509
537 initial = {}
510 initial = {}
538
511
539 if id_exp<>0:
512 if id_exp<>0:
540 initial['experiment'] = id_exp
513 initial['experiment'] = id_exp
541
514
542 if id_dev<>0:
515 if id_dev<>0:
543 initial['device'] = id_dev
516 initial['device'] = id_dev
544
517
545 if request.method == 'GET':
518 if request.method == 'GET':
546 if id_dev==0:
519 if id_dev==0:
547 form = ConfigurationForm(initial=initial)
520 form = ConfigurationForm(initial=initial)
548 else:
521 else:
549 device = Device.objects.get(pk=id_dev)
522 device = Device.objects.get(pk=id_dev)
550 DevConfForm = CONF_FORMS[device.device_type.name]
523 DevConfForm = CONF_FORMS[device.device_type.name]
551
524
552 form = DevConfForm(initial=initial)
525 form = DevConfForm(initial=initial)
553
526
554 if request.method == 'POST':
527 if request.method == 'POST':
555
528
556 device = Device.objects.get(pk=request.POST['device'])
529 device = Device.objects.get(pk=request.POST['device'])
557 DevConfForm = CONF_FORMS[device.device_type.name]
530 DevConfForm = CONF_FORMS[device.device_type.name]
558
531
559 form = DevConfForm(request.POST)
532 form = DevConfForm(request.POST)
560
533
561 if form.is_valid():
534 if form.is_valid():
562 dev_conf = form.save()
535 dev_conf = form.save()
563
536
564 return redirect('url_dev_confs')
537 return redirect('url_dev_confs')
565
538
566 kwargs = {}
539 kwargs = {}
567 kwargs['id_exp'] = id_exp
540 kwargs['id_exp'] = id_exp
568 kwargs['form'] = form
541 kwargs['form'] = form
569 kwargs['title'] = 'Configuration'
542 kwargs['title'] = 'Configuration'
570 kwargs['suptitle'] = 'New'
543 kwargs['suptitle'] = 'New'
571 kwargs['button'] = 'Create'
544 kwargs['button'] = 'Create'
572
545
573 return render(request, 'dev_conf_edit.html', kwargs)
546 return render(request, 'dev_conf_edit.html', kwargs)
574
547
575 def dev_conf_edit(request, id_conf):
548 def dev_conf_edit(request, id_conf):
576
549
577 conf = get_object_or_404(Configuration, pk=id_conf)
550 conf = get_object_or_404(Configuration, pk=id_conf)
578
551
579 DevConfModel = CONF_MODELS[conf.device.device_type.name]
552 DevConfModel = CONF_MODELS[conf.device.device_type.name]
580 DevConfForm = CONF_FORMS[conf.device.device_type.name]
553 DevConfForm = CONF_FORMS[conf.device.device_type.name]
581
554
582 dev_conf = DevConfModel.objects.get(pk=id_conf)
555 dev_conf = DevConfModel.objects.get(pk=id_conf)
583
556
584 if request.method=='GET':
557 if request.method=='GET':
585 form = DevConfForm(instance=dev_conf)
558 form = DevConfForm(instance=dev_conf)
586
559
587 if request.method=='POST':
560 if request.method=='POST':
588 form = DevConfForm(request.POST, instance=dev_conf)
561 form = DevConfForm(request.POST, instance=dev_conf)
589
562
590 if form.is_valid():
563 if form.is_valid():
591 form.save()
564 form.save()
592 return redirect('url_dev_conf', id_conf=id_conf)
565 return redirect('url_dev_conf', id_conf=id_conf)
593
566
594 kwargs = {}
567 kwargs = {}
595 kwargs['form'] = form
568 kwargs['form'] = form
596 kwargs['title'] = 'Device Configuration'
569 kwargs['title'] = 'Device Configuration'
597 kwargs['suptitle'] = 'Edit'
570 kwargs['suptitle'] = 'Edit'
598 kwargs['button'] = 'Update'
571 kwargs['button'] = 'Update'
599
572
600 ###### SIDEBAR ######
573 ###### SIDEBAR ######
601 kwargs.update(sidebar(conf=conf))
574 kwargs.update(sidebar(conf=conf))
602
575
603 return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs)
576 return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs)
604
577
605 def dev_conf_start(request, id_conf):
578 def dev_conf_start(request, id_conf):
606
579
607 conf = get_object_or_404(Configuration, pk=id_conf)
580 conf = get_object_or_404(Configuration, pk=id_conf)
608
581
609 DevConfModel = CONF_MODELS[conf.device.device_type.name]
582 DevConfModel = CONF_MODELS[conf.device.device_type.name]
610
583
611 conf = DevConfModel.objects.get(pk=id_conf)
584 conf = DevConfModel.objects.get(pk=id_conf)
612
585
613 if conf.start_device():
586 if conf.start_device():
614 messages.success(request, conf.message)
587 messages.success(request, conf.message)
615 else:
588 else:
616 messages.error(request, conf.message)
589 messages.error(request, conf.message)
617
590
618 conf.status_device()
591 conf.status_device()
619
592
620 return redirect(conf.get_absolute_url())
593 return redirect(conf.get_absolute_url())
621
594
622 def dev_conf_stop(request, id_conf):
595 def dev_conf_stop(request, id_conf):
623
596
624 conf = get_object_or_404(Configuration, pk=id_conf)
597 conf = get_object_or_404(Configuration, pk=id_conf)
625
598
626 DevConfModel = CONF_MODELS[conf.device.device_type.name]
599 DevConfModel = CONF_MODELS[conf.device.device_type.name]
627
600
628 conf = DevConfModel.objects.get(pk=id_conf)
601 conf = DevConfModel.objects.get(pk=id_conf)
629
602
630 if conf.stop_device():
603 if conf.stop_device():
631 messages.success(request, conf.message)
604 messages.success(request, conf.message)
632 else:
605 else:
633 messages.error(request, conf.message)
606 messages.error(request, conf.message)
634
607
635 conf.status_device()
608 conf.status_device()
636
609
637 return redirect(conf.get_absolute_url())
610 return redirect(conf.get_absolute_url())
638
611
639 def dev_conf_status(request, id_conf):
612 def dev_conf_status(request, id_conf):
640
613
641 conf = get_object_or_404(Configuration, pk=id_conf)
614 conf = get_object_or_404(Configuration, pk=id_conf)
642
615
643 DevConfModel = CONF_MODELS[conf.device.device_type.name]
616 DevConfModel = CONF_MODELS[conf.device.device_type.name]
644
617
645 conf = DevConfModel.objects.get(pk=id_conf)
618 conf = DevConfModel.objects.get(pk=id_conf)
646
619
647 if conf.status_device():
620 if conf.status_device():
648 messages.success(request, conf.message)
621 messages.success(request, conf.message)
649 else:
622 else:
650 messages.error(request, conf.message)
623 messages.error(request, conf.message)
651
624
652 return redirect(conf.get_absolute_url())
625 return redirect(conf.get_absolute_url())
653
626
654
627
655 def dev_conf_write(request, id_conf):
628 def dev_conf_write(request, id_conf):
656
629
657 conf = get_object_or_404(Configuration, pk=id_conf)
630 conf = get_object_or_404(Configuration, pk=id_conf)
658
631
659 DevConfModel = CONF_MODELS[conf.device.device_type.name]
632 DevConfModel = CONF_MODELS[conf.device.device_type.name]
660
633
661 conf = DevConfModel.objects.get(pk=id_conf)
634 conf = DevConfModel.objects.get(pk=id_conf)
662
635
663 answer = conf.write_device()
636 answer = conf.write_device()
664 conf.status_device()
637 conf.status_device()
665
638
666 if answer:
639 if answer:
667 messages.success(request, conf.message)
640 messages.success(request, conf.message)
668
641
669 #Creating a historical configuration
642 #Creating a historical configuration
670 conf.clone(type=0, template=False)
643 conf.clone(type=0, template=False)
671
644
672 #Original configuration
645 #Original configuration
673 conf = DevConfModel.objects.get(pk=id_conf)
646 conf = DevConfModel.objects.get(pk=id_conf)
674 else:
647 else:
675 messages.error(request, conf.message)
648 messages.error(request, conf.message)
676
649
677 return redirect(conf.get_absolute_url())
650 return redirect(conf.get_absolute_url())
678
651
679 def dev_conf_read(request, id_conf):
652 def dev_conf_read(request, id_conf):
680
653
681 conf = get_object_or_404(Configuration, pk=id_conf)
654 conf = get_object_or_404(Configuration, pk=id_conf)
682
655
683 DevConfModel = CONF_MODELS[conf.device.device_type.name]
656 DevConfModel = CONF_MODELS[conf.device.device_type.name]
684 DevConfForm = CONF_FORMS[conf.device.device_type.name]
657 DevConfForm = CONF_FORMS[conf.device.device_type.name]
685
658
686 conf = DevConfModel.objects.get(pk=id_conf)
659 conf = DevConfModel.objects.get(pk=id_conf)
687
660
688 if request.method=='GET':
661 if request.method=='GET':
689
662
690 parms = conf.read_device()
663 parms = conf.read_device()
691 conf.status_device()
664 conf.status_device()
692
665
693 if not parms:
666 if not parms:
694 messages.error(request, conf.message)
667 messages.error(request, conf.message)
695 return redirect(conf.get_absolute_url())
668 return redirect(conf.get_absolute_url())
696
669
697 form = DevConfForm(initial=parms, instance=conf)
670 form = DevConfForm(initial=parms, instance=conf)
698
671
699 if request.method=='POST':
672 if request.method=='POST':
700 form = DevConfForm(request.POST, instance=conf)
673 form = DevConfForm(request.POST, instance=conf)
701
674
702 if form.is_valid():
675 if form.is_valid():
703 form.save()
676 form.save()
704 return redirect(conf.get_absolute_url())
677 return redirect(conf.get_absolute_url())
705
678
706 messages.error(request, "Parameters could not be saved")
679 messages.error(request, "Parameters could not be saved")
707
680
708 kwargs = {}
681 kwargs = {}
709 kwargs['id_dev'] = conf.id
682 kwargs['id_dev'] = conf.id
710 kwargs['form'] = form
683 kwargs['form'] = form
711 kwargs['title'] = 'Device Configuration'
684 kwargs['title'] = 'Device Configuration'
712 kwargs['suptitle'] = 'Parameters read from device'
685 kwargs['suptitle'] = 'Parameters read from device'
713 kwargs['button'] = 'Save'
686 kwargs['button'] = 'Save'
714
687
715 ###### SIDEBAR ######
688 ###### SIDEBAR ######
716 kwargs.update(sidebar(conf=conf))
689 kwargs.update(sidebar(conf=conf))
717
690
718 return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs)
691 return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs)
719
692
720 def dev_conf_import(request, id_conf):
693 def dev_conf_import(request, id_conf):
721
694
722 conf = get_object_or_404(Configuration, pk=id_conf)
695 conf = get_object_or_404(Configuration, pk=id_conf)
723
696
724 DevConfModel = CONF_MODELS[conf.device.device_type.name]
697 DevConfModel = CONF_MODELS[conf.device.device_type.name]
725 DevConfForm = CONF_FORMS[conf.device.device_type.name]
698 DevConfForm = CONF_FORMS[conf.device.device_type.name]
726 conf = DevConfModel.objects.get(pk=id_conf)
699 conf = DevConfModel.objects.get(pk=id_conf)
727
700
728 if request.method == 'GET':
701 if request.method == 'GET':
729 file_form = UploadFileForm()
702 file_form = UploadFileForm()
730
703
731 if request.method == 'POST':
704 if request.method == 'POST':
732 file_form = UploadFileForm(request.POST, request.FILES)
705 file_form = UploadFileForm(request.POST, request.FILES)
733
706
734 if file_form.is_valid():
707 if file_form.is_valid():
735
708
736 parms = conf.import_from_file(request.FILES['file'])
709 parms = conf.import_from_file(request.FILES['file'])
737
710
738 if parms:
711 if parms:
739 messages.success(request, "Parameters imported from: '%s'." %request.FILES['file'].name)
712 messages.success(request, "Parameters imported from: '%s'." %request.FILES['file'].name)
740 form = DevConfForm(initial=parms, instance=conf)
713 form = DevConfForm(initial=parms, instance=conf)
741
714
742 kwargs = {}
715 kwargs = {}
743 kwargs['id_dev'] = conf.id
716 kwargs['id_dev'] = conf.id
744 kwargs['form'] = form
717 kwargs['form'] = form
745 kwargs['title'] = 'Device Configuration'
718 kwargs['title'] = 'Device Configuration'
746 kwargs['suptitle'] = 'Parameters imported'
719 kwargs['suptitle'] = 'Parameters imported'
747 kwargs['button'] = 'Save'
720 kwargs['button'] = 'Save'
748 kwargs['action'] = conf.get_absolute_url_edit()
721 kwargs['action'] = conf.get_absolute_url_edit()
749 kwargs['previous'] = conf.get_absolute_url()
722 kwargs['previous'] = conf.get_absolute_url()
750
723
751 ###### SIDEBAR ######
724 ###### SIDEBAR ######
752 kwargs.update(sidebar(conf=conf))
725 kwargs.update(sidebar(conf=conf))
753
726
754 return render(request, '%s_conf_edit.html' % conf.device.device_type.name, kwargs)
727 return render(request, '%s_conf_edit.html' % conf.device.device_type.name, kwargs)
755
728
756 messages.error(request, "Could not import parameters from file")
729 messages.error(request, "Could not import parameters from file")
757
730
758 kwargs = {}
731 kwargs = {}
759 kwargs['id_dev'] = conf.id
732 kwargs['id_dev'] = conf.id
760 kwargs['title'] = 'Device Configuration'
733 kwargs['title'] = 'Device Configuration'
761 kwargs['form'] = file_form
734 kwargs['form'] = file_form
762 kwargs['suptitle'] = 'Importing file'
735 kwargs['suptitle'] = 'Importing file'
763 kwargs['button'] = 'Import'
736 kwargs['button'] = 'Import'
764
737
765 kwargs.update(sidebar(conf=conf))
738 kwargs.update(sidebar(conf=conf))
766
739
767 return render(request, 'dev_conf_import.html', kwargs)
740 return render(request, 'dev_conf_import.html', kwargs)
768
741
769 def dev_conf_export(request, id_conf):
742 def dev_conf_export(request, id_conf):
770
743
771 conf = get_object_or_404(Configuration, pk=id_conf)
744 conf = get_object_or_404(Configuration, pk=id_conf)
772
745
773 DevConfModel = CONF_MODELS[conf.device.device_type.name]
746 DevConfModel = CONF_MODELS[conf.device.device_type.name]
774
747
775 conf = DevConfModel.objects.get(pk=id_conf)
748 conf = DevConfModel.objects.get(pk=id_conf)
776
749
777 if request.method == 'GET':
750 if request.method == 'GET':
778 file_form = DownloadFileForm(conf.device.device_type.name)
751 file_form = DownloadFileForm(conf.device.device_type.name)
779
752
780 if request.method == 'POST':
753 if request.method == 'POST':
781 file_form = DownloadFileForm(conf.device.device_type.name, request.POST)
754 file_form = DownloadFileForm(conf.device.device_type.name, request.POST)
782
755
783 if file_form.is_valid():
756 if file_form.is_valid():
784 fields = conf.export_to_file(format = file_form.cleaned_data['format'])
757 fields = conf.export_to_file(format = file_form.cleaned_data['format'])
785
758
786 response = HttpResponse(content_type=fields['content_type'])
759 response = HttpResponse(content_type=fields['content_type'])
787 response['Content-Disposition'] = 'attachment; filename="%s"' %fields['filename']
760 response['Content-Disposition'] = 'attachment; filename="%s"' %fields['filename']
788 response.write(fields['content'])
761 response.write(fields['content'])
789
762
790 return response
763 return response
791
764
792 messages.error(request, "Could not export parameters")
765 messages.error(request, "Could not export parameters")
793
766
794 kwargs = {}
767 kwargs = {}
795 kwargs['id_dev'] = conf.id
768 kwargs['id_dev'] = conf.id
796 kwargs['title'] = 'Device Configuration'
769 kwargs['title'] = 'Device Configuration'
797 kwargs['form'] = file_form
770 kwargs['form'] = file_form
798 kwargs['suptitle'] = 'Exporting file'
771 kwargs['suptitle'] = 'Exporting file'
799 kwargs['button'] = 'Export'
772 kwargs['button'] = 'Export'
800
773
801 return render(request, 'dev_conf_export.html', kwargs)
774 return render(request, 'dev_conf_export.html', kwargs)
802
775
803 def dev_conf_delete(request, id_conf):
776 def dev_conf_delete(request, id_conf):
804
777
805 conf = get_object_or_404(Configuration, pk=id_conf)
778 conf = get_object_or_404(Configuration, pk=id_conf)
806
779
807 if request.method=='POST':
780 if request.method=='POST':
808 if request.user.is_staff:
781 if request.user.is_staff:
809 id_exp = conf.experiment.id
782 id_exp = conf.experiment.id
810 conf.delete()
783 conf.delete()
811 return redirect('url_experiment', id_exp=id_exp)
784 return redirect('url_experiment', id_exp=id_exp)
812
785
813 return HttpResponse("Not enough permission to delete this object")
786 return HttpResponse("Not enough permission to delete this object")
814
787
815 kwargs = {'object':conf, 'conf_active':'active',
788 kwargs = {'object':conf, 'conf_active':'active',
816 'url_cancel':'url_dev_conf', 'id_item':id_conf}
789 'url_cancel':'url_dev_conf', 'id_item':id_conf}
817
790
818 return render(request, 'item_delete.html', kwargs)
791 return render(request, 'item_delete.html', kwargs)
819
792
820
793
821 def sidebar(**kwargs):
794 def sidebar(**kwargs):
822
795
823 side_data = {}
796 side_data = {}
824
797
825 conf = kwargs.get('conf', None)
798 conf = kwargs.get('conf', None)
826 experiment = kwargs.get('experiment', None)
799 experiment = kwargs.get('experiment', None)
827
800
828 if not experiment:
801 if not experiment:
829 experiment = conf.experiment
802 experiment = conf.experiment
830
803
831 if experiment:
804 if experiment:
832 side_data['experiment'] = experiment
805 side_data['experiment'] = experiment
833 campaign = experiment.campaign_set.all()
806 campaign = experiment.campaign_set.all()
834 if campaign:
807 if campaign:
835 side_data['campaign'] = campaign[0]
808 side_data['campaign'] = campaign[0]
836 experiments = campaign[0].experiments.all()
809 experiments = campaign[0].experiments.all()
837 else:
810 else:
838 experiments = [experiment]
811 experiments = [experiment]
839 configurations = experiment.configuration_set.filter(type=0)
812 configurations = experiment.configuration_set.filter(type=0)
840 side_data['side_experiments'] = experiments
813 side_data['side_experiments'] = experiments
841 side_data['side_configurations'] = configurations
814 side_data['side_configurations'] = configurations
842
815
843 return side_data
816 return side_data
844
817
845
818
846 def operation(request, id_camp=None):
819 def operation(request, id_camp=None):
847
820
848 if not id_camp:
821 if not id_camp:
849 campaigns = Campaign.objects.all().order_by('-start_date')
822 campaigns = Campaign.objects.all().order_by('-start_date')
850
823
851 if not campaigns:
824 if not campaigns:
852 kwargs = {}
825 kwargs = {}
853 kwargs['title'] = 'No Campaigns'
826 kwargs['title'] = 'No Campaigns'
854 kwargs['suptitle'] = 'Empty'
827 kwargs['suptitle'] = 'Empty'
855 return render(request, 'operation.html', kwargs)
828 return render(request, 'operation.html', kwargs)
856
829
857 id_camp = campaigns[0].id
830 id_camp = campaigns[0].id
858
831
859 campaign = get_object_or_404(Campaign, pk = id_camp)
832 campaign = get_object_or_404(Campaign, pk = id_camp)
860
833
861 if request.method=='GET':
834 if request.method=='GET':
862 form = OperationForm(initial={'campaign': campaign.id}, length = 5)
835 form = OperationForm(initial={'campaign': campaign.id}, length = 5)
863
836
864 if request.method=='POST':
837 if request.method=='POST':
865 form = OperationForm(request.POST, initial={'campaign':campaign.id}, length = 5)
838 form = OperationForm(request.POST, initial={'campaign':campaign.id}, length = 5)
866
839
867 if form.is_valid():
840 if form.is_valid():
868 return redirect('url_operation', id_camp=campaign.id)
841 return redirect('url_operation', id_camp=campaign.id)
869 #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct()
842 #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct()
870 experiments = Experiment.objects.filter(campaign__pk=campaign.id)
843 experiments = Experiment.objects.filter(campaign__pk=campaign.id)
871 for exs in experiments:
844 #for exs in experiments:
872 exs.get_status()
845 # exs.get_status()
873 locations= Location.objects.filter(experiment=experiments).distinct()
846 locations= Location.objects.filter(experiment=experiments).distinct()
874 #experiments = [Experiment.objects.filter(location__pk=location.id).filter(campaign__pk=campaign.id) for location in locations]
847 #experiments = [Experiment.objects.filter(location__pk=location.id).filter(campaign__pk=campaign.id) for location in locations]
875 kwargs = {}
848 kwargs = {}
876 #---Campaign
849 #---Campaign
877 kwargs['campaign'] = campaign
850 kwargs['campaign'] = campaign
878 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
851 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
879 #---Experiment
852 #---Experiment
880 keys = ['id', 'name', 'start_time', 'end_time', 'status']
853 keys = ['id', 'name', 'start_time', 'end_time', 'status']
881 kwargs['experiment_keys'] = keys[1:]
854 kwargs['experiment_keys'] = keys[1:]
882 kwargs['experiments'] = experiments
855 kwargs['experiments'] = experiments
883 #---Radar
856 #---Radar
884 kwargs['locations'] = locations
857 kwargs['locations'] = locations
885 #---Else
858 #---Else
886 kwargs['title'] = 'Campaign'
859 kwargs['title'] = 'Campaign'
887 kwargs['suptitle'] = campaign.name
860 kwargs['suptitle'] = campaign.name
888 kwargs['form'] = form
861 kwargs['form'] = form
889 kwargs['button'] = 'Search'
862 kwargs['button'] = 'Search'
890 kwargs['details'] = True
863 kwargs['details'] = True
891 kwargs['search_button'] = True
864 kwargs['search_button'] = True
892
865
893 return render(request, 'operation.html', kwargs)
866 return render(request, 'operation.html', kwargs)
894
867
895 def operation_search(request, id_camp=None):
868 def operation_search(request, id_camp=None):
896
869
897
870
898 if not id_camp:
871 if not id_camp:
899 campaigns = Campaign.objects.all().order_by('-start_date')
872 campaigns = Campaign.objects.all().order_by('-start_date')
900
873
901 if not campaigns:
874 if not campaigns:
902 return render(request, 'operation.html', {})
875 return render(request, 'operation.html', {})
903
876
904 id_camp = campaigns[0].id
877 id_camp = campaigns[0].id
905 campaign = get_object_or_404(Campaign, pk = id_camp)
878 campaign = get_object_or_404(Campaign, pk = id_camp)
906
879
907 if request.method=='GET':
880 if request.method=='GET':
908 form = OperationSearchForm(initial={'campaign': campaign.id})
881 form = OperationSearchForm(initial={'campaign': campaign.id})
909
882
910 if request.method=='POST':
883 if request.method=='POST':
911 form = OperationSearchForm(request.POST, initial={'campaign':campaign.id})
884 form = OperationSearchForm(request.POST, initial={'campaign':campaign.id})
912
885
913 if form.is_valid():
886 if form.is_valid():
914 return redirect('url_operation', id_camp=campaign.id)
887 return redirect('url_operation', id_camp=campaign.id)
915
888
916 #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct()
889 #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct()
917 experiments = Experiment.objects.filter(campaign__pk=campaign.id)
890 experiments = Experiment.objects.filter(campaign__pk=campaign.id)
918 for exs in experiments:
891 #for exs in experiments:
919 exs.get_status()
892 # exs.get_status()
920 locations= Location.objects.filter(experiment=experiments).distinct()
893 locations= Location.objects.filter(experiment=experiments).distinct()
921 form = OperationSearchForm(initial={'campaign': campaign.id})
894 form = OperationSearchForm(initial={'campaign': campaign.id})
922
895
923 kwargs = {}
896 kwargs = {}
924 #---Campaign
897 #---Campaign
925 kwargs['campaign'] = campaign
898 kwargs['campaign'] = campaign
926 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
899 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
927 #---Experiment
900 #---Experiment
928 keys = ['id', 'name', 'start_time', 'end_time', 'status']
901 keys = ['id', 'name', 'start_time', 'end_time', 'status']
929 kwargs['experiment_keys'] = keys[1:]
902 kwargs['experiment_keys'] = keys[1:]
930 kwargs['experiments'] = experiments
903 kwargs['experiments'] = experiments
931 #---Radar
904 #---Radar
932 kwargs['locations'] = locations
905 kwargs['locations'] = locations
933 #---Else
906 #---Else
934 kwargs['title'] = 'Campaign'
907 kwargs['title'] = 'Campaign'
935 kwargs['suptitle'] = campaign.name
908 kwargs['suptitle'] = campaign.name
936 kwargs['form'] = form
909 kwargs['form'] = form
937 kwargs['button'] = 'Select'
910 kwargs['button'] = 'Select'
938 kwargs['details'] = True
911 kwargs['details'] = True
939 kwargs['search_button'] = False
912 kwargs['search_button'] = False
940
913
941 return render(request, 'operation.html', kwargs)
914 return render(request, 'operation.html', kwargs)
942
915
943
916
944 def radar_play(request, id_camp, id_radar):
917 def radar_play(request, id_camp, id_radar):
918 campaign = get_object_or_404(Campaign, pk = id_camp)
919 radar = get_object_or_404(Location, pk = id_radar)
920 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
921 current_time = datetime.today()
922 #exp = RunningExperiment(
923 # radar = purchase_request.user_id,
924 # running_experiment = purchase_request,
925 # status = ,
926 # )
927 #new_pos.append(exp)
928 #exp.save()
945
929
946 route = request.META['HTTP_REFERER']
930 route = request.META['HTTP_REFERER']
947 route = str(route)
931 route = str(route)
948 if 'search' in route:
932 if 'search' in route:
949 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
933 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
950 else:
934 else:
951 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
935 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
952
936
937
953 def radar_stop(request, id_camp, id_radar):
938 def radar_stop(request, id_camp, id_radar):
954
939
955 route = request.META['HTTP_REFERER']
940 route = request.META['HTTP_REFERER']
956 route = str(route)
941 route = str(route)
957 if 'search' in route:
942 if 'search' in route:
958 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
943 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
959 else:
944 else:
960 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
945 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
961
946
947
948 def radar_refresh(request, id_camp, id_radar):
949
950 campaign = get_object_or_404(Campaign, pk = id_camp)
951 radar = get_object_or_404(Location, pk = id_radar)
952 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
953 for exs in experiments:
954 exs.get_status()
955
956 route = request.META['HTTP_REFERER']
957 route = str(route)
958 if 'search' in route:
959 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
960 else:
961 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
962
General Comments 0
You need to be logged in to leave comments. Login now