##// END OF EJS Templates
Task #487: Vista de Operacion...
Fiorella Quino -
r56:89f0d8586d56
parent child
Show More
@@ -1,103 +1,105
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 <form class="form" method="post" action="">
16 <form class="form" method="post" action="">
17 {% csrf_token %}
17 {% csrf_token %}
18 {% bootstrap_form form layout='horizontal' size='medium' %}
18 {% bootstrap_form form layout='horizontal' size='medium' %}
19 <div style="clear: both;"></div>
19 <div style="clear: both;"></div>
20 <br>
20 <br>
21 <button type="submit" class="btn btn-primary pull-right">{{button}}</button>
21 <button type="submit" class="btn btn-primary pull-right">{{button}}</button>
22 <br>
22 <br>
23 <br>
23 <br>
24 </form>
24 </form>
25 <br>
25 <br>
26 <br>
26 <br>
27
27
28 <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true" >
28 <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true" >
29
29
30 {% for location in locations %}
30 {% for location in locations %}
31
31
32 <div class="panel panel-default">
32 <div class="panel panel-default">
33 <div class="panel-heading" role="tab" id="headingTwo">
33 <div class="panel-heading" role="tab" id="headingTwo">
34 <h4 class="panel-title">
34 <h4 class="panel-title">
35 <a class="collapsed" role="button" data-toggle="collapse" href="#collapseTwo-{{ location.id }}" aria-expanded="false" aria-controls="collapseTwo">
35 <a class="collapsed" role="button" data-toggle="collapse" href="#collapseTwo-{{ location.id }}" aria-expanded="false" aria-controls="collapseTwo">
36 {{location.name}}: Experiment List
36 {{location.name}}: Experiment List
37 <span>
37 <span>
38 </span>
38 </span>
39 </a>
39 </a>
40 <button type="button" class="btn btn-primary pull-right btn-xs" aria-label="Left Align" style="margin-left: 10px">
40 <button type="button" class="btn btn-primary pull-right btn-xs" aria-label="Left Align" style="margin-left: 10px">
41 <span class="glyphicon glyphicon-play" aria-hidden="true"></span>
41 <span class="glyphicon glyphicon-play" aria-hidden="true"></span>
42 </button>
42 </button>
43 <button type="button" class="btn btn-primary pull-right btn-xs" aria-label="Left Align" style="margin-left: 10px">
43 <button type="button" class="btn btn-primary pull-right btn-xs" aria-label="Left Align" style="margin-left: 10px">
44 <span class="glyphicon glyphicon-stop" aria-hidden="true"></span>
44 <span class="glyphicon glyphicon-stop" aria-hidden="true"></span>
45 </button>
45 </button>
46
46
47 </h4>
47 </h4>
48 </div>
48 </div>
49
49
50 <div id="collapseTwo-{{ location.name }}" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingTwo">
50 <div id="collapseTwo-{{ location.id }}" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingTwo">
51 <div class="panel-body">
51 <div class="panel-body">
52 <table class="table table-hover">
52 <table class="table table-hover">
53 <tr>
53 <tr>
54 <th>#</th>
54
55 {% for header in experiment_keys %}
55 {% for header in experiment_keys %}
56 <th>{{ header|title }}</th>
56 <th>{{ header|title }}</th>
57 {% endfor%}
57 {% endfor%}
58 </tr>
58 </tr>
59
59
60 {% for item in experiments %}
60 {% for item in experiments %}
61 {% if location.name in item.location.name %}
61 {% for exs in item %}
62 <tr class="clickable-row" data-href="{% url 'url_experiment' item.id %}" >
62 <tr class="clickable-row" data-href="{% url 'url_experiment' exs.id %}" >
63 <td>{{ forloop.counter }}</td>
63
64 {% for key in experiment_keys %}
64 {% for key in experiment_keys %}
65 <td>{{ item|value:key }}</td>
65 {% if location.name in exs.location.name %}
66 <td>{{ exs|value:key }}</td>
67 {% endif %}
68 {% endfor %}
66 {% endfor %}
69 {% endfor %}
67 </tr>
70 </tr>
68 {% endif %}
69 {% endfor %}
71 {% endfor %}
70 </table>
72 </table>
71 </div>
73 </div>
72 </div>
74 </div>
73 </div>
75 </div>
74 {% endfor %}
76 {% endfor %}
75 </div>
77 </div>
76
78
77 {% endblock %}
79 {% endblock %}
78
80
79
81
80
82
81 {% block extra-js%}
83 {% block extra-js%}
82 <script type="text/javascript">
84 <script type="text/javascript">
83
85
84 //$("#bt_add").click(function() {
86 //$("#bt_add").click(function() {
85 //alert("sometext");
87 //alert("sometext");
86 // document.location = "{% url 'url_operation' campaign.id %}";
88 // document.location = "{% url 'url_operation' campaign.id %}";
87 //});
89 //});
88
90
89 $(".clickable-row").click(function() {
91 $(".clickable-row").click(function() {
90 document.location = $(this).data("href");
92 document.location = $(this).data("href");
91 });
93 });
92
94
93 $(document).ready(function() {
95 $(document).ready(function() {
94 $("#id_campaign").change(function() {
96 $("#id_campaign").change(function() {
95 var id_camp = document.getElementById("id_campaign").value;
97 var id_camp = document.getElementById("id_campaign").value;
96 //alert(id_camp);
98 //alert(id_camp);
97 document.location = "{% url 'url_operation'%}"+String(id_camp);
99 document.location = "{% url 'url_operation'%}"+String(id_camp);
98 });
100 });
99 });
101 });
100
102
101
103
102 </script>
104 </script>
103 {% endblock %} No newline at end of file
105 {% endblock %}
@@ -1,798 +1,799
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.contrib import messages
2 from django.contrib import messages
3
3
4 from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm, LocationForm, UploadFileForm, DownloadFileForm, OperationForm
4 from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm, LocationForm, UploadFileForm, DownloadFileForm, OperationForm
5 from apps.cgs.forms import CGSConfigurationForm
5 from apps.cgs.forms import CGSConfigurationForm
6 from apps.jars.forms import JARSConfigurationForm
6 from apps.jars.forms import JARSConfigurationForm
7 from apps.usrp.forms import USRPConfigurationForm
7 from apps.usrp.forms import USRPConfigurationForm
8 from apps.abs.forms import ABSConfigurationForm
8 from apps.abs.forms import ABSConfigurationForm
9 from apps.rc.forms import RCConfigurationForm
9 from apps.rc.forms import RCConfigurationForm
10 from apps.dds.forms import DDSConfigurationForm
10 from apps.dds.forms import DDSConfigurationForm
11
11
12 from .models import Campaign, Experiment, Device, Configuration, Location
12 from .models import Campaign, Experiment, Device, Configuration, Location
13 from apps.cgs.models import CGSConfiguration
13 from apps.cgs.models import CGSConfiguration
14 from apps.jars.models import JARSConfiguration
14 from apps.jars.models import JARSConfiguration
15 from apps.usrp.models import USRPConfiguration
15 from apps.usrp.models import USRPConfiguration
16 from apps.abs.models import ABSConfiguration
16 from apps.abs.models import ABSConfiguration
17 from apps.rc.models import RCConfiguration
17 from apps.rc.models import RCConfiguration
18 from apps.dds.models import DDSConfiguration
18 from apps.dds.models import DDSConfiguration
19
19
20 # Create your views here.
20 # Create your views here.
21
21
22 CONF_FORMS = {
22 CONF_FORMS = {
23 'rc': RCConfigurationForm,
23 'rc': RCConfigurationForm,
24 'dds': DDSConfigurationForm,
24 'dds': DDSConfigurationForm,
25 'jars': JARSConfigurationForm,
25 'jars': JARSConfigurationForm,
26 'cgs': CGSConfigurationForm,
26 'cgs': CGSConfigurationForm,
27 'abs': ABSConfigurationForm,
27 'abs': ABSConfigurationForm,
28 'usrp': USRPConfigurationForm,
28 'usrp': USRPConfigurationForm,
29 }
29 }
30
30
31 CONF_MODELS = {
31 CONF_MODELS = {
32 'rc': RCConfiguration,
32 'rc': RCConfiguration,
33 'dds': DDSConfiguration,
33 'dds': DDSConfiguration,
34 'jars': JARSConfiguration,
34 'jars': JARSConfiguration,
35 'cgs': CGSConfiguration,
35 'cgs': CGSConfiguration,
36 'abs': ABSConfiguration,
36 'abs': ABSConfiguration,
37 'usrp': USRPConfiguration,
37 'usrp': USRPConfiguration,
38 }
38 }
39
39
40 def index(request):
40 def index(request):
41 kwargs = {}
41 kwargs = {}
42
42
43 return render(request, 'index.html', kwargs)
43 return render(request, 'index.html', kwargs)
44
44
45 def locations(request):
45 def locations(request):
46
46
47 locations = Location.objects.all().order_by('name')
47 locations = Location.objects.all().order_by('name')
48
48
49 keys = ['id', 'name', 'description']
49 keys = ['id', 'name', 'description']
50
50
51 kwargs = {}
51 kwargs = {}
52 kwargs['location_keys'] = keys[1:]
52 kwargs['location_keys'] = keys[1:]
53 kwargs['locations'] = locations
53 kwargs['locations'] = locations
54 kwargs['title'] = 'Location'
54 kwargs['title'] = 'Location'
55 kwargs['suptitle'] = 'List'
55 kwargs['suptitle'] = 'List'
56 kwargs['button'] = 'New Location'
56 kwargs['button'] = 'New Location'
57
57
58 return render(request, 'locations.html', kwargs)
58 return render(request, 'locations.html', kwargs)
59
59
60 def location(request, id_loc):
60 def location(request, id_loc):
61
61
62 location = get_object_or_404(Location, pk=id_loc)
62 location = get_object_or_404(Location, pk=id_loc)
63
63
64 kwargs = {}
64 kwargs = {}
65 kwargs['location'] = location
65 kwargs['location'] = location
66 kwargs['location_keys'] = ['name', 'description']
66 kwargs['location_keys'] = ['name', 'description']
67
67
68 kwargs['title'] = 'Location'
68 kwargs['title'] = 'Location'
69 kwargs['suptitle'] = 'Details'
69 kwargs['suptitle'] = 'Details'
70
70
71 return render(request, 'location.html', kwargs)
71 return render(request, 'location.html', kwargs)
72
72
73 def location_new(request):
73 def location_new(request):
74
74
75 if request.method == 'GET':
75 if request.method == 'GET':
76 form = LocationForm()
76 form = LocationForm()
77
77
78 if request.method == 'POST':
78 if request.method == 'POST':
79 form = LocationForm(request.POST)
79 form = LocationForm(request.POST)
80
80
81 if form.is_valid():
81 if form.is_valid():
82 form.save()
82 form.save()
83 return redirect('url_locations')
83 return redirect('url_locations')
84
84
85 kwargs = {}
85 kwargs = {}
86 kwargs['form'] = form
86 kwargs['form'] = form
87 kwargs['title'] = 'Location'
87 kwargs['title'] = 'Location'
88 kwargs['suptitle'] = 'New'
88 kwargs['suptitle'] = 'New'
89 kwargs['button'] = 'Create'
89 kwargs['button'] = 'Create'
90
90
91 return render(request, 'location_edit.html', kwargs)
91 return render(request, 'location_edit.html', kwargs)
92
92
93 def location_edit(request, id_loc):
93 def location_edit(request, id_loc):
94
94
95 location = get_object_or_404(Location, pk=id_loc)
95 location = get_object_or_404(Location, pk=id_loc)
96
96
97 if request.method=='GET':
97 if request.method=='GET':
98 form = LocationForm(instance=location)
98 form = LocationForm(instance=location)
99
99
100 if request.method=='POST':
100 if request.method=='POST':
101 form = LocationForm(request.POST, instance=location)
101 form = LocationForm(request.POST, instance=location)
102
102
103 if form.is_valid():
103 if form.is_valid():
104 form.save()
104 form.save()
105 return redirect('url_locations')
105 return redirect('url_locations')
106
106
107 kwargs = {}
107 kwargs = {}
108 kwargs['form'] = form
108 kwargs['form'] = form
109 kwargs['title'] = 'Location'
109 kwargs['title'] = 'Location'
110 kwargs['suptitle'] = 'Edit'
110 kwargs['suptitle'] = 'Edit'
111 kwargs['button'] = 'Update'
111 kwargs['button'] = 'Update'
112
112
113 return render(request, 'location_edit.html', kwargs)
113 return render(request, 'location_edit.html', kwargs)
114
114
115 def location_delete(request, id_loc):
115 def location_delete(request, id_loc):
116
116
117 location = get_object_or_404(Location, pk=id_loc)
117 location = get_object_or_404(Location, pk=id_loc)
118
118
119 if request.method=='POST':
119 if request.method=='POST':
120
120
121 if request.user.is_staff:
121 if request.user.is_staff:
122 location.delete()
122 location.delete()
123 return redirect('url_locations')
123 return redirect('url_locations')
124
124
125 return HttpResponse("Not enough permission to delete this object")
125 return HttpResponse("Not enough permission to delete this object")
126
126
127 kwargs = {'object':location, 'loc_active':'active',
127 kwargs = {'object':location, 'loc_active':'active',
128 'url_cancel':'url_location', 'id_item':id_loc}
128 'url_cancel':'url_location', 'id_item':id_loc}
129
129
130 return render(request, 'item_delete.html', kwargs)
130 return render(request, 'item_delete.html', kwargs)
131
131
132 def devices(request):
132 def devices(request):
133
133
134 devices = Device.objects.all().order_by('device_type__name')
134 devices = Device.objects.all().order_by('device_type__name')
135
135
136 # keys = ['id', 'device_type__name', 'name', 'ip_address']
136 # keys = ['id', 'device_type__name', 'name', 'ip_address']
137 keys = ['id', 'name', 'ip_address', 'port_address', 'device_type']
137 keys = ['id', 'name', 'ip_address', 'port_address', 'device_type']
138
138
139 kwargs = {}
139 kwargs = {}
140 kwargs['device_keys'] = keys[1:]
140 kwargs['device_keys'] = keys[1:]
141 kwargs['devices'] = devices#.values(*keys)
141 kwargs['devices'] = devices#.values(*keys)
142 kwargs['title'] = 'Device'
142 kwargs['title'] = 'Device'
143 kwargs['suptitle'] = 'List'
143 kwargs['suptitle'] = 'List'
144 kwargs['button'] = 'New Device'
144 kwargs['button'] = 'New Device'
145
145
146 return render(request, 'devices.html', kwargs)
146 return render(request, 'devices.html', kwargs)
147
147
148 def device(request, id_dev):
148 def device(request, id_dev):
149
149
150 device = get_object_or_404(Device, pk=id_dev)
150 device = get_object_or_404(Device, pk=id_dev)
151
151
152 kwargs = {}
152 kwargs = {}
153 kwargs['device'] = device
153 kwargs['device'] = device
154 kwargs['device_keys'] = ['device_type', 'name', 'ip_address', 'port_address', 'description']
154 kwargs['device_keys'] = ['device_type', 'name', 'ip_address', 'port_address', 'description']
155
155
156 kwargs['title'] = 'Device'
156 kwargs['title'] = 'Device'
157 kwargs['suptitle'] = 'Details'
157 kwargs['suptitle'] = 'Details'
158
158
159 return render(request, 'device.html', kwargs)
159 return render(request, 'device.html', kwargs)
160
160
161 def device_new(request):
161 def device_new(request):
162
162
163 if request.method == 'GET':
163 if request.method == 'GET':
164 form = DeviceForm()
164 form = DeviceForm()
165
165
166 if request.method == 'POST':
166 if request.method == 'POST':
167 form = DeviceForm(request.POST)
167 form = DeviceForm(request.POST)
168
168
169 if form.is_valid():
169 if form.is_valid():
170 form.save()
170 form.save()
171 return redirect('url_devices')
171 return redirect('url_devices')
172
172
173 kwargs = {}
173 kwargs = {}
174 kwargs['form'] = form
174 kwargs['form'] = form
175 kwargs['title'] = 'Device'
175 kwargs['title'] = 'Device'
176 kwargs['suptitle'] = 'New'
176 kwargs['suptitle'] = 'New'
177 kwargs['button'] = 'Create'
177 kwargs['button'] = 'Create'
178
178
179 return render(request, 'device_edit.html', kwargs)
179 return render(request, 'device_edit.html', kwargs)
180
180
181 def device_edit(request, id_dev):
181 def device_edit(request, id_dev):
182
182
183 device = get_object_or_404(Device, pk=id_dev)
183 device = get_object_or_404(Device, pk=id_dev)
184
184
185 if request.method=='GET':
185 if request.method=='GET':
186 form = DeviceForm(instance=device)
186 form = DeviceForm(instance=device)
187
187
188 if request.method=='POST':
188 if request.method=='POST':
189 form = DeviceForm(request.POST, instance=device)
189 form = DeviceForm(request.POST, instance=device)
190
190
191 if form.is_valid():
191 if form.is_valid():
192 form.save()
192 form.save()
193 return redirect('url_devices')
193 return redirect('url_devices')
194
194
195 kwargs = {}
195 kwargs = {}
196 kwargs['form'] = form
196 kwargs['form'] = form
197 kwargs['title'] = 'Device'
197 kwargs['title'] = 'Device'
198 kwargs['suptitle'] = 'Edit'
198 kwargs['suptitle'] = 'Edit'
199 kwargs['button'] = 'Update'
199 kwargs['button'] = 'Update'
200
200
201 return render(request, 'device_edit.html', kwargs)
201 return render(request, 'device_edit.html', kwargs)
202
202
203 def device_delete(request, id_dev):
203 def device_delete(request, id_dev):
204
204
205 device = get_object_or_404(Device, pk=id_dev)
205 device = get_object_or_404(Device, pk=id_dev)
206
206
207 if request.method=='POST':
207 if request.method=='POST':
208
208
209 if request.user.is_staff:
209 if request.user.is_staff:
210 device.delete()
210 device.delete()
211 return redirect('url_devices')
211 return redirect('url_devices')
212
212
213 return HttpResponse("Not enough permission to delete this object")
213 return HttpResponse("Not enough permission to delete this object")
214
214
215 kwargs = {'object':device, 'dev_active':'active',
215 kwargs = {'object':device, 'dev_active':'active',
216 'url_cancel':'url_device', 'id_item':id_dev}
216 'url_cancel':'url_device', 'id_item':id_dev}
217
217
218 return render(request, 'item_delete.html', kwargs)
218 return render(request, 'item_delete.html', kwargs)
219
219
220 def campaigns(request):
220 def campaigns(request):
221
221
222 campaigns = Campaign.objects.all().order_by('start_date')
222 campaigns = Campaign.objects.all().order_by('start_date')
223
223
224 keys = ['id', 'name', 'start_date', 'end_date']
224 keys = ['id', 'name', 'start_date', 'end_date']
225
225
226 kwargs = {}
226 kwargs = {}
227 kwargs['campaign_keys'] = keys[1:]
227 kwargs['campaign_keys'] = keys[1:]
228 kwargs['campaigns'] = campaigns#.values(*keys)
228 kwargs['campaigns'] = campaigns#.values(*keys)
229 kwargs['title'] = 'Campaign'
229 kwargs['title'] = 'Campaign'
230 kwargs['suptitle'] = 'List'
230 kwargs['suptitle'] = 'List'
231 kwargs['button'] = 'New Campaign'
231 kwargs['button'] = 'New Campaign'
232
232
233 return render(request, 'campaigns.html', kwargs)
233 return render(request, 'campaigns.html', kwargs)
234
234
235 def campaign(request, id_camp):
235 def campaign(request, id_camp):
236
236
237 campaign = get_object_or_404(Campaign, pk=id_camp)
237 campaign = get_object_or_404(Campaign, pk=id_camp)
238 experiments = Experiment.objects.filter(campaign=campaign)
238 experiments = Experiment.objects.filter(campaign=campaign)
239
239
240 form = CampaignForm(instance=campaign)
240 form = CampaignForm(instance=campaign)
241
241
242 kwargs = {}
242 kwargs = {}
243 kwargs['campaign'] = campaign
243 kwargs['campaign'] = campaign
244 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
244 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
245
245
246 keys = ['id', 'name', 'start_time', 'end_time']
246 keys = ['id', 'name', 'start_time', 'end_time']
247
247
248 kwargs['experiment_keys'] = keys[1:]
248 kwargs['experiment_keys'] = keys[1:]
249 kwargs['experiments'] = experiments.values(*keys)
249 kwargs['experiments'] = experiments.values(*keys)
250
250
251 kwargs['title'] = 'Campaign'
251 kwargs['title'] = 'Campaign'
252 kwargs['suptitle'] = 'Details'
252 kwargs['suptitle'] = 'Details'
253
253
254 kwargs['form'] = form
254 kwargs['form'] = form
255 kwargs['button'] = 'Add Experiment'
255 kwargs['button'] = 'Add Experiment'
256
256
257 return render(request, 'campaign.html', kwargs)
257 return render(request, 'campaign.html', kwargs)
258
258
259 def campaign_new(request):
259 def campaign_new(request):
260
260
261 if request.method == 'GET':
261 if request.method == 'GET':
262 form = CampaignForm()
262 form = CampaignForm()
263
263
264 if request.method == 'POST':
264 if request.method == 'POST':
265 form = CampaignForm(request.POST)
265 form = CampaignForm(request.POST)
266
266
267 if form.is_valid():
267 if form.is_valid():
268 campaign = form.save()
268 campaign = form.save()
269 return redirect('url_campaign', id_camp=campaign.id)
269 return redirect('url_campaign', id_camp=campaign.id)
270
270
271 kwargs = {}
271 kwargs = {}
272 kwargs['form'] = form
272 kwargs['form'] = form
273 kwargs['title'] = 'Campaign'
273 kwargs['title'] = 'Campaign'
274 kwargs['suptitle'] = 'New'
274 kwargs['suptitle'] = 'New'
275 kwargs['button'] = 'Create'
275 kwargs['button'] = 'Create'
276
276
277 return render(request, 'campaign_edit.html', kwargs)
277 return render(request, 'campaign_edit.html', kwargs)
278
278
279 def campaign_edit(request, id_camp):
279 def campaign_edit(request, id_camp):
280
280
281 campaign = get_object_or_404(Campaign, pk=id_camp)
281 campaign = get_object_or_404(Campaign, pk=id_camp)
282
282
283 if request.method=='GET':
283 if request.method=='GET':
284 form = CampaignForm(instance=campaign)
284 form = CampaignForm(instance=campaign)
285
285
286 if request.method=='POST':
286 if request.method=='POST':
287 form = CampaignForm(request.POST, instance=campaign)
287 form = CampaignForm(request.POST, instance=campaign)
288
288
289 if form.is_valid():
289 if form.is_valid():
290 form.save()
290 form.save()
291 return redirect('url_campaign', id_camp=id_camp)
291 return redirect('url_campaign', id_camp=id_camp)
292
292
293 kwargs = {}
293 kwargs = {}
294 kwargs['form'] = form
294 kwargs['form'] = form
295 kwargs['title'] = 'Campaign'
295 kwargs['title'] = 'Campaign'
296 kwargs['suptitle'] = 'Edit'
296 kwargs['suptitle'] = 'Edit'
297 kwargs['button'] = 'Update'
297 kwargs['button'] = 'Update'
298
298
299 return render(request, 'campaign_edit.html', kwargs)
299 return render(request, 'campaign_edit.html', kwargs)
300
300
301 def campaign_delete(request, id_camp):
301 def campaign_delete(request, id_camp):
302
302
303 campaign = get_object_or_404(Campaign, pk=id_camp)
303 campaign = get_object_or_404(Campaign, pk=id_camp)
304
304
305 if request.method=='POST':
305 if request.method=='POST':
306 if request.user.is_staff:
306 if request.user.is_staff:
307 campaign.delete()
307 campaign.delete()
308 return redirect('url_campaigns')
308 return redirect('url_campaigns')
309
309
310 return HttpResponse("Not enough permission to delete this object")
310 return HttpResponse("Not enough permission to delete this object")
311
311
312 kwargs = {'object':campaign, 'camp_active':'active',
312 kwargs = {'object':campaign, 'camp_active':'active',
313 'url_cancel':'url_campaign', 'id_item':id_camp}
313 'url_cancel':'url_campaign', 'id_item':id_camp}
314
314
315 return render(request, 'item_delete.html', kwargs)
315 return render(request, 'item_delete.html', kwargs)
316
316
317 def experiments(request):
317 def experiments(request):
318
318
319 experiment_list = Experiment.objects.all().order_by('campaign')
319 experiment_list = Experiment.objects.all().order_by('campaign')
320
320
321 keys = ['id', 'name', 'start_time', 'end_time', 'campaign']
321 keys = ['id', 'name', 'start_time', 'end_time', 'campaign']
322
322
323 kwargs = {}
323 kwargs = {}
324
324
325 kwargs['experiment_keys'] = keys[1:]
325 kwargs['experiment_keys'] = keys[1:]
326 kwargs['experiments'] = experiment_list#.values(*keys)
326 kwargs['experiments'] = experiment_list#.values(*keys)
327
327
328 kwargs['title'] = 'Experiment'
328 kwargs['title'] = 'Experiment'
329 kwargs['suptitle'] = 'List'
329 kwargs['suptitle'] = 'List'
330 kwargs['button'] = 'New Experiment'
330 kwargs['button'] = 'New Experiment'
331
331
332 return render(request, 'experiments.html', kwargs)
332 return render(request, 'experiments.html', kwargs)
333
333
334 def experiment(request, id_exp):
334 def experiment(request, id_exp):
335
335
336 experiment = get_object_or_404(Experiment, pk=id_exp)
336 experiment = get_object_or_404(Experiment, pk=id_exp)
337
337
338 experiments = Experiment.objects.filter(campaign=experiment.campaign)
338 experiments = Experiment.objects.filter(campaign=experiment.campaign)
339 configurations = Configuration.objects.filter(experiment=experiment, type=0)
339 configurations = Configuration.objects.filter(experiment=experiment, type=0)
340
340
341 kwargs = {}
341 kwargs = {}
342
342
343 exp_keys = ['id', 'campaign', 'location', 'name', 'start_time', 'end_time']
343 exp_keys = ['id', 'campaign', 'location', 'name', 'start_time', 'end_time']
344 conf_keys = ['id', 'device__name', 'device__device_type', 'device__ip_address', 'device__port_address']
344 conf_keys = ['id', 'device__name', 'device__device_type', 'device__ip_address', 'device__port_address']
345
345
346 conf_labels = ['id', 'device__name', 'device_type', 'ip_address', 'port_address']
346 conf_labels = ['id', 'device__name', 'device_type', 'ip_address', 'port_address']
347
347
348 kwargs['experiment_keys'] = exp_keys[1:]
348 kwargs['experiment_keys'] = exp_keys[1:]
349 kwargs['experiment'] = experiment
349 kwargs['experiment'] = experiment
350
350
351 kwargs['experiments'] = experiments.values(*exp_keys)
351 kwargs['experiments'] = experiments.values(*exp_keys)
352
352
353 kwargs['configuration_labels'] = conf_labels[1:]
353 kwargs['configuration_labels'] = conf_labels[1:]
354 kwargs['configuration_keys'] = conf_keys[1:]
354 kwargs['configuration_keys'] = conf_keys[1:]
355 kwargs['configurations'] = configurations #.values(*conf_keys)
355 kwargs['configurations'] = configurations #.values(*conf_keys)
356
356
357 kwargs['title'] = 'Experiment'
357 kwargs['title'] = 'Experiment'
358 kwargs['suptitle'] = 'Details'
358 kwargs['suptitle'] = 'Details'
359
359
360 kwargs['button'] = 'Add Configuration'
360 kwargs['button'] = 'Add Configuration'
361
361
362 return render(request, 'experiment.html', kwargs)
362 return render(request, 'experiment.html', kwargs)
363
363
364 def experiment_new(request, id_camp=0):
364 def experiment_new(request, id_camp=0):
365
365
366 if request.method == 'GET':
366 if request.method == 'GET':
367 form = ExperimentForm(initial={'campaign':id_camp})
367 form = ExperimentForm(initial={'campaign':id_camp})
368
368
369 if request.method == 'POST':
369 if request.method == 'POST':
370 form = ExperimentForm(request.POST, initial={'campaign':id_camp})
370 form = ExperimentForm(request.POST, initial={'campaign':id_camp})
371
371
372 if form.is_valid():
372 if form.is_valid():
373 experiment = form.save()
373 experiment = form.save()
374 return redirect('url_experiment', id_exp=experiment.id)
374 return redirect('url_experiment', id_exp=experiment.id)
375
375
376 kwargs = {}
376 kwargs = {}
377 kwargs['form'] = form
377 kwargs['form'] = form
378 kwargs['title'] = 'Experiment'
378 kwargs['title'] = 'Experiment'
379 kwargs['suptitle'] = 'New'
379 kwargs['suptitle'] = 'New'
380 kwargs['button'] = 'Create'
380 kwargs['button'] = 'Create'
381
381
382 return render(request, 'experiment_edit.html', kwargs)
382 return render(request, 'experiment_edit.html', kwargs)
383
383
384 def experiment_edit(request, id_exp):
384 def experiment_edit(request, id_exp):
385
385
386 experiment = get_object_or_404(Experiment, pk=id_exp)
386 experiment = get_object_or_404(Experiment, pk=id_exp)
387
387
388 if request.method == 'GET':
388 if request.method == 'GET':
389 form = ExperimentForm(instance=experiment)
389 form = ExperimentForm(instance=experiment)
390
390
391 if request.method=='POST':
391 if request.method=='POST':
392 form = ExperimentForm(request.POST, instance=experiment)
392 form = ExperimentForm(request.POST, instance=experiment)
393
393
394 if form.is_valid():
394 if form.is_valid():
395 experiment = form.save()
395 experiment = form.save()
396 return redirect('url_experiment', id_exp=experiment.id)
396 return redirect('url_experiment', id_exp=experiment.id)
397
397
398 kwargs = {}
398 kwargs = {}
399 kwargs['form'] = form
399 kwargs['form'] = form
400 kwargs['title'] = 'Experiment'
400 kwargs['title'] = 'Experiment'
401 kwargs['suptitle'] = 'Edit'
401 kwargs['suptitle'] = 'Edit'
402 kwargs['button'] = 'Update'
402 kwargs['button'] = 'Update'
403
403
404 return render(request, 'experiment_edit.html', kwargs)
404 return render(request, 'experiment_edit.html', kwargs)
405
405
406 def experiment_delete(request, id_exp):
406 def experiment_delete(request, id_exp):
407
407
408 experiment = get_object_or_404(Experiment, pk=id_exp)
408 experiment = get_object_or_404(Experiment, pk=id_exp)
409
409
410 if request.method=='POST':
410 if request.method=='POST':
411 if request.user.is_staff:
411 if request.user.is_staff:
412 id_camp = experiment.campaign.id
412 id_camp = experiment.campaign.id
413 experiment.delete()
413 experiment.delete()
414 return redirect('url_campaign', id_camp=id_camp)
414 return redirect('url_campaign', id_camp=id_camp)
415
415
416 return HttpResponse("Not enough permission to delete this object")
416 return HttpResponse("Not enough permission to delete this object")
417
417
418 kwargs = {'object':experiment, 'exp_active':'active',
418 kwargs = {'object':experiment, 'exp_active':'active',
419 'url_cancel':'url_experiment', 'id_item':id_exp}
419 'url_cancel':'url_experiment', 'id_item':id_exp}
420
420
421 return render(request, 'item_delete.html', kwargs)
421 return render(request, 'item_delete.html', kwargs)
422
422
423 def dev_confs(request):
423 def dev_confs(request):
424
424
425 configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment')
425 configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment')
426
426
427 # keys = ['id', 'device__device_type__name', 'device__name', 'experiment__campaign__name', 'experiment__name']
427 # keys = ['id', 'device__device_type__name', 'device__name', 'experiment__campaign__name', 'experiment__name']
428
428
429 keys = ['id', 'device', 'experiment', 'type', 'programmed_date']
429 keys = ['id', 'device', 'experiment', 'type', 'programmed_date']
430
430
431 kwargs = {}
431 kwargs = {}
432
432
433 kwargs['configuration_keys'] = keys[1:]
433 kwargs['configuration_keys'] = keys[1:]
434 kwargs['configurations'] = configurations#.values(*keys)
434 kwargs['configurations'] = configurations#.values(*keys)
435
435
436 kwargs['title'] = 'Configuration'
436 kwargs['title'] = 'Configuration'
437 kwargs['suptitle'] = 'List'
437 kwargs['suptitle'] = 'List'
438 kwargs['button'] = 'New Configuration'
438 kwargs['button'] = 'New Configuration'
439
439
440 return render(request, 'dev_confs.html', kwargs)
440 return render(request, 'dev_confs.html', kwargs)
441
441
442 def dev_conf(request, id_conf):
442 def dev_conf(request, id_conf):
443
443
444 conf = get_object_or_404(Configuration, pk=id_conf)
444 conf = get_object_or_404(Configuration, pk=id_conf)
445
445
446 DevConfModel = CONF_MODELS[conf.device.device_type.name]
446 DevConfModel = CONF_MODELS[conf.device.device_type.name]
447 dev_conf = DevConfModel.objects.get(pk=id_conf)
447 dev_conf = DevConfModel.objects.get(pk=id_conf)
448
448
449 kwargs = {}
449 kwargs = {}
450 kwargs['dev_conf'] = dev_conf
450 kwargs['dev_conf'] = dev_conf
451 kwargs['dev_conf_keys'] = ['name', 'experiment', 'device']
451 kwargs['dev_conf_keys'] = ['name', 'experiment', 'device']
452
452
453 kwargs['title'] = 'Configuration'
453 kwargs['title'] = 'Configuration'
454 kwargs['suptitle'] = 'Details'
454 kwargs['suptitle'] = 'Details'
455
455
456 kwargs['button'] = 'Edit Configuration'
456 kwargs['button'] = 'Edit Configuration'
457
457
458 ###### SIDEBAR ######
458 ###### SIDEBAR ######
459 kwargs.update(sidebar(conf))
459 kwargs.update(sidebar(conf))
460
460
461 return render(request, 'dev_conf.html', kwargs)
461 return render(request, 'dev_conf.html', kwargs)
462
462
463 def dev_conf_new(request, id_exp=0):
463 def dev_conf_new(request, id_exp=0):
464
464
465 if request.method == 'GET':
465 if request.method == 'GET':
466 form = ConfigurationForm(initial={'experiment':id_exp})
466 form = ConfigurationForm(initial={'experiment':id_exp})
467
467
468 if request.method == 'POST':
468 if request.method == 'POST':
469 experiment = Experiment.objects.get(pk=request.POST['experiment'])
469 experiment = Experiment.objects.get(pk=request.POST['experiment'])
470 device = Device.objects.get(pk=request.POST['device'])
470 device = Device.objects.get(pk=request.POST['device'])
471
471
472 DevConfForm = CONF_FORMS[device.device_type.name]
472 DevConfForm = CONF_FORMS[device.device_type.name]
473
473
474 form = DevConfForm(request.POST, initial={'experiment':experiment.id})
474 form = DevConfForm(request.POST, initial={'experiment':experiment.id})
475
475
476 if form.is_valid():
476 if form.is_valid():
477 dev_conf = form.save()
477 dev_conf = form.save()
478
478
479 return redirect('url_experiment', id_exp=experiment.id)
479 return redirect('url_experiment', id_exp=experiment.id)
480
480
481 kwargs = {}
481 kwargs = {}
482 kwargs['form'] = form
482 kwargs['form'] = form
483 kwargs['title'] = 'Configuration'
483 kwargs['title'] = 'Configuration'
484 kwargs['suptitle'] = 'New'
484 kwargs['suptitle'] = 'New'
485 kwargs['button'] = 'Create'
485 kwargs['button'] = 'Create'
486
486
487 return render(request, 'dev_conf_edit.html', kwargs)
487 return render(request, 'dev_conf_edit.html', kwargs)
488
488
489 def dev_conf_edit(request, id_conf):
489 def dev_conf_edit(request, id_conf):
490
490
491 conf = get_object_or_404(Configuration, pk=id_conf)
491 conf = get_object_or_404(Configuration, pk=id_conf)
492
492
493 DevConfModel = CONF_MODELS[conf.device.device_type.name]
493 DevConfModel = CONF_MODELS[conf.device.device_type.name]
494 DevConfForm = CONF_FORMS[conf.device.device_type.name]
494 DevConfForm = CONF_FORMS[conf.device.device_type.name]
495
495
496 dev_conf = DevConfModel.objects.get(pk=id_conf)
496 dev_conf = DevConfModel.objects.get(pk=id_conf)
497
497
498 if request.method=='GET':
498 if request.method=='GET':
499 form = DevConfForm(instance=dev_conf)
499 form = DevConfForm(instance=dev_conf)
500
500
501 if request.method=='POST':
501 if request.method=='POST':
502 form = DevConfForm(request.POST, instance=dev_conf)
502 form = DevConfForm(request.POST, instance=dev_conf)
503
503
504 if form.is_valid():
504 if form.is_valid():
505 form.save()
505 form.save()
506 return redirect('url_dev_conf', id_conf=id_conf)
506 return redirect('url_dev_conf', id_conf=id_conf)
507
507
508 kwargs = {}
508 kwargs = {}
509 kwargs['form'] = form
509 kwargs['form'] = form
510 kwargs['title'] = 'Device Configuration'
510 kwargs['title'] = 'Device Configuration'
511 kwargs['suptitle'] = 'Edit'
511 kwargs['suptitle'] = 'Edit'
512 kwargs['button'] = 'Update'
512 kwargs['button'] = 'Update'
513
513
514 ###### SIDEBAR ######
514 ###### SIDEBAR ######
515 kwargs.update(sidebar(conf))
515 kwargs.update(sidebar(conf))
516
516
517 return render(request, 'dev_conf_edit.html', kwargs)
517 return render(request, 'dev_conf_edit.html', kwargs)
518
518
519 def dev_conf_start(request, id_conf):
519 def dev_conf_start(request, id_conf):
520
520
521 conf = get_object_or_404(Configuration, pk=id_conf)
521 conf = get_object_or_404(Configuration, pk=id_conf)
522
522
523 DevConfModel = CONF_MODELS[conf.device.device_type.name]
523 DevConfModel = CONF_MODELS[conf.device.device_type.name]
524
524
525 conf = DevConfModel.objects.get(pk=id_conf)
525 conf = DevConfModel.objects.get(pk=id_conf)
526
526
527 if conf.start_device():
527 if conf.start_device():
528 messages.success(request, conf.message)
528 messages.success(request, conf.message)
529 else:
529 else:
530 messages.error(request, conf.message)
530 messages.error(request, conf.message)
531
531
532 return redirect(conf.get_absolute_url())
532 return redirect(conf.get_absolute_url())
533
533
534 def dev_conf_stop(request, id_conf):
534 def dev_conf_stop(request, id_conf):
535
535
536 conf = get_object_or_404(Configuration, pk=id_conf)
536 conf = get_object_or_404(Configuration, pk=id_conf)
537
537
538 DevConfModel = CONF_MODELS[conf.device.device_type.name]
538 DevConfModel = CONF_MODELS[conf.device.device_type.name]
539
539
540 conf = DevConfModel.objects.get(pk=id_conf)
540 conf = DevConfModel.objects.get(pk=id_conf)
541
541
542 if conf.stop_device():
542 if conf.stop_device():
543 messages.success(request, conf.message)
543 messages.success(request, conf.message)
544 else:
544 else:
545 messages.error(request, conf.message)
545 messages.error(request, conf.message)
546
546
547 return redirect(conf.get_absolute_url())
547 return redirect(conf.get_absolute_url())
548
548
549 def dev_conf_status(request, id_conf):
549 def dev_conf_status(request, id_conf):
550
550
551 conf = get_object_or_404(Configuration, pk=id_conf)
551 conf = get_object_or_404(Configuration, pk=id_conf)
552
552
553 DevConfModel = CONF_MODELS[conf.device.device_type.name]
553 DevConfModel = CONF_MODELS[conf.device.device_type.name]
554
554
555 conf = DevConfModel.objects.get(pk=id_conf)
555 conf = DevConfModel.objects.get(pk=id_conf)
556
556
557 if conf.status_device():
557 if conf.status_device():
558 messages.success(request, conf.message)
558 messages.success(request, conf.message)
559 else:
559 else:
560 messages.error(request, conf.message)
560 messages.error(request, conf.message)
561
561
562 return redirect(conf.get_absolute_url())
562 return redirect(conf.get_absolute_url())
563
563
564
564
565 def dev_conf_write(request, id_conf):
565 def dev_conf_write(request, id_conf):
566
566
567 conf = get_object_or_404(Configuration, pk=id_conf)
567 conf = get_object_or_404(Configuration, pk=id_conf)
568
568
569 DevConfModel = CONF_MODELS[conf.device.device_type.name]
569 DevConfModel = CONF_MODELS[conf.device.device_type.name]
570
570
571 conf = DevConfModel.objects.get(pk=id_conf)
571 conf = DevConfModel.objects.get(pk=id_conf)
572
572
573 answer = conf.write_device()
573 answer = conf.write_device()
574
574
575 if answer:
575 if answer:
576 messages.success(request, conf.message)
576 messages.success(request, conf.message)
577
577
578 conf.pk = None
578 conf.pk = None
579 conf.id = None
579 conf.id = None
580 conf.type = 1
580 conf.type = 1
581 conf.template = 0
581 conf.template = 0
582 conf.save()
582 conf.save()
583
583
584 else:
584 else:
585 messages.error(request, conf.message)
585 messages.error(request, conf.message)
586
586
587 return redirect(conf.get_absolute_url())
587 return redirect(conf.get_absolute_url())
588
588
589 def dev_conf_read(request, id_conf):
589 def dev_conf_read(request, id_conf):
590
590
591 conf = get_object_or_404(Configuration, pk=id_conf)
591 conf = get_object_or_404(Configuration, pk=id_conf)
592
592
593 DevConfModel = CONF_MODELS[conf.device.device_type.name]
593 DevConfModel = CONF_MODELS[conf.device.device_type.name]
594 DevConfForm = CONF_FORMS[conf.device.device_type.name]
594 DevConfForm = CONF_FORMS[conf.device.device_type.name]
595
595
596 conf = DevConfModel.objects.get(pk=id_conf)
596 conf = DevConfModel.objects.get(pk=id_conf)
597
597
598 if request.method=='GET':
598 if request.method=='GET':
599
599
600 parms = conf.read_device()
600 parms = conf.read_device()
601
601
602 if not parms:
602 if not parms:
603 messages.error(request, conf.message)
603 messages.error(request, conf.message)
604 return redirect(conf.get_absolute_url())
604 return redirect(conf.get_absolute_url())
605
605
606 form = DevConfForm(initial=parms, instance=conf)
606 form = DevConfForm(initial=parms, instance=conf)
607
607
608 if request.method=='POST':
608 if request.method=='POST':
609 form = DevConfForm(request.POST, instance=conf)
609 form = DevConfForm(request.POST, instance=conf)
610
610
611 if form.is_valid():
611 if form.is_valid():
612 dev_model = form.save(commit=False)
612 dev_model = form.save(commit=False)
613
613
614 if dev_model.save():
614 if dev_model.save():
615 return redirect(conf.get_absolute_url())
615 return redirect(conf.get_absolute_url())
616
616
617 messages.error(request, "Parameters could not be saved")
617 messages.error(request, "Parameters could not be saved")
618
618
619 kwargs = {}
619 kwargs = {}
620 kwargs['id_dev'] = conf.id
620 kwargs['id_dev'] = conf.id
621 kwargs['form'] = form
621 kwargs['form'] = form
622 kwargs['title'] = 'Device Configuration'
622 kwargs['title'] = 'Device Configuration'
623 kwargs['suptitle'] = 'Parameters read from device'
623 kwargs['suptitle'] = 'Parameters read from device'
624 kwargs['button'] = 'Save'
624 kwargs['button'] = 'Save'
625
625
626 ###### SIDEBAR ######
626 ###### SIDEBAR ######
627 kwargs.update(sidebar(conf))
627 kwargs.update(sidebar(conf))
628
628
629 return render(conf.get_absolute_url_edit())
629 return render(conf.get_absolute_url_edit())
630
630
631 def dev_conf_import(request, id_conf):
631 def dev_conf_import(request, id_conf):
632
632
633 conf = get_object_or_404(Configuration, pk=id_conf)
633 conf = get_object_or_404(Configuration, pk=id_conf)
634
634
635 DevConfModel = CONF_MODELS[conf.device.device_type.name]
635 DevConfModel = CONF_MODELS[conf.device.device_type.name]
636 DevConfForm = CONF_FORMS[conf.device.device_type.name]
636 DevConfForm = CONF_FORMS[conf.device.device_type.name]
637
637
638 conf = DevConfModel.objects.get(pk=id_conf)
638 conf = DevConfModel.objects.get(pk=id_conf)
639
639
640 if request.method == 'GET':
640 if request.method == 'GET':
641 file_form = UploadFileForm()
641 file_form = UploadFileForm()
642
642
643 if request.method == 'POST':
643 if request.method == 'POST':
644 file_form = UploadFileForm(request.POST, request.FILES)
644 file_form = UploadFileForm(request.POST, request.FILES)
645
645
646 if file_form.is_valid():
646 if file_form.is_valid():
647
647
648 parms = conf.import_from_file(request.FILES['file'])
648 parms = conf.import_from_file(request.FILES['file'])
649
649
650 if parms:
650 if parms:
651
651
652 messages.success(request, "Parameters imported from: '%s'." %request.FILES['file'].name)
652 messages.success(request, "Parameters imported from: '%s'." %request.FILES['file'].name)
653
653
654 form = DevConfForm(initial=parms, instance=conf)
654 form = DevConfForm(initial=parms, instance=conf)
655
655
656 kwargs = {}
656 kwargs = {}
657 kwargs['id_dev'] = conf.id
657 kwargs['id_dev'] = conf.id
658 kwargs['form'] = form
658 kwargs['form'] = form
659 kwargs['title'] = 'Device Configuration'
659 kwargs['title'] = 'Device Configuration'
660 kwargs['suptitle'] = 'Parameters imported'
660 kwargs['suptitle'] = 'Parameters imported'
661 kwargs['button'] = 'Save'
661 kwargs['button'] = 'Save'
662 kwargs['action'] = conf.get_absolute_url_edit()
662 kwargs['action'] = conf.get_absolute_url_edit()
663 kwargs['previous'] = conf.get_absolute_url()
663 kwargs['previous'] = conf.get_absolute_url()
664
664
665 ###### SIDEBAR ######
665 ###### SIDEBAR ######
666 kwargs.update(sidebar(conf))
666 kwargs.update(sidebar(conf))
667
667
668 return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs)
668 return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs)
669
669
670 messages.error(request, "Could not import parameters from file")
670 messages.error(request, "Could not import parameters from file")
671
671
672 kwargs = {}
672 kwargs = {}
673 kwargs['id_dev'] = conf.id
673 kwargs['id_dev'] = conf.id
674 kwargs['title'] = 'Device Configuration'
674 kwargs['title'] = 'Device Configuration'
675 kwargs['form'] = file_form
675 kwargs['form'] = file_form
676 kwargs['suptitle'] = 'Importing file'
676 kwargs['suptitle'] = 'Importing file'
677 kwargs['button'] = 'Import'
677 kwargs['button'] = 'Import'
678
678
679 kwargs.update(sidebar(conf))
679 kwargs.update(sidebar(conf))
680
680
681 return render(request, 'dev_conf_import.html', kwargs)
681 return render(request, 'dev_conf_import.html', kwargs)
682
682
683 def dev_conf_export(request, id_conf):
683 def dev_conf_export(request, id_conf):
684
684
685 conf = get_object_or_404(Configuration, pk=id_conf)
685 conf = get_object_or_404(Configuration, pk=id_conf)
686
686
687 DevConfModel = CONF_MODELS[conf.device.device_type.name]
687 DevConfModel = CONF_MODELS[conf.device.device_type.name]
688
688
689 conf = DevConfModel.objects.get(pk=id_conf)
689 conf = DevConfModel.objects.get(pk=id_conf)
690
690
691 if request.method == 'GET':
691 if request.method == 'GET':
692 file_form = DownloadFileForm()
692 file_form = DownloadFileForm()
693
693
694 if request.method == 'POST':
694 if request.method == 'POST':
695 file_form = DownloadFileForm(request.POST)
695 file_form = DownloadFileForm(request.POST)
696
696
697 if file_form.is_valid():
697 if file_form.is_valid():
698 fields = conf.export_to_file(format = file_form.format)
698 fields = conf.export_to_file(format = file_form.format)
699
699
700 response = HttpResponse(content_type=fields['content_type'])
700 response = HttpResponse(content_type=fields['content_type'])
701 response['Content-Disposition'] = 'attachment; filename="%s"' %fields['filename']
701 response['Content-Disposition'] = 'attachment; filename="%s"' %fields['filename']
702 response.write(fields['content'])
702 response.write(fields['content'])
703
703
704 return response
704 return response
705
705
706 messages.error(request, "Could not export parameters")
706 messages.error(request, "Could not export parameters")
707
707
708 kwargs = {}
708 kwargs = {}
709 kwargs['id_dev'] = conf.id
709 kwargs['id_dev'] = conf.id
710 kwargs['title'] = 'Device Configuration'
710 kwargs['title'] = 'Device Configuration'
711 kwargs['form'] = file_form
711 kwargs['form'] = file_form
712 kwargs['suptitle'] = 'Exporting file'
712 kwargs['suptitle'] = 'Exporting file'
713 kwargs['button'] = 'Export'
713 kwargs['button'] = 'Export'
714
714
715 return render(request, 'dev_conf_export.html', kwargs)
715 return render(request, 'dev_conf_export.html', kwargs)
716
716
717 def dev_conf_delete(request, id_conf):
717 def dev_conf_delete(request, id_conf):
718
718
719 conf = get_object_or_404(Configuration, pk=id_conf)
719 conf = get_object_or_404(Configuration, pk=id_conf)
720
720
721 if request.method=='POST':
721 if request.method=='POST':
722 if request.user.is_staff:
722 if request.user.is_staff:
723 id_exp = conf.experiment.id
723 id_exp = conf.experiment.id
724 conf.delete()
724 conf.delete()
725 return redirect('url_experiment', id_exp=id_exp)
725 return redirect('url_experiment', id_exp=id_exp)
726
726
727 return HttpResponse("Not enough permission to delete this object")
727 return HttpResponse("Not enough permission to delete this object")
728
728
729 kwargs = {'object':conf, 'conf_active':'active',
729 kwargs = {'object':conf, 'conf_active':'active',
730 'url_cancel':'url_dev_conf', 'id_item':id_conf}
730 'url_cancel':'url_dev_conf', 'id_item':id_conf}
731
731
732 ###### SIDEBAR ######
732 ###### SIDEBAR ######
733 kwargs.update(sidebar(conf))
733 kwargs.update(sidebar(conf))
734
734
735 return render(request, 'item_delete.html', kwargs)
735 return render(request, 'item_delete.html', kwargs)
736
736
737 def sidebar(conf):
737 def sidebar(conf):
738
738
739 experiments = Experiment.objects.filter(campaign=conf.experiment.campaign)
739 experiments = Experiment.objects.filter(campaign=conf.experiment.campaign)
740 configurations = Configuration.objects.filter(experiment=conf.experiment, type=0)
740 configurations = Configuration.objects.filter(experiment=conf.experiment, type=0)
741
741
742 exp_keys = ['id', 'campaign', 'name', 'start_time', 'end_time']
742 exp_keys = ['id', 'campaign', 'name', 'start_time', 'end_time']
743 conf_keys = ['id', 'device']
743 conf_keys = ['id', 'device']
744
744
745 kwargs = {}
745 kwargs = {}
746
746
747 kwargs['dev_conf'] = conf
747 kwargs['dev_conf'] = conf
748
748
749 kwargs['experiment_keys'] = exp_keys[1:]
749 kwargs['experiment_keys'] = exp_keys[1:]
750 kwargs['experiments'] = experiments.values(*exp_keys)
750 kwargs['experiments'] = experiments.values(*exp_keys)
751
751
752 kwargs['configuration_keys'] = conf_keys[1:]
752 kwargs['configuration_keys'] = conf_keys[1:]
753 kwargs['configurations'] = configurations #.values(*conf_keys)
753 kwargs['configurations'] = configurations #.values(*conf_keys)
754
754
755 return kwargs
755 return kwargs
756
756
757
757
758 def operation(request, id_camp=None):
758 def operation(request, id_camp=None):
759
759
760 if not id_camp:
760 if not id_camp:
761 campaigns = Campaign.objects.all().order_by('-start_date')
761 campaigns = Campaign.objects.all().order_by('-start_date')
762
762
763 if not campaigns:
763 if not campaigns:
764 return render(request, 'operation.html', {})
764 return render(request, 'operation.html', {})
765
765
766 id_camp = campaigns[0].id
766 id_camp = campaigns[0].id
767
767
768 campaign = get_object_or_404(Campaign, pk = id_camp)
768 campaign = get_object_or_404(Campaign, pk = id_camp)
769
769
770 if request.method=='GET':
770 if request.method=='GET':
771 form = OperationForm(initial={'campaign': id_camp})
771 form = OperationForm(initial={'campaign': id_camp})
772
772
773 if request.method=='POST':
773 if request.method=='POST':
774 form = OperationForm(request.POST, initial={'campaign':campaign.id})
774 form = OperationForm(request.POST, initial={'campaign':campaign.id})
775
775
776 if form.is_valid():
776 if form.is_valid():
777 return redirect('url_operation', id_camp=campaign.id)
777 return redirect('url_operation', id_camp=campaign.id)
778
778
779 locations = Location.objects.filter(experiment__campaign = campaign)
779 locations = Location.objects.filter(experiment__campaign__pk = campaign.id)
780 experiments = Experiment.objects.filter(campaign=campaign)
780 experiments = Experiment.objects.filter(campaign=campaign)
781 experiments = [Experiment.objects.filter(location__pk=location.id) for location in locations]
781
782
782 kwargs = {}
783 kwargs = {}
783 #---Campaign
784 #---Campaign
784 kwargs['campaign'] = campaign
785 kwargs['campaign'] = campaign
785 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
786 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
786 #---Experimet
787 #---Experimet
787 keys = ['id', 'name', 'start_time', 'end_time']
788 keys = ['id', 'name', 'start_time', 'end_time']
788 kwargs['experiment_keys'] = keys[1:]
789 kwargs['experiment_keys'] = keys[1:]
789 kwargs['experiments'] = experiments
790 kwargs['experiments'] = experiments
790 #---Radar
791 #---Radar
791 kwargs['locations'] = locations
792 kwargs['locations'] = locations
792 #---Else
793 #---Else
793 kwargs['title'] = 'Campaign'
794 kwargs['title'] = 'Campaign'
794 kwargs['suptitle'] = campaign.name
795 kwargs['suptitle'] = campaign.name
795 kwargs['form'] = form
796 kwargs['form'] = form
796 kwargs['button'] = 'Apply'
797 kwargs['button'] = 'Apply'
797
798
798 return render(request, 'operation.html', kwargs) No newline at end of file
799 return render(request, 'operation.html', kwargs)
General Comments 0
You need to be logged in to leave comments. Login now