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