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