##// END OF EJS Templates
git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@158 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71
Fiorella Quino -
r137:8498209e8376
parent child
Show More
@@ -1,1380 +1,1383
1 1 from django.shortcuts import render, redirect, get_object_or_404, HttpResponse
2 2 from django.utils.safestring import mark_safe
3 3 from django.http import HttpResponseRedirect
4 4 from django.core.urlresolvers import reverse
5 5 from django.contrib import messages
6 6 from datetime import datetime
7 7
8 8 from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm, LocationForm, UploadFileForm, DownloadFileForm, OperationForm, NewForm
9 9 from .forms import OperationSearchForm
10 10 from apps.cgs.forms import CGSConfigurationForm
11 11 from apps.jars.forms import JARSConfigurationForm
12 12 from apps.usrp.forms import USRPConfigurationForm
13 13 from apps.abs.forms import ABSConfigurationForm
14 14 from apps.rc.forms import RCConfigurationForm, RCMixConfigurationForm
15 15 from apps.dds.forms import DDSConfigurationForm
16 16
17 17 from .models import Campaign, Experiment, Device, Configuration, Location, RunningExperiment
18 18 from apps.cgs.models import CGSConfiguration
19 19 from apps.jars.models import JARSConfiguration
20 20 from apps.usrp.models import USRPConfiguration
21 21 from apps.abs.models import ABSConfiguration
22 22 from apps.rc.models import RCConfiguration, RCLine, RCLineType
23 23 from apps.dds.models import DDSConfiguration
24 24
25 25 # Create your views here.
26 26
27 27 CONF_FORMS = {
28 28 'rc': RCConfigurationForm,
29 29 'dds': DDSConfigurationForm,
30 30 'jars': JARSConfigurationForm,
31 31 'cgs': CGSConfigurationForm,
32 32 'abs': ABSConfigurationForm,
33 33 'usrp': USRPConfigurationForm,
34 34 }
35 35
36 36 CONF_MODELS = {
37 37 'rc': RCConfiguration,
38 38 'dds': DDSConfiguration,
39 39 'jars': JARSConfiguration,
40 40 'cgs': CGSConfiguration,
41 41 'abs': ABSConfiguration,
42 42 'usrp': USRPConfiguration,
43 43 }
44 44
45 45 MIX_MODES = {
46 46 '0': 'P',
47 47 '1': 'S',
48 48 }
49 49
50 50 MIX_OPERATIONS = {
51 51 '0': 'OR',
52 52 '1': 'XOR',
53 53 '2': 'AND',
54 54 '3': 'NAND',
55 55 }
56 56
57 57
58 58 def index(request):
59 59 kwargs = {}
60 60
61 61 return render(request, 'index.html', kwargs)
62 62
63 63
64 64 def locations(request):
65 65
66 66 locations = Location.objects.all().order_by('name')
67 67
68 68 keys = ['id', 'name', 'description']
69 69
70 70 kwargs = {}
71 71 kwargs['location_keys'] = keys[1:]
72 72 kwargs['locations'] = locations
73 73 kwargs['title'] = 'Location'
74 74 kwargs['suptitle'] = 'List'
75 75 kwargs['button'] = 'New Location'
76 76
77 77 return render(request, 'locations.html', kwargs)
78 78
79 79
80 80 def location(request, id_loc):
81 81
82 82 location = get_object_or_404(Location, pk=id_loc)
83 83
84 84 kwargs = {}
85 85 kwargs['location'] = location
86 86 kwargs['location_keys'] = ['name', 'description']
87 87
88 88 kwargs['title'] = 'Location'
89 89 kwargs['suptitle'] = 'Details'
90 90
91 91 return render(request, 'location.html', kwargs)
92 92
93 93
94 94 def location_new(request):
95 95
96 96 if request.method == 'GET':
97 97 form = LocationForm()
98 98
99 99 if request.method == 'POST':
100 100 form = LocationForm(request.POST)
101 101
102 102 if form.is_valid():
103 103 form.save()
104 104 return redirect('url_locations')
105 105
106 106 kwargs = {}
107 107 kwargs['form'] = form
108 108 kwargs['title'] = 'Location'
109 109 kwargs['suptitle'] = 'New'
110 110 kwargs['button'] = 'Create'
111 111
112 112 return render(request, 'location_edit.html', kwargs)
113 113
114 114
115 115 def location_edit(request, id_loc):
116 116
117 117 location = get_object_or_404(Location, pk=id_loc)
118 118
119 119 if request.method=='GET':
120 120 form = LocationForm(instance=location)
121 121
122 122 if request.method=='POST':
123 123 form = LocationForm(request.POST, instance=location)
124 124
125 125 if form.is_valid():
126 126 form.save()
127 127 return redirect('url_locations')
128 128
129 129 kwargs = {}
130 130 kwargs['form'] = form
131 131 kwargs['title'] = 'Location'
132 132 kwargs['suptitle'] = 'Edit'
133 133 kwargs['button'] = 'Update'
134 134
135 135 return render(request, 'location_edit.html', kwargs)
136 136
137 137
138 138 def location_delete(request, id_loc):
139 139
140 140 location = get_object_or_404(Location, pk=id_loc)
141 141
142 142 if request.method=='POST':
143 143
144 144 if request.user.is_staff:
145 145 location.delete()
146 146 return redirect('url_locations')
147 147
148 148 messages.error(request, 'Not enough permission to delete this object')
149 149 return redirect(location.get_absolute_url())
150 150
151 151 kwargs = {
152 152 'title': 'Delete',
153 153 'suptitle': 'Location',
154 154 'object': location,
155 155 'previous': location.get_absolute_url(),
156 156 'delete': True
157 157 }
158 158
159 159 return render(request, 'confirm.html', kwargs)
160 160
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
179 179 def device(request, id_dev):
180 180
181 181 device = get_object_or_404(Device, pk=id_dev)
182 182
183 183 kwargs = {}
184 184 kwargs['device'] = device
185 185 kwargs['device_keys'] = ['device_type', 'name', 'ip_address', 'port_address', 'description']
186 186
187 187 kwargs['title'] = 'Device'
188 188 kwargs['suptitle'] = 'Details'
189 189
190 190 return render(request, 'device.html', kwargs)
191 191
192 192
193 193 def device_new(request):
194 194
195 195 if request.method == 'GET':
196 196 form = DeviceForm()
197 197
198 198 if request.method == 'POST':
199 199 form = DeviceForm(request.POST)
200 200
201 201 if form.is_valid():
202 202 form.save()
203 203 return redirect('url_devices')
204 204
205 205 kwargs = {}
206 206 kwargs['form'] = form
207 207 kwargs['title'] = 'Device'
208 208 kwargs['suptitle'] = 'New'
209 209 kwargs['button'] = 'Create'
210 210
211 211 return render(request, 'device_edit.html', kwargs)
212 212
213 213
214 214 def device_edit(request, id_dev):
215 215
216 216 device = get_object_or_404(Device, pk=id_dev)
217 217
218 218 if request.method=='GET':
219 219 form = DeviceForm(instance=device)
220 220
221 221 if request.method=='POST':
222 222 form = DeviceForm(request.POST, instance=device)
223 223
224 224 if form.is_valid():
225 225 form.save()
226 226 return redirect(device.get_absolute_url())
227 227
228 228 kwargs = {}
229 229 kwargs['form'] = form
230 230 kwargs['title'] = 'Device'
231 231 kwargs['suptitle'] = 'Edit'
232 232 kwargs['button'] = 'Update'
233 233
234 234 return render(request, 'device_edit.html', kwargs)
235 235
236 236
237 237 def device_delete(request, id_dev):
238 238
239 239 device = get_object_or_404(Device, pk=id_dev)
240 240
241 241 if request.method=='POST':
242 242
243 243 if request.user.is_staff:
244 244 device.delete()
245 245 return redirect('url_devices')
246 246
247 247 messages.error(request, 'Not enough permission to delete this object')
248 248 return redirect(device.get_absolute_url())
249 249
250 250 kwargs = {
251 251 'title': 'Delete',
252 252 'suptitle': 'Device',
253 253 'object': device,
254 254 'previous': device.get_absolute_url(),
255 255 'delete': True
256 256 }
257 257
258 258 return render(request, 'confirm.html', kwargs)
259 259
260 260
261 261 def campaigns(request):
262 262
263 263 campaigns = Campaign.objects.all().order_by('start_date')
264 264
265 265 keys = ['id', 'name', 'start_date', 'end_date']
266 266
267 267 kwargs = {}
268 268 kwargs['campaign_keys'] = keys[1:]
269 269 kwargs['campaigns'] = campaigns#.values(*keys)
270 270 kwargs['title'] = 'Campaign'
271 271 kwargs['suptitle'] = 'List'
272 272 kwargs['button'] = 'New Campaign'
273 273
274 274 return render(request, 'campaigns.html', kwargs)
275 275
276 276
277 277 def campaign(request, id_camp):
278 278
279 279 campaign = get_object_or_404(Campaign, pk=id_camp)
280 280 experiments = Experiment.objects.filter(campaign=campaign)
281 281
282 282 form = CampaignForm(instance=campaign)
283 283
284 284 kwargs = {}
285 285 kwargs['campaign'] = campaign
286 286 kwargs['campaign_keys'] = ['template', 'name', 'start_date', 'end_date', 'tags', 'description']
287 287
288 288 kwargs['experiments'] = experiments
289 289 kwargs['experiment_keys'] = ['name', 'radar', 'start_time', 'end_time']
290 290
291 291 kwargs['title'] = 'Campaign'
292 292 kwargs['suptitle'] = 'Details'
293 293
294 294 kwargs['form'] = form
295 295 kwargs['button'] = 'Add Experiment'
296 296
297 297 return render(request, 'campaign.html', kwargs)
298 298
299 299
300 300 def campaign_new(request):
301 301
302 302 kwargs = {}
303 303
304 304 if request.method == 'GET':
305 305
306 306 if 'template' in request.GET:
307 307 if request.GET['template']=='0':
308 308 form = NewForm(initial={'create_from':2},
309 309 template_choices=Campaign.objects.filter(template=True).values_list('id', 'name'))
310 310 else:
311 311 kwargs['button'] = 'Create'
312 312 kwargs['experiments'] = Configuration.objects.filter(experiment=request.GET['template'])
313 313 kwargs['experiment_keys'] = ['name', 'start_time', 'end_time']
314 314 camp = Campaign.objects.get(pk=request.GET['template'])
315 315 form = CampaignForm(instance=camp,
316 316 initial={'name':'{} [{:%Y/%m/%d}]'.format(camp.name, datetime.now()),
317 317 'template':False})
318 318 elif 'blank' in request.GET:
319 319 kwargs['button'] = 'Create'
320 320 form = CampaignForm()
321 321 else:
322 322 form = NewForm()
323 323
324 324 if request.method == 'POST':
325 325 kwargs['button'] = 'Create'
326 326 post = request.POST.copy()
327 327 experiments = []
328 328
329 329 for id_exp in post.getlist('experiments'):
330 330 exp = Experiment.objects.get(pk=id_exp)
331 331 new_exp = exp.clone(template=False)
332 332 experiments.append(new_exp)
333 333
334 334 post.setlist('experiments', [])
335 335
336 336 form = CampaignForm(post)
337 337
338 338 if form.is_valid():
339 339 campaign = form.save()
340 340 for exp in experiments:
341 341 campaign.experiments.add(exp)
342 342 campaign.save()
343 343 return redirect('url_campaign', id_camp=campaign.id)
344 344
345 345 kwargs['form'] = form
346 346 kwargs['title'] = 'Campaign'
347 347 kwargs['suptitle'] = 'New'
348 348
349 349 return render(request, 'campaign_edit.html', kwargs)
350 350
351 351
352 352 def campaign_edit(request, id_camp):
353 353
354 354 campaign = get_object_or_404(Campaign, pk=id_camp)
355 355
356 356 if request.method=='GET':
357 357 form = CampaignForm(instance=campaign)
358 358
359 359 if request.method=='POST':
360 360 exps = campaign.experiments.all().values_list('pk', flat=True)
361 361 post = request.POST.copy()
362 362 new_exps = post.getlist('experiments')
363 363 post.setlist('experiments', [])
364 364 form = CampaignForm(post, instance=campaign)
365 365
366 366 if form.is_valid():
367 367 camp = form.save()
368 368 for id_exp in new_exps:
369 369 if int(id_exp) in exps:
370 370 exps.pop(id_exp)
371 371 else:
372 372 exp = Experiment.objects.get(pk=id_exp)
373 373 if exp.template:
374 374 camp.experiments.add(exp.clone(template=False))
375 375 else:
376 376 camp.experiments.add(exp)
377 377
378 378 for id_exp in exps:
379 379 camp.experiments.remove(Experiment.objects.get(pk=id_exp))
380 380
381 381 return redirect('url_campaign', id_camp=id_camp)
382 382
383 383 kwargs = {}
384 384 kwargs['form'] = form
385 385 kwargs['title'] = 'Campaign'
386 386 kwargs['suptitle'] = 'Edit'
387 387 kwargs['button'] = 'Update'
388 388
389 389 return render(request, 'campaign_edit.html', kwargs)
390 390
391 391
392 392 def campaign_delete(request, id_camp):
393 393
394 394 campaign = get_object_or_404(Campaign, pk=id_camp)
395 395
396 396 if request.method=='POST':
397 397 if request.user.is_staff:
398 398
399 399 for exp in campaign.experiments.all():
400 400 for conf in Configuration.objects.filter(experiment=exp):
401 401 conf.delete()
402 402 exp.delete()
403 403 campaign.delete()
404 404
405 405 return redirect('url_campaigns')
406 406
407 407 messages.error(request, 'Not enough permission to delete this object')
408 408 return redirect(campaign.get_absolute_url())
409 409
410 410 kwargs = {
411 411 'title': 'Delete',
412 412 'suptitle': 'Campaign',
413 413 'object': campaign,
414 414 'previous': campaign.get_absolute_url(),
415 415 'delete': True
416 416 }
417 417
418 418 return render(request, 'confirm.html', kwargs)
419 419
420 420 def campaign_export(request, id_camp):
421 421
422 422 campaign = get_object_or_404(Campaign, pk=id_camp)
423 423 content = campaign.parms_to_dict()
424 424 content_type = 'application/json'
425 425 filename = '%s_%s.json' %(campaign.name, campaign.id)
426 426
427 427 response = HttpResponse(content_type=content_type)
428 428 response['Content-Disposition'] = 'attachment; filename="%s"' %filename
429 429 response.write(content)
430 430
431 431 return response
432 432
433 433
434 434 def campaign_import(request, id_camp):
435 435
436 436 campaign = get_object_or_404(Campaign, pk=id_camp)
437 437
438 438 if request.method == 'GET':
439 439 file_form = UploadFileForm()
440 440
441 441 if request.method == 'POST':
442 442 file_form = UploadFileForm(request.POST, request.FILES)
443 443
444 444 if file_form.is_valid():
445 445
446 446 parms = campaign.import_from_file(request.FILES['file'])
447 447
448 448 if parms:
449 449 parms['name'] = parms['campaign']
450 450
451 451 new_camp = campaign.dict_to_parms(parms, CONF_MODELS)
452 452
453 453 messages.success(request, "Parameters imported from: '%s'." %request.FILES['file'].name)
454 454
455 455 return redirect(new_camp.get_absolute_url_edit())
456 456
457 457 messages.error(request, "Could not import parameters from file")
458 458
459 459 kwargs = {}
460 460 kwargs['title'] = 'Campaign'
461 461 kwargs['form'] = file_form
462 462 kwargs['suptitle'] = 'Importing file'
463 463 kwargs['button'] = 'Import'
464 464
465 465 return render(request, 'campaign_import.html', kwargs)
466 466
467 467
468 468 def experiments(request):
469 469
470 470 experiment_list = Experiment.objects.all()
471 471
472 472 keys = ['id', 'name', 'start_time', 'end_time']
473 473
474 474 kwargs = {}
475 475
476 476 kwargs['experiment_keys'] = keys[1:]
477 477 kwargs['experiments'] = experiment_list
478 478
479 479 kwargs['title'] = 'Experiment'
480 480 kwargs['suptitle'] = 'List'
481 481 kwargs['button'] = 'New Experiment'
482 482
483 483 return render(request, 'experiments.html', kwargs)
484 484
485 485
486 486 def experiment(request, id_exp):
487 487
488 488 experiment = get_object_or_404(Experiment, pk=id_exp)
489 489
490 490 configurations = Configuration.objects.filter(experiment=experiment, type=0)
491 491
492 492 kwargs = {}
493 493
494 494 kwargs['experiment_keys'] = ['template', 'radar', 'name', 'start_time', 'end_time']
495 495 kwargs['experiment'] = experiment
496 496
497 497 kwargs['configuration_keys'] = ['name', 'device__ip_address', 'device__port_address', 'device__status']
498 498 kwargs['configurations'] = configurations
499 499
500 500 kwargs['title'] = 'Experiment'
501 501 kwargs['suptitle'] = 'Details'
502 502
503 503 kwargs['button'] = 'Add Configuration'
504 504
505 505 ###### SIDEBAR ######
506 506 kwargs.update(sidebar(experiment=experiment))
507 507
508 508 return render(request, 'experiment.html', kwargs)
509 509
510 510
511 511 def experiment_new(request, id_camp=None):
512 512
513 513 kwargs = {}
514 514
515 515 if request.method == 'GET':
516 516 if 'template' in request.GET:
517 517 if request.GET['template']=='0':
518 518 form = NewForm(initial={'create_from':2},
519 519 template_choices=Experiment.objects.filter(template=True).values_list('id', 'name'))
520 520 else:
521 521 kwargs['button'] = 'Create'
522 522 kwargs['configurations'] = Configuration.objects.filter(experiment=request.GET['template'])
523 523 kwargs['configuration_keys'] = ['name', 'device__name', 'device__ip_address', 'device__port_address']
524 524 exp=Experiment.objects.get(pk=request.GET['template'])
525 525 form = ExperimentForm(instance=exp,
526 526 initial={'name': '{} [{:%Y/%m/%d}]'.format(exp.name, datetime.now()),
527 527 'template': False})
528 528 elif 'blank' in request.GET:
529 529 kwargs['button'] = 'Create'
530 530 form = ExperimentForm()
531 531 else:
532 532 form = NewForm()
533 533
534 534 if request.method == 'POST':
535 535 form = ExperimentForm(request.POST)
536 536 if form.is_valid():
537 537 experiment = form.save()
538 538
539 539 if 'template' in request.GET:
540 540 configurations = Configuration.objects.filter(experiment=request.GET['template'], type=0)
541 541 for conf in configurations:
542 542 conf.clone(experiment=experiment, template=False)
543 543
544 544 return redirect('url_experiment', id_exp=experiment.id)
545 545
546 546 kwargs['form'] = form
547 547 kwargs['title'] = 'Experiment'
548 548 kwargs['suptitle'] = 'New'
549 549
550 550 return render(request, 'experiment_edit.html', kwargs)
551 551
552 552
553 553 def experiment_edit(request, id_exp):
554 554
555 555 experiment = get_object_or_404(Experiment, pk=id_exp)
556 556
557 557 if request.method == 'GET':
558 558 form = ExperimentForm(instance=experiment)
559 559
560 560 if request.method=='POST':
561 561 form = ExperimentForm(request.POST, instance=experiment)
562 562
563 563 if form.is_valid():
564 564 experiment = form.save()
565 565 return redirect('url_experiment', id_exp=experiment.id)
566 566
567 567 kwargs = {}
568 568 kwargs['form'] = form
569 569 kwargs['title'] = 'Experiment'
570 570 kwargs['suptitle'] = 'Edit'
571 571 kwargs['button'] = 'Update'
572 572
573 573 return render(request, 'experiment_edit.html', kwargs)
574 574
575 575
576 576 def experiment_delete(request, id_exp):
577 577
578 578 experiment = get_object_or_404(Experiment, pk=id_exp)
579 579
580 580 if request.method=='POST':
581 581 if request.user.is_staff:
582 582 for conf in Configuration.objects.filter(experiment=experiment):
583 583 conf.delete()
584 584 experiment.delete()
585 585 return redirect('url_experiments')
586 586
587 587 messages.error(request, 'Not enough permission to delete this object')
588 588 return redirect(experiment.get_absolute_url())
589 589
590 590 kwargs = {
591 591 'title': 'Delete',
592 592 'suptitle': 'Experiment',
593 593 'object': experiment,
594 594 'previous': experiment.get_absolute_url(),
595 595 'delete': True
596 596 }
597 597
598 598 return render(request, 'confirm.html', kwargs)
599 599
600 600
601 601 def experiment_export(request, id_exp):
602 602
603 603 experiment = get_object_or_404(Experiment, pk=id_exp)
604 604 content = experiment.parms_to_dict()
605 605 content_type = 'application/json'
606 606 filename = '%s_%s.json' %(experiment.name, experiment.id)
607 607
608 608 response = HttpResponse(content_type=content_type)
609 609 response['Content-Disposition'] = 'attachment; filename="%s"' %filename
610 610 response.write(content)
611 611
612 612 return response
613 613
614 614 def experiment_import(request, id_exp):
615 615
616 616 experiment = get_object_or_404(Experiment, pk=id_exp)
617 617 configurations = Configuration.objects.filter(experiment=experiment)
618 618
619 619 if request.method == 'GET':
620 620 file_form = UploadFileForm()
621 621
622 622 if request.method == 'POST':
623 623 file_form = UploadFileForm(request.POST, request.FILES)
624 624
625 625 if file_form.is_valid():
626 626
627 627 parms = experiment.import_from_file(request.FILES['file'])
628 628
629 629 if parms:
630 630
631 631 new_exp = experiment.dict_to_parms(parms, CONF_MODELS)
632 632
633 633 messages.success(request, "Parameters imported from: '%s'." %request.FILES['file'].name)
634 634
635 635 return redirect(new_exp.get_absolute_url_edit())
636 636
637 637 messages.error(request, "Could not import parameters from file")
638 638
639 639 kwargs = {}
640 640 kwargs['title'] = 'Experiment'
641 641 kwargs['form'] = file_form
642 642 kwargs['suptitle'] = 'Importing file'
643 643 kwargs['button'] = 'Import'
644 644
645 645 kwargs.update(sidebar(experiment=experiment))
646 646
647 647 return render(request, 'experiment_import.html', kwargs)
648 648
649 649 def experiment_mix(request, id_exp):
650 650
651 651 experiment = get_object_or_404(Experiment, pk=id_exp)
652 652 rc_confs = [conf for conf in RCConfiguration.objects.filter(experiment=id_exp,
653 653 mix=False)]
654 654
655 655 if len(rc_confs)<2:
656 656 messages.warning(request, 'You need at least two RC Configurations to make a mix')
657 657 return redirect(experiment.get_absolute_url())
658 658
659 659 mix_confs = RCConfiguration.objects.filter(experiment=id_exp, mix=True)
660 660
661 661 if mix_confs:
662 662 mix = mix_confs[0]
663 663 else:
664 664 mix = RCConfiguration(experiment=experiment,
665 665 device=rc_confs[0].device,
666 666 ipp=rc_confs[0].ipp,
667 667 clock_in=rc_confs[0].clock_in,
668 668 clock_divider=rc_confs[0].clock_divider,
669 669 mix=True,
670 670 parameters='')
671 671 mix.save()
672 672
673 673 line_type = RCLineType.objects.get(name='mix')
674 674 for i in range(len(rc_confs[0].get_lines())):
675 675 line = RCLine(rc_configuration=mix, line_type=line_type, channel=i)
676 676 line.save()
677 677
678 678 initial = {'name': mix.name,
679 679 'result': parse_mix_result(mix.parameters),
680 680 'delay': 0,
681 681 'mask': [0,1,2,3,4,5,6,7]
682 682 }
683 683
684 684 if request.method=='GET':
685 685 form = RCMixConfigurationForm(confs=rc_confs, initial=initial)
686 686
687 687 if request.method=='POST':
688 688 result = mix.parameters
689 689
690 690 if '{}|'.format(request.POST['experiment']) in result:
691 691 messages.error(request, 'Configuration already added')
692 692 else:
693 693 if 'operation' in request.POST:
694 694 operation = MIX_OPERATIONS[request.POST['operation']]
695 695 else:
696 696 operation = ' '
697 697
698 698 mode = MIX_MODES[request.POST['mode']]
699 699
700 700 if result:
701 701 result = '{}-{}|{}|{}|{}|{}'.format(mix.parameters,
702 702 request.POST['experiment'],
703 703 mode,
704 704 operation,
705 705 float(request.POST['delay']),
706 706 parse_mask(request.POST.getlist('mask'))
707 707 )
708 708 else:
709 709 result = '{}|{}|{}|{}|{}'.format(request.POST['experiment'],
710 710 mode,
711 711 operation,
712 712 float(request.POST['delay']),
713 713 parse_mask(request.POST.getlist('mask'))
714 714 )
715 715
716 716 mix.parameters = result
717 717 mix.name = request.POST['name']
718 718 mix.save()
719 719 mix.update_pulses()
720 720
721 721 initial['result'] = parse_mix_result(result)
722 722 initial['name'] = mix.name
723 723
724 724 form = RCMixConfigurationForm(initial=initial, confs=rc_confs)
725 725
726 726
727 727 kwargs = {
728 728 'title': 'Experiment',
729 729 'suptitle': 'Mix Configurations',
730 730 'form' : form,
731 731 'extra_button': 'Delete',
732 732 'button': 'Add',
733 733 'cancel': 'Back',
734 734 'previous': experiment.get_absolute_url(),
735 735 'id_exp':id_exp,
736 736
737 737 }
738 738
739 739 return render(request, 'experiment_mix.html', kwargs)
740 740
741 741
742 742 def experiment_mix_delete(request, id_exp):
743 743
744 744 conf = RCConfiguration.objects.get(experiment=id_exp, mix=True)
745 745 values = conf.parameters.split('-')
746 746 conf.parameters = '-'.join(values[:-1])
747 747 conf.save()
748 748
749 749 return redirect('url_mix_experiment', id_exp=id_exp)
750 750
751 751
752 752 def parse_mix_result(s):
753 753
754 754 values = s.split('-')
755 755 html = 'EXP MOD OPE DELAY MASK\r\n'
756 756
757 757 if not values or values[0] in ('', ' '):
758 758 return mark_safe(html)
759 759
760 760 for i, value in enumerate(values):
761 761 if not value:
762 762 continue
763 763 pk, mode, operation, delay, mask = value.split('|')
764 764 conf = RCConfiguration.objects.get(pk=pk)
765 765 if i==0:
766 766 html += '{:20.18}{:3}{:4}{:9}km{:>6}\r\n'.format(
767 767 conf.name,
768 768 mode,
769 769 ' ',
770 770 delay,
771 771 mask)
772 772 else:
773 773 html += '{:20.18}{:3}{:4}{:9}km{:>6}\r\n'.format(
774 774 conf.name,
775 775 mode,
776 776 operation,
777 777 delay,
778 778 mask)
779 779
780 780 return mark_safe(html)
781 781
782 782 def parse_mask(l):
783 783
784 784 values = []
785 785
786 786 for x in range(8):
787 787 if '{}'.format(x) in l:
788 788 values.append(1)
789 789 else:
790 790 values.append(0)
791 791
792 792 values.reverse()
793 793
794 794 return int(''.join([str(x) for x in values]), 2)
795 795
796 796
797 797 def dev_confs(request):
798 798
799 799 configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment')
800 800
801 801 kwargs = {}
802 802
803 803 kwargs['configuration_keys'] = ['device', 'name', 'experiment', 'type', 'programmed_date']
804 804 kwargs['configurations'] = configurations
805 805
806 806 kwargs['title'] = 'Configuration'
807 807 kwargs['suptitle'] = 'List'
808 808
809 809 return render(request, 'dev_confs.html', kwargs)
810 810
811 811
812 812 def dev_conf(request, id_conf):
813 813
814 814 conf = get_object_or_404(Configuration, pk=id_conf)
815 815
816 816 return redirect(conf.get_absolute_url())
817 817
818 818
819 819 def dev_conf_new(request, id_exp=0, id_dev=0):
820 820
821 821 initial = {}
822 822 kwargs = {}
823 823
824 824 if id_exp<>0:
825 825 initial['experiment'] = id_exp
826 826
827 827 if id_dev<>0:
828 828 initial['device'] = id_dev
829 829
830 830 if request.method == 'GET':
831 831
832 832 if id_dev:
833 833 kwargs['button'] = 'Create'
834 834 device = Device.objects.get(pk=id_dev)
835 835 DevConfForm = CONF_FORMS[device.device_type.name]
836 836 initial['name'] = request.GET['name']
837 837 form = DevConfForm(initial=initial)
838 838 else:
839 839 if 'template' in request.GET:
840 840 if request.GET['template']=='0':
841 841 choices = [(conf.pk, '{}'.format(conf)) for conf in Configuration.objects.filter(template=True)]
842 842 form = NewForm(initial={'create_from':2},
843 843 template_choices=choices)
844 844 else:
845 845 kwargs['button'] = 'Create'
846 846 conf = Configuration.objects.get(pk=request.GET['template'])
847 847 id_dev = conf.device.pk
848 848 DevConfForm = CONF_FORMS[conf.device.device_type.name]
849 849 form = DevConfForm(instance=conf,
850 850 initial={'name': '{} [{:%Y/%m/%d}]'.format(conf.name, datetime.now()),
851 851 'template': False,
852 852 'experiment':id_exp})
853 853 elif 'blank' in request.GET:
854 854 kwargs['button'] = 'Create'
855 855 form = ConfigurationForm(initial=initial)
856 856 else:
857 857 form = NewForm()
858 858
859 859 if request.method == 'POST':
860 860
861 861 device = Device.objects.get(pk=request.POST['device'])
862 862 DevConfForm = CONF_FORMS[device.device_type.name]
863 863
864 864 form = DevConfForm(request.POST)
865 865 kwargs['button'] = 'Create'
866 866 if form.is_valid():
867 867 conf = form.save()
868 868
869 869 if 'template' in request.GET and conf.device.device_type.name=='rc':
870 870 lines = RCLine.objects.filter(rc_configuration=request.GET['template'])
871 871 for line in lines:
872 872 line.clone(rc_configuration=conf)
873
874 if conf.device.device_type.name=='jars':
875 conf.add_parms_to_filter()
873 876
874 877 return redirect('url_dev_conf', id_conf=conf.pk)
875 878
876 879
877 880 kwargs['id_exp'] = id_exp
878 881 kwargs['form'] = form
879 882 kwargs['title'] = 'Configuration'
880 883 kwargs['suptitle'] = 'New'
881 884
882 885
883 886 if id_dev != 0:
884 887 device = Device.objects.get(pk=id_dev)
885 888 kwargs['device'] = device.device_type.name
886 889
887 890 return render(request, 'dev_conf_edit.html', kwargs)
888 891
889 892
890 893 def dev_conf_edit(request, id_conf):
891 894
892 895 conf = get_object_or_404(Configuration, pk=id_conf)
893 896
894 897 DevConfModel = CONF_MODELS[conf.device.device_type.name]
895 898 DevConfForm = CONF_FORMS[conf.device.device_type.name]
896 899
897 900 dev_conf = DevConfModel.objects.get(pk=id_conf)
898 901
899 902 if request.method=='GET':
900 903 form = DevConfForm(instance=dev_conf)
901 904
902 905 if request.method=='POST':
903 906 form = DevConfForm(request.POST, instance=dev_conf)
904 907
905 908 if form.is_valid():
906 909 form.save()
907 910 return redirect('url_dev_conf', id_conf=id_conf)
908 911
909 912 kwargs = {}
910 913 kwargs['form'] = form
911 914 kwargs['title'] = 'Device Configuration'
912 915 kwargs['suptitle'] = 'Edit'
913 916 kwargs['button'] = 'Update'
914 917
915 918 ###### SIDEBAR ######
916 919 kwargs.update(sidebar(conf=conf))
917 920
918 921 return render(request, '%s_conf_edit.html' % conf.device.device_type.name, kwargs)
919 922
920 923
921 924 def dev_conf_start(request, id_conf):
922 925
923 926 conf = get_object_or_404(Configuration, pk=id_conf)
924 927
925 928 DevConfModel = CONF_MODELS[conf.device.device_type.name]
926 929
927 930 conf = DevConfModel.objects.get(pk=id_conf)
928 931
929 932 if conf.start_device():
930 933 messages.success(request, conf.message)
931 934 else:
932 935 messages.error(request, conf.message)
933 936
934 937 conf.status_device()
935 938
936 939 return redirect(conf.get_absolute_url())
937 940
938 941
939 942 def dev_conf_stop(request, id_conf):
940 943
941 944 conf = get_object_or_404(Configuration, pk=id_conf)
942 945
943 946 DevConfModel = CONF_MODELS[conf.device.device_type.name]
944 947
945 948 conf = DevConfModel.objects.get(pk=id_conf)
946 949
947 950 if conf.stop_device():
948 951 messages.success(request, conf.message)
949 952 else:
950 953 messages.error(request, conf.message)
951 954
952 955 conf.status_device()
953 956
954 957 return redirect(conf.get_absolute_url())
955 958
956 959
957 960 def dev_conf_status(request, id_conf):
958 961
959 962 conf = get_object_or_404(Configuration, pk=id_conf)
960 963
961 964 DevConfModel = CONF_MODELS[conf.device.device_type.name]
962 965
963 966 conf = DevConfModel.objects.get(pk=id_conf)
964 967
965 968 if conf.status_device():
966 969 messages.success(request, conf.message)
967 970 else:
968 971 messages.error(request, conf.message)
969 972
970 973 return redirect(conf.get_absolute_url())
971 974
972 975
973 976 def dev_conf_write(request, id_conf):
974 977
975 978 conf = get_object_or_404(Configuration, pk=id_conf)
976 979
977 980 DevConfModel = CONF_MODELS[conf.device.device_type.name]
978 981
979 982 conf = DevConfModel.objects.get(pk=id_conf)
980 983
981 984 answer = conf.write_device()
982 985 conf.status_device()
983 986
984 987 if answer:
985 988 messages.success(request, conf.message)
986 989
987 990 #Creating a historical configuration
988 991 conf.clone(type=0, template=False)
989 992
990 993 #Original configuration
991 994 conf = DevConfModel.objects.get(pk=id_conf)
992 995 else:
993 996 messages.error(request, conf.message)
994 997
995 998 return redirect(conf.get_absolute_url())
996 999
997 1000
998 1001 def dev_conf_read(request, id_conf):
999 1002
1000 1003 conf = get_object_or_404(Configuration, pk=id_conf)
1001 1004
1002 1005 DevConfModel = CONF_MODELS[conf.device.device_type.name]
1003 1006 DevConfForm = CONF_FORMS[conf.device.device_type.name]
1004 1007
1005 1008 conf = DevConfModel.objects.get(pk=id_conf)
1006 1009
1007 1010 if request.method=='GET':
1008 1011
1009 1012 parms = conf.read_device()
1010 1013 conf.status_device()
1011 1014
1012 1015 if not parms:
1013 1016 messages.error(request, conf.message)
1014 1017 return redirect(conf.get_absolute_url())
1015 1018
1016 1019 form = DevConfForm(initial=parms, instance=conf)
1017 1020
1018 1021 if request.method=='POST':
1019 1022 form = DevConfForm(request.POST, instance=conf)
1020 1023
1021 1024 if form.is_valid():
1022 1025 form.save()
1023 1026 return redirect(conf.get_absolute_url())
1024 1027
1025 1028 messages.error(request, "Parameters could not be saved")
1026 1029
1027 1030 kwargs = {}
1028 1031 kwargs['id_dev'] = conf.id
1029 1032 kwargs['form'] = form
1030 1033 kwargs['title'] = 'Device Configuration'
1031 1034 kwargs['suptitle'] = 'Parameters read from device'
1032 1035 kwargs['button'] = 'Save'
1033 1036
1034 1037 ###### SIDEBAR ######
1035 1038 kwargs.update(sidebar(conf=conf))
1036 1039
1037 1040 return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs)
1038 1041
1039 1042
1040 1043 def dev_conf_import(request, id_conf):
1041 1044
1042 1045 conf = get_object_or_404(Configuration, pk=id_conf)
1043 1046
1044 1047 DevConfModel = CONF_MODELS[conf.device.device_type.name]
1045 1048 DevConfForm = CONF_FORMS[conf.device.device_type.name]
1046 1049 conf = DevConfModel.objects.get(pk=id_conf)
1047 1050
1048 1051 if request.method == 'GET':
1049 1052 file_form = UploadFileForm()
1050 1053
1051 1054 if request.method == 'POST':
1052 1055 file_form = UploadFileForm(request.POST, request.FILES)
1053 1056
1054 1057 if file_form.is_valid():
1055 1058
1056 1059 parms = conf.import_from_file(request.FILES['file'])
1057 1060
1058 1061 if parms:
1059 1062 messages.success(request, "Parameters imported from: '%s'." %request.FILES['file'].name)
1060 1063 form = DevConfForm(initial=parms, instance=conf)
1061 1064
1062 1065 kwargs = {}
1063 1066 kwargs['id_dev'] = conf.id
1064 1067 kwargs['form'] = form
1065 1068 kwargs['title'] = 'Device Configuration'
1066 1069 kwargs['suptitle'] = 'Parameters imported'
1067 1070 kwargs['button'] = 'Save'
1068 1071 kwargs['action'] = conf.get_absolute_url_edit()
1069 1072 kwargs['previous'] = conf.get_absolute_url()
1070 1073
1071 1074 ###### SIDEBAR ######
1072 1075 kwargs.update(sidebar(conf=conf))
1073 1076
1074 1077 return render(request, '%s_conf_edit.html' % conf.device.device_type.name, kwargs)
1075 1078
1076 1079 messages.error(request, "Could not import parameters from file")
1077 1080
1078 1081 kwargs = {}
1079 1082 kwargs['id_dev'] = conf.id
1080 1083 kwargs['title'] = 'Device Configuration'
1081 1084 kwargs['form'] = file_form
1082 1085 kwargs['suptitle'] = 'Importing file'
1083 1086 kwargs['button'] = 'Import'
1084 1087
1085 1088 kwargs.update(sidebar(conf=conf))
1086 1089
1087 1090 return render(request, 'dev_conf_import.html', kwargs)
1088 1091
1089 1092
1090 1093 def dev_conf_export(request, id_conf):
1091 1094
1092 1095 conf = get_object_or_404(Configuration, pk=id_conf)
1093 1096
1094 1097 DevConfModel = CONF_MODELS[conf.device.device_type.name]
1095 1098
1096 1099 conf = DevConfModel.objects.get(pk=id_conf)
1097 1100
1098 1101 if request.method == 'GET':
1099 1102 file_form = DownloadFileForm(conf.device.device_type.name)
1100 1103
1101 1104 if request.method == 'POST':
1102 1105 file_form = DownloadFileForm(conf.device.device_type.name, request.POST)
1103 1106
1104 1107 if file_form.is_valid():
1105 1108 fields = conf.export_to_file(format = file_form.cleaned_data['format'])
1106 1109
1107 1110 response = HttpResponse(content_type=fields['content_type'])
1108 1111 response['Content-Disposition'] = 'attachment; filename="%s"' %fields['filename']
1109 1112 response.write(fields['content'])
1110 1113
1111 1114 return response
1112 1115
1113 1116 messages.error(request, "Could not export parameters")
1114 1117
1115 1118 kwargs = {}
1116 1119 kwargs['id_dev'] = conf.id
1117 1120 kwargs['title'] = 'Device Configuration'
1118 1121 kwargs['form'] = file_form
1119 1122 kwargs['suptitle'] = 'Exporting file'
1120 1123 kwargs['button'] = 'Export'
1121 1124
1122 1125 return render(request, 'dev_conf_export.html', kwargs)
1123 1126
1124 1127
1125 1128 def dev_conf_delete(request, id_conf):
1126 1129
1127 1130 conf = get_object_or_404(Configuration, pk=id_conf)
1128 1131
1129 1132 if request.method=='POST':
1130 1133 if request.user.is_staff:
1131 1134 conf.delete()
1132 1135 return redirect('url_dev_confs')
1133 1136
1134 1137 messages.error(request, 'Not enough permission to delete this object')
1135 1138 return redirect(conf.get_absolute_url())
1136 1139
1137 1140 kwargs = {
1138 1141 'title': 'Delete',
1139 1142 'suptitle': 'Experiment',
1140 1143 'object': conf,
1141 1144 'previous': conf.get_absolute_url(),
1142 1145 'delete': True
1143 1146 }
1144 1147
1145 1148 return render(request, 'confirm.html', kwargs)
1146 1149
1147 1150
1148 1151 def sidebar(**kwargs):
1149 1152
1150 1153 side_data = {}
1151 1154
1152 1155 conf = kwargs.get('conf', None)
1153 1156 experiment = kwargs.get('experiment', None)
1154 1157
1155 1158 if not experiment:
1156 1159 experiment = conf.experiment
1157 1160
1158 1161 if experiment:
1159 1162 side_data['experiment'] = experiment
1160 1163 campaign = experiment.campaign_set.all()
1161 1164 if campaign:
1162 1165 side_data['campaign'] = campaign[0]
1163 1166 experiments = campaign[0].experiments.all()
1164 1167 else:
1165 1168 experiments = [experiment]
1166 1169 configurations = experiment.configuration_set.filter(type=0)
1167 1170 side_data['side_experiments'] = experiments
1168 1171 side_data['side_configurations'] = configurations
1169 1172
1170 1173 return side_data
1171 1174
1172 1175
1173 1176 def operation(request, id_camp=None):
1174 1177
1175 1178 if not id_camp:
1176 1179 campaigns = Campaign.objects.all().order_by('-start_date')
1177 1180
1178 1181 if not campaigns:
1179 1182 kwargs = {}
1180 1183 kwargs['title'] = 'No Campaigns'
1181 1184 kwargs['suptitle'] = 'Empty'
1182 1185 return render(request, 'operation.html', kwargs)
1183 1186
1184 1187 id_camp = campaigns[0].id
1185 1188
1186 1189 campaign = get_object_or_404(Campaign, pk = id_camp)
1187 1190
1188 1191 if request.method=='GET':
1189 1192 form = OperationForm(initial={'campaign': campaign.id}, length = 5)
1190 1193
1191 1194 if request.method=='POST':
1192 1195 form = OperationForm(request.POST, initial={'campaign':campaign.id}, length = 5)
1193 1196
1194 1197 if form.is_valid():
1195 1198 return redirect('url_operation', id_camp=campaign.id)
1196 1199 #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct()
1197 1200 experiments = Experiment.objects.filter(campaign__pk=campaign.id)
1198 1201 #for exs in experiments:
1199 1202 # exs.get_status()
1200 1203 locations= Location.objects.filter(experiment=experiments).distinct()
1201 1204 #experiments = [Experiment.objects.filter(location__pk=location.id).filter(campaign__pk=campaign.id) for location in locations]
1202 1205 kwargs = {}
1203 1206 #---Campaign
1204 1207 kwargs['campaign'] = campaign
1205 1208 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
1206 1209 #---Experiment
1207 1210 keys = ['id', 'name', 'start_time', 'end_time', 'status']
1208 1211 kwargs['experiment_keys'] = keys[1:]
1209 1212 kwargs['experiments'] = experiments
1210 1213 #---Radar
1211 1214 kwargs['locations'] = locations
1212 1215 #---Else
1213 1216 kwargs['title'] = 'Campaign'
1214 1217 kwargs['suptitle'] = campaign.name
1215 1218 kwargs['form'] = form
1216 1219 kwargs['button'] = 'Search'
1217 1220 kwargs['details'] = True
1218 1221 kwargs['search_button'] = True
1219 1222
1220 1223 return render(request, 'operation.html', kwargs)
1221 1224
1222 1225
1223 1226 def operation_search(request, id_camp=None):
1224 1227
1225 1228
1226 1229 if not id_camp:
1227 1230 campaigns = Campaign.objects.all().order_by('-start_date')
1228 1231
1229 1232 if not campaigns:
1230 1233 return render(request, 'operation.html', {})
1231 1234
1232 1235 id_camp = campaigns[0].id
1233 1236 campaign = get_object_or_404(Campaign, pk = id_camp)
1234 1237
1235 1238 if request.method=='GET':
1236 1239 form = OperationSearchForm(initial={'campaign': campaign.id})
1237 1240
1238 1241 if request.method=='POST':
1239 1242 form = OperationSearchForm(request.POST, initial={'campaign':campaign.id})
1240 1243
1241 1244 if form.is_valid():
1242 1245 return redirect('url_operation', id_camp=campaign.id)
1243 1246
1244 1247 #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct()
1245 1248 experiments = Experiment.objects.filter(campaign__pk=campaign.id)
1246 1249 #for exs in experiments:
1247 1250 # exs.get_status()
1248 1251 locations= Location.objects.filter(experiment=experiments).distinct()
1249 1252 form = OperationSearchForm(initial={'campaign': campaign.id})
1250 1253
1251 1254 kwargs = {}
1252 1255 #---Campaign
1253 1256 kwargs['campaign'] = campaign
1254 1257 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
1255 1258 #---Experiment
1256 1259 keys = ['id', 'name', 'start_time', 'end_time', 'status']
1257 1260 kwargs['experiment_keys'] = keys[1:]
1258 1261 kwargs['experiments'] = experiments
1259 1262 #---Radar
1260 1263 kwargs['locations'] = locations
1261 1264 #---Else
1262 1265 kwargs['title'] = 'Campaign'
1263 1266 kwargs['suptitle'] = campaign.name
1264 1267 kwargs['form'] = form
1265 1268 kwargs['button'] = 'Select'
1266 1269 kwargs['details'] = True
1267 1270 kwargs['search_button'] = False
1268 1271
1269 1272 return render(request, 'operation.html', kwargs)
1270 1273
1271 1274
1272 1275 def radar_play(request, id_camp, id_radar):
1273 1276 campaign = get_object_or_404(Campaign, pk = id_camp)
1274 1277 radar = get_object_or_404(Location, pk = id_radar)
1275 1278 today = datetime.today()
1276 1279 now = today.time()
1277 1280
1278 1281 #--Clear Old Experiments From RunningExperiment Object
1279 1282 running_experiment = RunningExperiment.objects.filter(radar=radar)
1280 1283 if running_experiment:
1281 1284 running_experiment = running_experiment[0]
1282 1285 running_experiment.running_experiment.clear()
1283 1286 running_experiment.save()
1284 1287
1285 1288 #--If campaign datetime is ok:
1286 1289 if today >= campaign.start_date and today <= campaign.end_date:
1287 1290 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
1288 1291 for exp in experiments:
1289 1292 #--If experiment time is ok:
1290 1293 if now >= exp.start_time and now <= exp.end_time:
1291 1294 configurations = Configuration.objects.filter(experiment = exp)
1292 1295 for conf in configurations:
1293 1296 if 'cgs' in conf.device.device_type.name:
1294 1297 conf.status_device()
1295 1298 else:
1296 1299 answer = conf.start_device()
1297 1300 conf.status_device()
1298 1301 #--Running Experiment
1299 1302 old_running_experiment = RunningExperiment.objects.filter(radar=radar)
1300 1303 #--If RunningExperiment element exists
1301 1304 if old_running_experiment:
1302 1305 old_running_experiment = old_running_experiment[0]
1303 1306 old_running_experiment.running_experiment.add(exp)
1304 1307 old_running_experiment.status = 3
1305 1308 old_running_experiment.save()
1306 1309 #--Create a new Running_Experiment Object
1307 1310 else:
1308 1311 new_running_experiment = RunningExperiment(
1309 1312 radar = radar,
1310 1313 status = 3,
1311 1314 )
1312 1315 new_running_experiment.save()
1313 1316 new_running_experiment.running_experiment.add(exp)
1314 1317 new_running_experiment.save()
1315 1318
1316 1319 if answer:
1317 1320 messages.success(request, conf.message)
1318 1321 exp.status=2
1319 1322 exp.save()
1320 1323 else:
1321 1324 messages.error(request, conf.message)
1322 1325 else:
1323 1326 if exp.status == 1 or exp.status == 3:
1324 1327 exp.status=3
1325 1328 exp.save()
1326 1329
1327 1330
1328 1331 route = request.META['HTTP_REFERER']
1329 1332 route = str(route)
1330 1333 if 'search' in route:
1331 1334 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1332 1335 else:
1333 1336 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1334 1337
1335 1338
1336 1339 def radar_stop(request, id_camp, id_radar):
1337 1340 campaign = get_object_or_404(Campaign, pk = id_camp)
1338 1341 radar = get_object_or_404(Location, pk = id_radar)
1339 1342 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
1340 1343
1341 1344 for exp in experiments:
1342 1345 configurations = Configuration.objects.filter(experiment = exp)
1343 1346 for conf in configurations:
1344 1347 if 'cgs' in conf.device.device_type.name:
1345 1348 conf.status_device()
1346 1349 else:
1347 1350 answer = conf.stop_device()
1348 1351 conf.status_device()
1349 1352
1350 1353 if answer:
1351 1354 messages.success(request, conf.message)
1352 1355 exp.status=1
1353 1356 exp.save()
1354 1357 else:
1355 1358 messages.error(request, conf.message)
1356 1359
1357 1360
1358 1361 route = request.META['HTTP_REFERER']
1359 1362 route = str(route)
1360 1363 if 'search' in route:
1361 1364 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1362 1365 else:
1363 1366 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1364 1367
1365 1368
1366 1369 def radar_refresh(request, id_camp, id_radar):
1367 1370
1368 1371 campaign = get_object_or_404(Campaign, pk = id_camp)
1369 1372 radar = get_object_or_404(Location, pk = id_radar)
1370 1373 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
1371 1374 for exs in experiments:
1372 1375 exs.get_status()
1373 1376
1374 1377 route = request.META['HTTP_REFERER']
1375 1378 route = str(route)
1376 1379 if 'search' in route:
1377 1380 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1378 1381 else:
1379 1382 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1380 1383
General Comments 0
You need to be logged in to leave comments. Login now