##// END OF EJS Templates
Task # 487: Operation View: radar_stop with "stop_device()" function ...
Fiorella Quino -
r94:1b02b5321b7a
parent child
Show More
@@ -1,1076 +1,1092
1 from django.shortcuts import render, redirect, get_object_or_404, HttpResponse
1 from django.shortcuts import render, redirect, get_object_or_404, HttpResponse
2 from django.http import HttpResponseRedirect
2 from django.http import HttpResponseRedirect
3 from django.core.urlresolvers import reverse
3 from django.core.urlresolvers import reverse
4 from django.contrib import messages
4 from django.contrib import messages
5 from datetime import datetime
5 from datetime import datetime
6
6
7 from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm, LocationForm, UploadFileForm, DownloadFileForm, OperationForm, NewForm
7 from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm, LocationForm, UploadFileForm, DownloadFileForm, OperationForm, NewForm
8 from .forms import OperationSearchForm
8 from .forms import OperationSearchForm
9 from apps.cgs.forms import CGSConfigurationForm
9 from apps.cgs.forms import CGSConfigurationForm
10 from apps.jars.forms import JARSConfigurationForm
10 from apps.jars.forms import JARSConfigurationForm
11 from apps.usrp.forms import USRPConfigurationForm
11 from apps.usrp.forms import USRPConfigurationForm
12 from apps.abs.forms import ABSConfigurationForm
12 from apps.abs.forms import ABSConfigurationForm
13 from apps.rc.forms import RCConfigurationForm
13 from apps.rc.forms import RCConfigurationForm
14 from apps.dds.forms import DDSConfigurationForm
14 from apps.dds.forms import DDSConfigurationForm
15
15
16 from .models import Campaign, Experiment, Device, Configuration, Location, RunningExperiment
16 from .models import Campaign, Experiment, Device, Configuration, Location, RunningExperiment
17 from apps.cgs.models import CGSConfiguration
17 from apps.cgs.models import CGSConfiguration
18 from apps.jars.models import JARSConfiguration
18 from apps.jars.models import JARSConfiguration
19 from apps.usrp.models import USRPConfiguration
19 from apps.usrp.models import USRPConfiguration
20 from apps.abs.models import ABSConfiguration
20 from apps.abs.models import ABSConfiguration
21 from apps.rc.models import RCConfiguration
21 from apps.rc.models import RCConfiguration
22 from apps.dds.models import DDSConfiguration
22 from apps.dds.models import DDSConfiguration
23
23
24 # Create your views here.
24 # Create your views here.
25
25
26 CONF_FORMS = {
26 CONF_FORMS = {
27 'rc': RCConfigurationForm,
27 'rc': RCConfigurationForm,
28 'dds': DDSConfigurationForm,
28 'dds': DDSConfigurationForm,
29 'jars': JARSConfigurationForm,
29 'jars': JARSConfigurationForm,
30 'cgs': CGSConfigurationForm,
30 'cgs': CGSConfigurationForm,
31 'abs': ABSConfigurationForm,
31 'abs': ABSConfigurationForm,
32 'usrp': USRPConfigurationForm,
32 'usrp': USRPConfigurationForm,
33 }
33 }
34
34
35 CONF_MODELS = {
35 CONF_MODELS = {
36 'rc': RCConfiguration,
36 'rc': RCConfiguration,
37 'dds': DDSConfiguration,
37 'dds': DDSConfiguration,
38 'jars': JARSConfiguration,
38 'jars': JARSConfiguration,
39 'cgs': CGSConfiguration,
39 'cgs': CGSConfiguration,
40 'abs': ABSConfiguration,
40 'abs': ABSConfiguration,
41 'usrp': USRPConfiguration,
41 'usrp': USRPConfiguration,
42 }
42 }
43
43
44
44
45 def index(request):
45 def index(request):
46 kwargs = {}
46 kwargs = {}
47
47
48 return render(request, 'index.html', kwargs)
48 return render(request, 'index.html', kwargs)
49
49
50
50
51 def locations(request):
51 def locations(request):
52
52
53 locations = Location.objects.all().order_by('name')
53 locations = Location.objects.all().order_by('name')
54
54
55 keys = ['id', 'name', 'description']
55 keys = ['id', 'name', 'description']
56
56
57 kwargs = {}
57 kwargs = {}
58 kwargs['location_keys'] = keys[1:]
58 kwargs['location_keys'] = keys[1:]
59 kwargs['locations'] = locations
59 kwargs['locations'] = locations
60 kwargs['title'] = 'Location'
60 kwargs['title'] = 'Location'
61 kwargs['suptitle'] = 'List'
61 kwargs['suptitle'] = 'List'
62 kwargs['button'] = 'New Location'
62 kwargs['button'] = 'New Location'
63
63
64 return render(request, 'locations.html', kwargs)
64 return render(request, 'locations.html', kwargs)
65
65
66
66
67 def location(request, id_loc):
67 def location(request, id_loc):
68
68
69 location = get_object_or_404(Location, pk=id_loc)
69 location = get_object_or_404(Location, pk=id_loc)
70
70
71 kwargs = {}
71 kwargs = {}
72 kwargs['location'] = location
72 kwargs['location'] = location
73 kwargs['location_keys'] = ['name', 'description']
73 kwargs['location_keys'] = ['name', 'description']
74
74
75 kwargs['title'] = 'Location'
75 kwargs['title'] = 'Location'
76 kwargs['suptitle'] = 'Details'
76 kwargs['suptitle'] = 'Details'
77
77
78 return render(request, 'location.html', kwargs)
78 return render(request, 'location.html', kwargs)
79
79
80
80
81 def location_new(request):
81 def location_new(request):
82
82
83 if request.method == 'GET':
83 if request.method == 'GET':
84 form = LocationForm()
84 form = LocationForm()
85
85
86 if request.method == 'POST':
86 if request.method == 'POST':
87 form = LocationForm(request.POST)
87 form = LocationForm(request.POST)
88
88
89 if form.is_valid():
89 if form.is_valid():
90 form.save()
90 form.save()
91 return redirect('url_locations')
91 return redirect('url_locations')
92
92
93 kwargs = {}
93 kwargs = {}
94 kwargs['form'] = form
94 kwargs['form'] = form
95 kwargs['title'] = 'Location'
95 kwargs['title'] = 'Location'
96 kwargs['suptitle'] = 'New'
96 kwargs['suptitle'] = 'New'
97 kwargs['button'] = 'Create'
97 kwargs['button'] = 'Create'
98
98
99 return render(request, 'location_edit.html', kwargs)
99 return render(request, 'location_edit.html', kwargs)
100
100
101
101
102 def location_edit(request, id_loc):
102 def location_edit(request, id_loc):
103
103
104 location = get_object_or_404(Location, pk=id_loc)
104 location = get_object_or_404(Location, pk=id_loc)
105
105
106 if request.method=='GET':
106 if request.method=='GET':
107 form = LocationForm(instance=location)
107 form = LocationForm(instance=location)
108
108
109 if request.method=='POST':
109 if request.method=='POST':
110 form = LocationForm(request.POST, instance=location)
110 form = LocationForm(request.POST, instance=location)
111
111
112 if form.is_valid():
112 if form.is_valid():
113 form.save()
113 form.save()
114 return redirect('url_locations')
114 return redirect('url_locations')
115
115
116 kwargs = {}
116 kwargs = {}
117 kwargs['form'] = form
117 kwargs['form'] = form
118 kwargs['title'] = 'Location'
118 kwargs['title'] = 'Location'
119 kwargs['suptitle'] = 'Edit'
119 kwargs['suptitle'] = 'Edit'
120 kwargs['button'] = 'Update'
120 kwargs['button'] = 'Update'
121
121
122 return render(request, 'location_edit.html', kwargs)
122 return render(request, 'location_edit.html', kwargs)
123
123
124
124
125 def location_delete(request, id_loc):
125 def location_delete(request, id_loc):
126
126
127 location = get_object_or_404(Location, pk=id_loc)
127 location = get_object_or_404(Location, pk=id_loc)
128
128
129 if request.method=='POST':
129 if request.method=='POST':
130
130
131 if request.user.is_staff:
131 if request.user.is_staff:
132 location.delete()
132 location.delete()
133 return redirect('url_locations')
133 return redirect('url_locations')
134
134
135 messages.error(request, 'Not enough permission to delete this object')
135 messages.error(request, 'Not enough permission to delete this object')
136 return redirect(location.get_absolute_url())
136 return redirect(location.get_absolute_url())
137
137
138 kwargs = {
138 kwargs = {
139 'title': 'Delete',
139 'title': 'Delete',
140 'suptitle': 'Location',
140 'suptitle': 'Location',
141 'object': location,
141 'object': location,
142 'previous': location.get_absolute_url(),
142 'previous': location.get_absolute_url(),
143 'delete': True
143 'delete': True
144 }
144 }
145
145
146 return render(request, 'confirm.html', kwargs)
146 return render(request, 'confirm.html', kwargs)
147
147
148
148
149 def devices(request):
149 def devices(request):
150
150
151 devices = Device.objects.all().order_by('device_type__name')
151 devices = Device.objects.all().order_by('device_type__name')
152
152
153 # keys = ['id', 'device_type__name', 'name', 'ip_address']
153 # keys = ['id', 'device_type__name', 'name', 'ip_address']
154 keys = ['id', 'name', 'ip_address', 'port_address', 'device_type']
154 keys = ['id', 'name', 'ip_address', 'port_address', 'device_type']
155
155
156 kwargs = {}
156 kwargs = {}
157 kwargs['device_keys'] = keys[1:]
157 kwargs['device_keys'] = keys[1:]
158 kwargs['devices'] = devices#.values(*keys)
158 kwargs['devices'] = devices#.values(*keys)
159 kwargs['title'] = 'Device'
159 kwargs['title'] = 'Device'
160 kwargs['suptitle'] = 'List'
160 kwargs['suptitle'] = 'List'
161 kwargs['button'] = 'New Device'
161 kwargs['button'] = 'New Device'
162
162
163 return render(request, 'devices.html', kwargs)
163 return render(request, 'devices.html', kwargs)
164
164
165
165
166 def device(request, id_dev):
166 def device(request, id_dev):
167
167
168 device = get_object_or_404(Device, pk=id_dev)
168 device = get_object_or_404(Device, pk=id_dev)
169
169
170 kwargs = {}
170 kwargs = {}
171 kwargs['device'] = device
171 kwargs['device'] = device
172 kwargs['device_keys'] = ['device_type', 'name', 'ip_address', 'port_address', 'description']
172 kwargs['device_keys'] = ['device_type', 'name', 'ip_address', 'port_address', 'description']
173
173
174 kwargs['title'] = 'Device'
174 kwargs['title'] = 'Device'
175 kwargs['suptitle'] = 'Details'
175 kwargs['suptitle'] = 'Details'
176
176
177 return render(request, 'device.html', kwargs)
177 return render(request, 'device.html', kwargs)
178
178
179
179
180 def device_new(request):
180 def device_new(request):
181
181
182 if request.method == 'GET':
182 if request.method == 'GET':
183 form = DeviceForm()
183 form = DeviceForm()
184
184
185 if request.method == 'POST':
185 if request.method == 'POST':
186 form = DeviceForm(request.POST)
186 form = DeviceForm(request.POST)
187
187
188 if form.is_valid():
188 if form.is_valid():
189 form.save()
189 form.save()
190 return redirect('url_devices')
190 return redirect('url_devices')
191
191
192 kwargs = {}
192 kwargs = {}
193 kwargs['form'] = form
193 kwargs['form'] = form
194 kwargs['title'] = 'Device'
194 kwargs['title'] = 'Device'
195 kwargs['suptitle'] = 'New'
195 kwargs['suptitle'] = 'New'
196 kwargs['button'] = 'Create'
196 kwargs['button'] = 'Create'
197
197
198 return render(request, 'device_edit.html', kwargs)
198 return render(request, 'device_edit.html', kwargs)
199
199
200
200
201 def device_edit(request, id_dev):
201 def device_edit(request, id_dev):
202
202
203 device = get_object_or_404(Device, pk=id_dev)
203 device = get_object_or_404(Device, pk=id_dev)
204
204
205 if request.method=='GET':
205 if request.method=='GET':
206 form = DeviceForm(instance=device)
206 form = DeviceForm(instance=device)
207
207
208 if request.method=='POST':
208 if request.method=='POST':
209 form = DeviceForm(request.POST, instance=device)
209 form = DeviceForm(request.POST, instance=device)
210
210
211 if form.is_valid():
211 if form.is_valid():
212 form.save()
212 form.save()
213 return redirect(device.get_absolute_url())
213 return redirect(device.get_absolute_url())
214
214
215 kwargs = {}
215 kwargs = {}
216 kwargs['form'] = form
216 kwargs['form'] = form
217 kwargs['title'] = 'Device'
217 kwargs['title'] = 'Device'
218 kwargs['suptitle'] = 'Edit'
218 kwargs['suptitle'] = 'Edit'
219 kwargs['button'] = 'Update'
219 kwargs['button'] = 'Update'
220
220
221 return render(request, 'device_edit.html', kwargs)
221 return render(request, 'device_edit.html', kwargs)
222
222
223
223
224 def device_delete(request, id_dev):
224 def device_delete(request, id_dev):
225
225
226 device = get_object_or_404(Device, pk=id_dev)
226 device = get_object_or_404(Device, pk=id_dev)
227
227
228 if request.method=='POST':
228 if request.method=='POST':
229
229
230 if request.user.is_staff:
230 if request.user.is_staff:
231 device.delete()
231 device.delete()
232 return redirect('url_devices')
232 return redirect('url_devices')
233
233
234 messages.error(request, 'Not enough permission to delete this object')
234 messages.error(request, 'Not enough permission to delete this object')
235 return redirect(device.get_absolute_url())
235 return redirect(device.get_absolute_url())
236
236
237 kwargs = {
237 kwargs = {
238 'title': 'Delete',
238 'title': 'Delete',
239 'suptitle': 'Device',
239 'suptitle': 'Device',
240 'object': device,
240 'object': device,
241 'previous': device.get_absolute_url(),
241 'previous': device.get_absolute_url(),
242 'delete': True
242 'delete': True
243 }
243 }
244
244
245 return render(request, 'confirm.html', kwargs)
245 return render(request, 'confirm.html', kwargs)
246
246
247
247
248 def campaigns(request):
248 def campaigns(request):
249
249
250 campaigns = Campaign.objects.all().order_by('start_date')
250 campaigns = Campaign.objects.all().order_by('start_date')
251
251
252 keys = ['id', 'name', 'start_date', 'end_date']
252 keys = ['id', 'name', 'start_date', 'end_date']
253
253
254 kwargs = {}
254 kwargs = {}
255 kwargs['campaign_keys'] = keys[1:]
255 kwargs['campaign_keys'] = keys[1:]
256 kwargs['campaigns'] = campaigns#.values(*keys)
256 kwargs['campaigns'] = campaigns#.values(*keys)
257 kwargs['title'] = 'Campaign'
257 kwargs['title'] = 'Campaign'
258 kwargs['suptitle'] = 'List'
258 kwargs['suptitle'] = 'List'
259 kwargs['button'] = 'New Campaign'
259 kwargs['button'] = 'New Campaign'
260
260
261 return render(request, 'campaigns.html', kwargs)
261 return render(request, 'campaigns.html', kwargs)
262
262
263
263
264 def campaign(request, id_camp):
264 def campaign(request, id_camp):
265
265
266 campaign = get_object_or_404(Campaign, pk=id_camp)
266 campaign = get_object_or_404(Campaign, pk=id_camp)
267 experiments = Experiment.objects.filter(campaign=campaign)
267 experiments = Experiment.objects.filter(campaign=campaign)
268
268
269 form = CampaignForm(instance=campaign)
269 form = CampaignForm(instance=campaign)
270
270
271 kwargs = {}
271 kwargs = {}
272 kwargs['campaign'] = campaign
272 kwargs['campaign'] = campaign
273 kwargs['campaign_keys'] = ['template', 'name', 'start_date', 'end_date', 'tags', 'description']
273 kwargs['campaign_keys'] = ['template', 'name', 'start_date', 'end_date', 'tags', 'description']
274
274
275 kwargs['experiments'] = experiments
275 kwargs['experiments'] = experiments
276 kwargs['experiment_keys'] = ['name', 'radar', 'start_time', 'end_time']
276 kwargs['experiment_keys'] = ['name', 'radar', 'start_time', 'end_time']
277
277
278 kwargs['title'] = 'Campaign'
278 kwargs['title'] = 'Campaign'
279 kwargs['suptitle'] = 'Details'
279 kwargs['suptitle'] = 'Details'
280
280
281 kwargs['form'] = form
281 kwargs['form'] = form
282 kwargs['button'] = 'Add Experiment'
282 kwargs['button'] = 'Add Experiment'
283
283
284 return render(request, 'campaign.html', kwargs)
284 return render(request, 'campaign.html', kwargs)
285
285
286
286
287 def campaign_new(request):
287 def campaign_new(request):
288
288
289 kwargs = {}
289 kwargs = {}
290
290
291 if request.method == 'GET':
291 if request.method == 'GET':
292
292
293 if 'template' in request.GET:
293 if 'template' in request.GET:
294 if request.GET['template']=='0':
294 if request.GET['template']=='0':
295 form = NewForm(initial={'create_from':2},
295 form = NewForm(initial={'create_from':2},
296 template_choices=Campaign.objects.filter(template=True).values_list('id', 'name'))
296 template_choices=Campaign.objects.filter(template=True).values_list('id', 'name'))
297 else:
297 else:
298 kwargs['button'] = 'Create'
298 kwargs['button'] = 'Create'
299 kwargs['experiments'] = Configuration.objects.filter(experiment=request.GET['template'])
299 kwargs['experiments'] = Configuration.objects.filter(experiment=request.GET['template'])
300 kwargs['experiment_keys'] = ['name', 'start_time', 'end_time']
300 kwargs['experiment_keys'] = ['name', 'start_time', 'end_time']
301 camp = Campaign.objects.get(pk=request.GET['template'])
301 camp = Campaign.objects.get(pk=request.GET['template'])
302 form = CampaignForm(instance=camp,
302 form = CampaignForm(instance=camp,
303 initial={'name':'{} [{:%Y/%m/%d}]'.format(camp.name, datetime.now()),
303 initial={'name':'{} [{:%Y/%m/%d}]'.format(camp.name, datetime.now()),
304 'template':False})
304 'template':False})
305 elif 'blank' in request.GET:
305 elif 'blank' in request.GET:
306 kwargs['button'] = 'Create'
306 kwargs['button'] = 'Create'
307 form = CampaignForm()
307 form = CampaignForm()
308 else:
308 else:
309 form = NewForm()
309 form = NewForm()
310
310
311 if request.method == 'POST':
311 if request.method == 'POST':
312 kwargs['button'] = 'Create'
312 kwargs['button'] = 'Create'
313 post = request.POST.copy()
313 post = request.POST.copy()
314 experiments = []
314 experiments = []
315
315
316 for id_exp in post.getlist('experiments'):
316 for id_exp in post.getlist('experiments'):
317 exp = Experiment.objects.get(pk=id_exp)
317 exp = Experiment.objects.get(pk=id_exp)
318 new_exp = exp.clone(template=False)
318 new_exp = exp.clone(template=False)
319 experiments.append(new_exp)
319 experiments.append(new_exp)
320
320
321 post.setlist('experiments', [])
321 post.setlist('experiments', [])
322
322
323 form = CampaignForm(post)
323 form = CampaignForm(post)
324
324
325 if form.is_valid():
325 if form.is_valid():
326 campaign = form.save()
326 campaign = form.save()
327 for exp in experiments:
327 for exp in experiments:
328 campaign.experiments.add(exp)
328 campaign.experiments.add(exp)
329 campaign.save()
329 campaign.save()
330 return redirect('url_campaign', id_camp=campaign.id)
330 return redirect('url_campaign', id_camp=campaign.id)
331
331
332 kwargs['form'] = form
332 kwargs['form'] = form
333 kwargs['title'] = 'Campaign'
333 kwargs['title'] = 'Campaign'
334 kwargs['suptitle'] = 'New'
334 kwargs['suptitle'] = 'New'
335
335
336 return render(request, 'campaign_edit.html', kwargs)
336 return render(request, 'campaign_edit.html', kwargs)
337
337
338
338
339 def campaign_edit(request, id_camp):
339 def campaign_edit(request, id_camp):
340
340
341 campaign = get_object_or_404(Campaign, pk=id_camp)
341 campaign = get_object_or_404(Campaign, pk=id_camp)
342
342
343 if request.method=='GET':
343 if request.method=='GET':
344 form = CampaignForm(instance=campaign)
344 form = CampaignForm(instance=campaign)
345
345
346 if request.method=='POST':
346 if request.method=='POST':
347 exps = campaign.experiments.all().values_list('pk', flat=True)
347 exps = campaign.experiments.all().values_list('pk', flat=True)
348 post = request.POST.copy()
348 post = request.POST.copy()
349 new_exps = post.getlist('experiments')
349 new_exps = post.getlist('experiments')
350 post.setlist('experiments', [])
350 post.setlist('experiments', [])
351 form = CampaignForm(post, instance=campaign)
351 form = CampaignForm(post, instance=campaign)
352
352
353 if form.is_valid():
353 if form.is_valid():
354 camp = form.save()
354 camp = form.save()
355 for id_exp in new_exps:
355 for id_exp in new_exps:
356 if int(id_exp) in exps:
356 if int(id_exp) in exps:
357 exps.pop(id_exp)
357 exps.pop(id_exp)
358 else:
358 else:
359 exp = Experiment.objects.get(pk=id_exp)
359 exp = Experiment.objects.get(pk=id_exp)
360 if exp.template:
360 if exp.template:
361 camp.experiments.add(exp.clone(template=False))
361 camp.experiments.add(exp.clone(template=False))
362 else:
362 else:
363 camp.experiments.add(exp)
363 camp.experiments.add(exp)
364
364
365 for id_exp in exps:
365 for id_exp in exps:
366 camp.experiments.remove(Experiment.objects.get(pk=id_exp))
366 camp.experiments.remove(Experiment.objects.get(pk=id_exp))
367
367
368 return redirect('url_campaign', id_camp=id_camp)
368 return redirect('url_campaign', id_camp=id_camp)
369
369
370 kwargs = {}
370 kwargs = {}
371 kwargs['form'] = form
371 kwargs['form'] = form
372 kwargs['title'] = 'Campaign'
372 kwargs['title'] = 'Campaign'
373 kwargs['suptitle'] = 'Edit'
373 kwargs['suptitle'] = 'Edit'
374 kwargs['button'] = 'Update'
374 kwargs['button'] = 'Update'
375
375
376 return render(request, 'campaign_edit.html', kwargs)
376 return render(request, 'campaign_edit.html', kwargs)
377
377
378
378
379 def campaign_delete(request, id_camp):
379 def campaign_delete(request, id_camp):
380
380
381 campaign = get_object_or_404(Campaign, pk=id_camp)
381 campaign = get_object_or_404(Campaign, pk=id_camp)
382
382
383 if request.method=='POST':
383 if request.method=='POST':
384 if request.user.is_staff:
384 if request.user.is_staff:
385
385
386 for exp in campaign.experiments.all():
386 for exp in campaign.experiments.all():
387 for conf in Configuration.objects.filter(experiment=exp):
387 for conf in Configuration.objects.filter(experiment=exp):
388 conf.delete()
388 conf.delete()
389 exp.delete()
389 exp.delete()
390 campaign.delete()
390 campaign.delete()
391
391
392 return redirect('url_campaigns')
392 return redirect('url_campaigns')
393
393
394 messages.error(request, 'Not enough permission to delete this object')
394 messages.error(request, 'Not enough permission to delete this object')
395 return redirect(campaign.get_absolute_url())
395 return redirect(campaign.get_absolute_url())
396
396
397 kwargs = {
397 kwargs = {
398 'title': 'Delete',
398 'title': 'Delete',
399 'suptitle': 'Campaign',
399 'suptitle': 'Campaign',
400 'object': campaign,
400 'object': campaign,
401 'previous': campaign.get_absolute_url(),
401 'previous': campaign.get_absolute_url(),
402 'delete': True
402 'delete': True
403 }
403 }
404
404
405 return render(request, 'confirm.html', kwargs)
405 return render(request, 'confirm.html', kwargs)
406
406
407
407
408 def experiments(request):
408 def experiments(request):
409
409
410 experiment_list = Experiment.objects.all()
410 experiment_list = Experiment.objects.all()
411
411
412 keys = ['id', 'name', 'start_time', 'end_time']
412 keys = ['id', 'name', 'start_time', 'end_time']
413
413
414 kwargs = {}
414 kwargs = {}
415
415
416 kwargs['experiment_keys'] = keys[1:]
416 kwargs['experiment_keys'] = keys[1:]
417 kwargs['experiments'] = experiment_list
417 kwargs['experiments'] = experiment_list
418
418
419 kwargs['title'] = 'Experiment'
419 kwargs['title'] = 'Experiment'
420 kwargs['suptitle'] = 'List'
420 kwargs['suptitle'] = 'List'
421 kwargs['button'] = 'New Experiment'
421 kwargs['button'] = 'New Experiment'
422
422
423 return render(request, 'experiments.html', kwargs)
423 return render(request, 'experiments.html', kwargs)
424
424
425
425
426 def experiment(request, id_exp):
426 def experiment(request, id_exp):
427
427
428 experiment = get_object_or_404(Experiment, pk=id_exp)
428 experiment = get_object_or_404(Experiment, pk=id_exp)
429
429
430 configurations = Configuration.objects.filter(experiment=experiment, type=0)
430 configurations = Configuration.objects.filter(experiment=experiment, type=0)
431
431
432 kwargs = {}
432 kwargs = {}
433
433
434 kwargs['experiment_keys'] = ['template', 'radar', 'name', 'start_time', 'end_time']
434 kwargs['experiment_keys'] = ['template', 'radar', 'name', 'start_time', 'end_time']
435 kwargs['experiment'] = experiment
435 kwargs['experiment'] = experiment
436
436
437 kwargs['configuration_keys'] = ['device__name', 'device__device_type', 'device__ip_address', 'device__port_address']
437 kwargs['configuration_keys'] = ['device__name', 'device__device_type', 'device__ip_address', 'device__port_address']
438 kwargs['configurations'] = configurations
438 kwargs['configurations'] = configurations
439
439
440 kwargs['title'] = 'Experiment'
440 kwargs['title'] = 'Experiment'
441 kwargs['suptitle'] = 'Details'
441 kwargs['suptitle'] = 'Details'
442
442
443 kwargs['button'] = 'Add Configuration'
443 kwargs['button'] = 'Add Configuration'
444
444
445 ###### SIDEBAR ######
445 ###### SIDEBAR ######
446 kwargs.update(sidebar(experiment=experiment))
446 kwargs.update(sidebar(experiment=experiment))
447
447
448 return render(request, 'experiment.html', kwargs)
448 return render(request, 'experiment.html', kwargs)
449
449
450
450
451 def experiment_new(request, id_camp=None):
451 def experiment_new(request, id_camp=None):
452
452
453 kwargs = {}
453 kwargs = {}
454
454
455 if request.method == 'GET':
455 if request.method == 'GET':
456 if 'template' in request.GET:
456 if 'template' in request.GET:
457 if request.GET['template']=='0':
457 if request.GET['template']=='0':
458 form = NewForm(initial={'create_from':2},
458 form = NewForm(initial={'create_from':2},
459 template_choices=Experiment.objects.filter(template=True).values_list('id', 'name'))
459 template_choices=Experiment.objects.filter(template=True).values_list('id', 'name'))
460 else:
460 else:
461 kwargs['button'] = 'Create'
461 kwargs['button'] = 'Create'
462 kwargs['configurations'] = Configuration.objects.filter(experiment=request.GET['template'])
462 kwargs['configurations'] = Configuration.objects.filter(experiment=request.GET['template'])
463 kwargs['configuration_keys'] = ['name', 'device__name', 'device__ip_address', 'device__port_address']
463 kwargs['configuration_keys'] = ['name', 'device__name', 'device__ip_address', 'device__port_address']
464 exp=Experiment.objects.get(pk=request.GET['template'])
464 exp=Experiment.objects.get(pk=request.GET['template'])
465 form = ExperimentForm(instance=exp,
465 form = ExperimentForm(instance=exp,
466 initial={'name': '{} [{:%Y/%m/%d}]'.format(exp.name, datetime.now()),
466 initial={'name': '{} [{:%Y/%m/%d}]'.format(exp.name, datetime.now()),
467 'template': False})
467 'template': False})
468 elif 'blank' in request.GET:
468 elif 'blank' in request.GET:
469 kwargs['button'] = 'Create'
469 kwargs['button'] = 'Create'
470 form = ExperimentForm()
470 form = ExperimentForm()
471 else:
471 else:
472 form = NewForm()
472 form = NewForm()
473
473
474 if request.method == 'POST':
474 if request.method == 'POST':
475 form = ExperimentForm(request.POST)
475 form = ExperimentForm(request.POST)
476 if form.is_valid():
476 if form.is_valid():
477 experiment = form.save()
477 experiment = form.save()
478
478
479 if 'template' in request.GET:
479 if 'template' in request.GET:
480 configurations = Configuration.objects.filter(experiment=request.GET['template'], type=0)
480 configurations = Configuration.objects.filter(experiment=request.GET['template'], type=0)
481 for conf in configurations:
481 for conf in configurations:
482 conf.clone(experiment=experiment, template=False)
482 conf.clone(experiment=experiment, template=False)
483
483
484 return redirect('url_experiment', id_exp=experiment.id)
484 return redirect('url_experiment', id_exp=experiment.id)
485
485
486 kwargs['form'] = form
486 kwargs['form'] = form
487 kwargs['title'] = 'Experiment'
487 kwargs['title'] = 'Experiment'
488 kwargs['suptitle'] = 'New'
488 kwargs['suptitle'] = 'New'
489
489
490 return render(request, 'experiment_edit.html', kwargs)
490 return render(request, 'experiment_edit.html', kwargs)
491
491
492
492
493 def experiment_edit(request, id_exp):
493 def experiment_edit(request, id_exp):
494
494
495 experiment = get_object_or_404(Experiment, pk=id_exp)
495 experiment = get_object_or_404(Experiment, pk=id_exp)
496
496
497 if request.method == 'GET':
497 if request.method == 'GET':
498 form = ExperimentForm(instance=experiment)
498 form = ExperimentForm(instance=experiment)
499
499
500 if request.method=='POST':
500 if request.method=='POST':
501 form = ExperimentForm(request.POST, instance=experiment)
501 form = ExperimentForm(request.POST, instance=experiment)
502
502
503 if form.is_valid():
503 if form.is_valid():
504 experiment = form.save()
504 experiment = form.save()
505 return redirect('url_experiment', id_exp=experiment.id)
505 return redirect('url_experiment', id_exp=experiment.id)
506
506
507 kwargs = {}
507 kwargs = {}
508 kwargs['form'] = form
508 kwargs['form'] = form
509 kwargs['title'] = 'Experiment'
509 kwargs['title'] = 'Experiment'
510 kwargs['suptitle'] = 'Edit'
510 kwargs['suptitle'] = 'Edit'
511 kwargs['button'] = 'Update'
511 kwargs['button'] = 'Update'
512
512
513 return render(request, 'experiment_edit.html', kwargs)
513 return render(request, 'experiment_edit.html', kwargs)
514
514
515
515
516 def experiment_delete(request, id_exp):
516 def experiment_delete(request, id_exp):
517
517
518 experiment = get_object_or_404(Experiment, pk=id_exp)
518 experiment = get_object_or_404(Experiment, pk=id_exp)
519
519
520 if request.method=='POST':
520 if request.method=='POST':
521 if request.user.is_staff:
521 if request.user.is_staff:
522 for conf in Configuration.objects.filter(experiment=experiment):
522 for conf in Configuration.objects.filter(experiment=experiment):
523 conf.delete()
523 conf.delete()
524 experiment.delete()
524 experiment.delete()
525 return redirect('url_experiments')
525 return redirect('url_experiments')
526
526
527 messages.error(request, 'Not enough permission to delete this object')
527 messages.error(request, 'Not enough permission to delete this object')
528 return redirect(experiment.get_absolute_url())
528 return redirect(experiment.get_absolute_url())
529
529
530 kwargs = {
530 kwargs = {
531 'title': 'Delete',
531 'title': 'Delete',
532 'suptitle': 'Experiment',
532 'suptitle': 'Experiment',
533 'object': experiment,
533 'object': experiment,
534 'previous': experiment.get_absolute_url(),
534 'previous': experiment.get_absolute_url(),
535 'delete': True
535 'delete': True
536 }
536 }
537
537
538 return render(request, 'confirm.html', kwargs)
538 return render(request, 'confirm.html', kwargs)
539
539
540
540
541 def dev_confs(request):
541 def dev_confs(request):
542
542
543 configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment')
543 configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment')
544
544
545 kwargs = {}
545 kwargs = {}
546
546
547 kwargs['configuration_keys'] = ['device', 'experiment', 'type', 'programmed_date']
547 kwargs['configuration_keys'] = ['device', 'experiment', 'type', 'programmed_date']
548 kwargs['configurations'] = configurations
548 kwargs['configurations'] = configurations
549
549
550 kwargs['title'] = 'Configuration'
550 kwargs['title'] = 'Configuration'
551 kwargs['suptitle'] = 'List'
551 kwargs['suptitle'] = 'List'
552
552
553 return render(request, 'dev_confs.html', kwargs)
553 return render(request, 'dev_confs.html', kwargs)
554
554
555
555
556 def dev_conf(request, id_conf):
556 def dev_conf(request, id_conf):
557
557
558 conf = get_object_or_404(Configuration, pk=id_conf)
558 conf = get_object_or_404(Configuration, pk=id_conf)
559
559
560 return redirect(conf.get_absolute_url())
560 return redirect(conf.get_absolute_url())
561
561
562
562
563 def dev_conf_new(request, id_exp=0, id_dev=0):
563 def dev_conf_new(request, id_exp=0, id_dev=0):
564
564
565 initial = {}
565 initial = {}
566
566
567 if id_exp<>0:
567 if id_exp<>0:
568 initial['experiment'] = id_exp
568 initial['experiment'] = id_exp
569
569
570 if id_dev<>0:
570 if id_dev<>0:
571 initial['device'] = id_dev
571 initial['device'] = id_dev
572
572
573 if request.method == 'GET':
573 if request.method == 'GET':
574 if id_dev==0:
574 if id_dev==0:
575 form = ConfigurationForm(initial=initial)
575 form = ConfigurationForm(initial=initial)
576 else:
576 else:
577 device = Device.objects.get(pk=id_dev)
577 device = Device.objects.get(pk=id_dev)
578 DevConfForm = CONF_FORMS[device.device_type.name]
578 DevConfForm = CONF_FORMS[device.device_type.name]
579
579
580 form = DevConfForm(initial=initial)
580 form = DevConfForm(initial=initial)
581
581
582 if request.method == 'POST':
582 if request.method == 'POST':
583
583
584 device = Device.objects.get(pk=request.POST['device'])
584 device = Device.objects.get(pk=request.POST['device'])
585 DevConfForm = CONF_FORMS[device.device_type.name]
585 DevConfForm = CONF_FORMS[device.device_type.name]
586
586
587 form = DevConfForm(request.POST)
587 form = DevConfForm(request.POST)
588
588
589 if form.is_valid():
589 if form.is_valid():
590 dev_conf = form.save()
590 dev_conf = form.save()
591
591
592 return redirect('url_dev_confs')
592 return redirect('url_dev_confs')
593
593
594 kwargs = {}
594 kwargs = {}
595 kwargs['id_exp'] = id_exp
595 kwargs['id_exp'] = id_exp
596 kwargs['form'] = form
596 kwargs['form'] = form
597 kwargs['title'] = 'Configuration'
597 kwargs['title'] = 'Configuration'
598 kwargs['suptitle'] = 'New'
598 kwargs['suptitle'] = 'New'
599 kwargs['button'] = 'Create'
599 kwargs['button'] = 'Create'
600
600
601 return render(request, 'dev_conf_edit.html', kwargs)
601 return render(request, 'dev_conf_edit.html', kwargs)
602
602
603
603
604 def dev_conf_edit(request, id_conf):
604 def dev_conf_edit(request, id_conf):
605
605
606 conf = get_object_or_404(Configuration, pk=id_conf)
606 conf = get_object_or_404(Configuration, pk=id_conf)
607
607
608 DevConfModel = CONF_MODELS[conf.device.device_type.name]
608 DevConfModel = CONF_MODELS[conf.device.device_type.name]
609 DevConfForm = CONF_FORMS[conf.device.device_type.name]
609 DevConfForm = CONF_FORMS[conf.device.device_type.name]
610
610
611 dev_conf = DevConfModel.objects.get(pk=id_conf)
611 dev_conf = DevConfModel.objects.get(pk=id_conf)
612
612
613 if request.method=='GET':
613 if request.method=='GET':
614 form = DevConfForm(instance=dev_conf)
614 form = DevConfForm(instance=dev_conf)
615
615
616 if request.method=='POST':
616 if request.method=='POST':
617 form = DevConfForm(request.POST, instance=dev_conf)
617 form = DevConfForm(request.POST, instance=dev_conf)
618
618
619 if form.is_valid():
619 if form.is_valid():
620 form.save()
620 form.save()
621 return redirect('url_dev_conf', id_conf=id_conf)
621 return redirect('url_dev_conf', id_conf=id_conf)
622
622
623 kwargs = {}
623 kwargs = {}
624 kwargs['form'] = form
624 kwargs['form'] = form
625 kwargs['title'] = 'Device Configuration'
625 kwargs['title'] = 'Device Configuration'
626 kwargs['suptitle'] = 'Edit'
626 kwargs['suptitle'] = 'Edit'
627 kwargs['button'] = 'Update'
627 kwargs['button'] = 'Update'
628
628
629 ###### SIDEBAR ######
629 ###### SIDEBAR ######
630 kwargs.update(sidebar(conf=conf))
630 kwargs.update(sidebar(conf=conf))
631
631
632 return render(request, '%s_conf_edit.html' % conf.device.device_type.name, kwargs)
632 return render(request, '%s_conf_edit.html' % conf.device.device_type.name, kwargs)
633
633
634
634
635 def dev_conf_start(request, id_conf):
635 def dev_conf_start(request, id_conf):
636
636
637 conf = get_object_or_404(Configuration, pk=id_conf)
637 conf = get_object_or_404(Configuration, pk=id_conf)
638
638
639 DevConfModel = CONF_MODELS[conf.device.device_type.name]
639 DevConfModel = CONF_MODELS[conf.device.device_type.name]
640
640
641 conf = DevConfModel.objects.get(pk=id_conf)
641 conf = DevConfModel.objects.get(pk=id_conf)
642
642
643 if conf.start_device():
643 if conf.start_device():
644 messages.success(request, conf.message)
644 messages.success(request, conf.message)
645 else:
645 else:
646 messages.error(request, conf.message)
646 messages.error(request, conf.message)
647
647
648 conf.status_device()
648 conf.status_device()
649
649
650 return redirect(conf.get_absolute_url())
650 return redirect(conf.get_absolute_url())
651
651
652
652
653 def dev_conf_stop(request, id_conf):
653 def dev_conf_stop(request, id_conf):
654
654
655 conf = get_object_or_404(Configuration, pk=id_conf)
655 conf = get_object_or_404(Configuration, pk=id_conf)
656
656
657 DevConfModel = CONF_MODELS[conf.device.device_type.name]
657 DevConfModel = CONF_MODELS[conf.device.device_type.name]
658
658
659 conf = DevConfModel.objects.get(pk=id_conf)
659 conf = DevConfModel.objects.get(pk=id_conf)
660
660
661 if conf.stop_device():
661 if conf.stop_device():
662 messages.success(request, conf.message)
662 messages.success(request, conf.message)
663 else:
663 else:
664 messages.error(request, conf.message)
664 messages.error(request, conf.message)
665
665
666 conf.status_device()
666 conf.status_device()
667
667
668 return redirect(conf.get_absolute_url())
668 return redirect(conf.get_absolute_url())
669
669
670
670
671 def dev_conf_status(request, id_conf):
671 def dev_conf_status(request, id_conf):
672
672
673 conf = get_object_or_404(Configuration, pk=id_conf)
673 conf = get_object_or_404(Configuration, pk=id_conf)
674
674
675 DevConfModel = CONF_MODELS[conf.device.device_type.name]
675 DevConfModel = CONF_MODELS[conf.device.device_type.name]
676
676
677 conf = DevConfModel.objects.get(pk=id_conf)
677 conf = DevConfModel.objects.get(pk=id_conf)
678
678
679 if conf.status_device():
679 if conf.status_device():
680 messages.success(request, conf.message)
680 messages.success(request, conf.message)
681 else:
681 else:
682 messages.error(request, conf.message)
682 messages.error(request, conf.message)
683
683
684 return redirect(conf.get_absolute_url())
684 return redirect(conf.get_absolute_url())
685
685
686
686
687 def dev_conf_write(request, id_conf):
687 def dev_conf_write(request, id_conf):
688
688
689 conf = get_object_or_404(Configuration, pk=id_conf)
689 conf = get_object_or_404(Configuration, pk=id_conf)
690
690
691 DevConfModel = CONF_MODELS[conf.device.device_type.name]
691 DevConfModel = CONF_MODELS[conf.device.device_type.name]
692
692
693 conf = DevConfModel.objects.get(pk=id_conf)
693 conf = DevConfModel.objects.get(pk=id_conf)
694
694
695 answer = conf.write_device()
695 answer = conf.write_device()
696 conf.status_device()
696 conf.status_device()
697
697
698 if answer:
698 if answer:
699 messages.success(request, conf.message)
699 messages.success(request, conf.message)
700
700
701 #Creating a historical configuration
701 #Creating a historical configuration
702 conf.clone(type=0, template=False)
702 conf.clone(type=0, template=False)
703
703
704 #Original configuration
704 #Original configuration
705 conf = DevConfModel.objects.get(pk=id_conf)
705 conf = DevConfModel.objects.get(pk=id_conf)
706 else:
706 else:
707 messages.error(request, conf.message)
707 messages.error(request, conf.message)
708
708
709 return redirect(conf.get_absolute_url())
709 return redirect(conf.get_absolute_url())
710
710
711
711
712 def dev_conf_read(request, id_conf):
712 def dev_conf_read(request, id_conf):
713
713
714 conf = get_object_or_404(Configuration, pk=id_conf)
714 conf = get_object_or_404(Configuration, pk=id_conf)
715
715
716 DevConfModel = CONF_MODELS[conf.device.device_type.name]
716 DevConfModel = CONF_MODELS[conf.device.device_type.name]
717 DevConfForm = CONF_FORMS[conf.device.device_type.name]
717 DevConfForm = CONF_FORMS[conf.device.device_type.name]
718
718
719 conf = DevConfModel.objects.get(pk=id_conf)
719 conf = DevConfModel.objects.get(pk=id_conf)
720
720
721 if request.method=='GET':
721 if request.method=='GET':
722
722
723 parms = conf.read_device()
723 parms = conf.read_device()
724 conf.status_device()
724 conf.status_device()
725
725
726 if not parms:
726 if not parms:
727 messages.error(request, conf.message)
727 messages.error(request, conf.message)
728 return redirect(conf.get_absolute_url())
728 return redirect(conf.get_absolute_url())
729
729
730 form = DevConfForm(initial=parms, instance=conf)
730 form = DevConfForm(initial=parms, instance=conf)
731
731
732 if request.method=='POST':
732 if request.method=='POST':
733 form = DevConfForm(request.POST, instance=conf)
733 form = DevConfForm(request.POST, instance=conf)
734
734
735 if form.is_valid():
735 if form.is_valid():
736 form.save()
736 form.save()
737 return redirect(conf.get_absolute_url())
737 return redirect(conf.get_absolute_url())
738
738
739 messages.error(request, "Parameters could not be saved")
739 messages.error(request, "Parameters could not be saved")
740
740
741 kwargs = {}
741 kwargs = {}
742 kwargs['id_dev'] = conf.id
742 kwargs['id_dev'] = conf.id
743 kwargs['form'] = form
743 kwargs['form'] = form
744 kwargs['title'] = 'Device Configuration'
744 kwargs['title'] = 'Device Configuration'
745 kwargs['suptitle'] = 'Parameters read from device'
745 kwargs['suptitle'] = 'Parameters read from device'
746 kwargs['button'] = 'Save'
746 kwargs['button'] = 'Save'
747
747
748 ###### SIDEBAR ######
748 ###### SIDEBAR ######
749 kwargs.update(sidebar(conf=conf))
749 kwargs.update(sidebar(conf=conf))
750
750
751 return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs)
751 return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs)
752
752
753
753
754 def dev_conf_import(request, id_conf):
754 def dev_conf_import(request, id_conf):
755
755
756 conf = get_object_or_404(Configuration, pk=id_conf)
756 conf = get_object_or_404(Configuration, pk=id_conf)
757
757
758 DevConfModel = CONF_MODELS[conf.device.device_type.name]
758 DevConfModel = CONF_MODELS[conf.device.device_type.name]
759 DevConfForm = CONF_FORMS[conf.device.device_type.name]
759 DevConfForm = CONF_FORMS[conf.device.device_type.name]
760 conf = DevConfModel.objects.get(pk=id_conf)
760 conf = DevConfModel.objects.get(pk=id_conf)
761
761
762 if request.method == 'GET':
762 if request.method == 'GET':
763 file_form = UploadFileForm()
763 file_form = UploadFileForm()
764
764
765 if request.method == 'POST':
765 if request.method == 'POST':
766 file_form = UploadFileForm(request.POST, request.FILES)
766 file_form = UploadFileForm(request.POST, request.FILES)
767
767
768 if file_form.is_valid():
768 if file_form.is_valid():
769
769
770 parms = conf.import_from_file(request.FILES['file'])
770 parms = conf.import_from_file(request.FILES['file'])
771
771
772 if parms:
772 if parms:
773 messages.success(request, "Parameters imported from: '%s'." %request.FILES['file'].name)
773 messages.success(request, "Parameters imported from: '%s'." %request.FILES['file'].name)
774 form = DevConfForm(initial=parms, instance=conf)
774 form = DevConfForm(initial=parms, instance=conf)
775
775
776 kwargs = {}
776 kwargs = {}
777 kwargs['id_dev'] = conf.id
777 kwargs['id_dev'] = conf.id
778 kwargs['form'] = form
778 kwargs['form'] = form
779 kwargs['title'] = 'Device Configuration'
779 kwargs['title'] = 'Device Configuration'
780 kwargs['suptitle'] = 'Parameters imported'
780 kwargs['suptitle'] = 'Parameters imported'
781 kwargs['button'] = 'Save'
781 kwargs['button'] = 'Save'
782 kwargs['action'] = conf.get_absolute_url_edit()
782 kwargs['action'] = conf.get_absolute_url_edit()
783 kwargs['previous'] = conf.get_absolute_url()
783 kwargs['previous'] = conf.get_absolute_url()
784
784
785 ###### SIDEBAR ######
785 ###### SIDEBAR ######
786 kwargs.update(sidebar(conf=conf))
786 kwargs.update(sidebar(conf=conf))
787
787
788 return render(request, '%s_conf_edit.html' % conf.device.device_type.name, kwargs)
788 return render(request, '%s_conf_edit.html' % conf.device.device_type.name, kwargs)
789
789
790 messages.error(request, "Could not import parameters from file")
790 messages.error(request, "Could not import parameters from file")
791
791
792 kwargs = {}
792 kwargs = {}
793 kwargs['id_dev'] = conf.id
793 kwargs['id_dev'] = conf.id
794 kwargs['title'] = 'Device Configuration'
794 kwargs['title'] = 'Device Configuration'
795 kwargs['form'] = file_form
795 kwargs['form'] = file_form
796 kwargs['suptitle'] = 'Importing file'
796 kwargs['suptitle'] = 'Importing file'
797 kwargs['button'] = 'Import'
797 kwargs['button'] = 'Import'
798
798
799 kwargs.update(sidebar(conf=conf))
799 kwargs.update(sidebar(conf=conf))
800
800
801 return render(request, 'dev_conf_import.html', kwargs)
801 return render(request, 'dev_conf_import.html', kwargs)
802
802
803
803
804 def dev_conf_export(request, id_conf):
804 def dev_conf_export(request, id_conf):
805
805
806 conf = get_object_or_404(Configuration, pk=id_conf)
806 conf = get_object_or_404(Configuration, pk=id_conf)
807
807
808 DevConfModel = CONF_MODELS[conf.device.device_type.name]
808 DevConfModel = CONF_MODELS[conf.device.device_type.name]
809
809
810 conf = DevConfModel.objects.get(pk=id_conf)
810 conf = DevConfModel.objects.get(pk=id_conf)
811
811
812 if request.method == 'GET':
812 if request.method == 'GET':
813 file_form = DownloadFileForm(conf.device.device_type.name)
813 file_form = DownloadFileForm(conf.device.device_type.name)
814
814
815 if request.method == 'POST':
815 if request.method == 'POST':
816 file_form = DownloadFileForm(conf.device.device_type.name, request.POST)
816 file_form = DownloadFileForm(conf.device.device_type.name, request.POST)
817
817
818 if file_form.is_valid():
818 if file_form.is_valid():
819 fields = conf.export_to_file(format = file_form.cleaned_data['format'])
819 fields = conf.export_to_file(format = file_form.cleaned_data['format'])
820
820
821 response = HttpResponse(content_type=fields['content_type'])
821 response = HttpResponse(content_type=fields['content_type'])
822 response['Content-Disposition'] = 'attachment; filename="%s"' %fields['filename']
822 response['Content-Disposition'] = 'attachment; filename="%s"' %fields['filename']
823 response.write(fields['content'])
823 response.write(fields['content'])
824
824
825 return response
825 return response
826
826
827 messages.error(request, "Could not export parameters")
827 messages.error(request, "Could not export parameters")
828
828
829 kwargs = {}
829 kwargs = {}
830 kwargs['id_dev'] = conf.id
830 kwargs['id_dev'] = conf.id
831 kwargs['title'] = 'Device Configuration'
831 kwargs['title'] = 'Device Configuration'
832 kwargs['form'] = file_form
832 kwargs['form'] = file_form
833 kwargs['suptitle'] = 'Exporting file'
833 kwargs['suptitle'] = 'Exporting file'
834 kwargs['button'] = 'Export'
834 kwargs['button'] = 'Export'
835
835
836 return render(request, 'dev_conf_export.html', kwargs)
836 return render(request, 'dev_conf_export.html', kwargs)
837
837
838
838
839 def dev_conf_delete(request, id_conf):
839 def dev_conf_delete(request, id_conf):
840
840
841 conf = get_object_or_404(Configuration, pk=id_conf)
841 conf = get_object_or_404(Configuration, pk=id_conf)
842
842
843 if request.method=='POST':
843 if request.method=='POST':
844 if request.user.is_staff:
844 if request.user.is_staff:
845 conf.delete()
845 conf.delete()
846 return redirect('url_dev_confs')
846 return redirect('url_dev_confs')
847
847
848 messages.error(request, 'Not enough permission to delete this object')
848 messages.error(request, 'Not enough permission to delete this object')
849 return redirect(conf.get_absolute_url())
849 return redirect(conf.get_absolute_url())
850
850
851 kwargs = {
851 kwargs = {
852 'title': 'Delete',
852 'title': 'Delete',
853 'suptitle': 'Experiment',
853 'suptitle': 'Experiment',
854 'object': conf,
854 'object': conf,
855 'previous': conf.get_absolute_url(),
855 'previous': conf.get_absolute_url(),
856 'delete': True
856 'delete': True
857 }
857 }
858
858
859 return render(request, 'confirm.html', kwargs)
859 return render(request, 'confirm.html', kwargs)
860
860
861
861
862 def sidebar(**kwargs):
862 def sidebar(**kwargs):
863
863
864 side_data = {}
864 side_data = {}
865
865
866 conf = kwargs.get('conf', None)
866 conf = kwargs.get('conf', None)
867 experiment = kwargs.get('experiment', None)
867 experiment = kwargs.get('experiment', None)
868
868
869 if not experiment:
869 if not experiment:
870 experiment = conf.experiment
870 experiment = conf.experiment
871
871
872 if experiment:
872 if experiment:
873 side_data['experiment'] = experiment
873 side_data['experiment'] = experiment
874 campaign = experiment.campaign_set.all()
874 campaign = experiment.campaign_set.all()
875 if campaign:
875 if campaign:
876 side_data['campaign'] = campaign[0]
876 side_data['campaign'] = campaign[0]
877 experiments = campaign[0].experiments.all()
877 experiments = campaign[0].experiments.all()
878 else:
878 else:
879 experiments = [experiment]
879 experiments = [experiment]
880 configurations = experiment.configuration_set.filter(type=0)
880 configurations = experiment.configuration_set.filter(type=0)
881 side_data['side_experiments'] = experiments
881 side_data['side_experiments'] = experiments
882 side_data['side_configurations'] = configurations
882 side_data['side_configurations'] = configurations
883
883
884 return side_data
884 return side_data
885
885
886
886
887 def operation(request, id_camp=None):
887 def operation(request, id_camp=None):
888
888
889 if not id_camp:
889 if not id_camp:
890 campaigns = Campaign.objects.all().order_by('-start_date')
890 campaigns = Campaign.objects.all().order_by('-start_date')
891
891
892 if not campaigns:
892 if not campaigns:
893 kwargs = {}
893 kwargs = {}
894 kwargs['title'] = 'No Campaigns'
894 kwargs['title'] = 'No Campaigns'
895 kwargs['suptitle'] = 'Empty'
895 kwargs['suptitle'] = 'Empty'
896 return render(request, 'operation.html', kwargs)
896 return render(request, 'operation.html', kwargs)
897
897
898 id_camp = campaigns[0].id
898 id_camp = campaigns[0].id
899
899
900 campaign = get_object_or_404(Campaign, pk = id_camp)
900 campaign = get_object_or_404(Campaign, pk = id_camp)
901
901
902 if request.method=='GET':
902 if request.method=='GET':
903 form = OperationForm(initial={'campaign': campaign.id}, length = 5)
903 form = OperationForm(initial={'campaign': campaign.id}, length = 5)
904
904
905 if request.method=='POST':
905 if request.method=='POST':
906 form = OperationForm(request.POST, initial={'campaign':campaign.id}, length = 5)
906 form = OperationForm(request.POST, initial={'campaign':campaign.id}, length = 5)
907
907
908 if form.is_valid():
908 if form.is_valid():
909 return redirect('url_operation', id_camp=campaign.id)
909 return redirect('url_operation', id_camp=campaign.id)
910 #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct()
910 #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct()
911 experiments = Experiment.objects.filter(campaign__pk=campaign.id)
911 experiments = Experiment.objects.filter(campaign__pk=campaign.id)
912 #for exs in experiments:
912 #for exs in experiments:
913 # exs.get_status()
913 # exs.get_status()
914 locations= Location.objects.filter(experiment=experiments).distinct()
914 locations= Location.objects.filter(experiment=experiments).distinct()
915 #experiments = [Experiment.objects.filter(location__pk=location.id).filter(campaign__pk=campaign.id) for location in locations]
915 #experiments = [Experiment.objects.filter(location__pk=location.id).filter(campaign__pk=campaign.id) for location in locations]
916 kwargs = {}
916 kwargs = {}
917 #---Campaign
917 #---Campaign
918 kwargs['campaign'] = campaign
918 kwargs['campaign'] = campaign
919 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
919 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
920 #---Experiment
920 #---Experiment
921 keys = ['id', 'name', 'start_time', 'end_time', 'status']
921 keys = ['id', 'name', 'start_time', 'end_time', 'status']
922 kwargs['experiment_keys'] = keys[1:]
922 kwargs['experiment_keys'] = keys[1:]
923 kwargs['experiments'] = experiments
923 kwargs['experiments'] = experiments
924 #---Radar
924 #---Radar
925 kwargs['locations'] = locations
925 kwargs['locations'] = locations
926 #---Else
926 #---Else
927 kwargs['title'] = 'Campaign'
927 kwargs['title'] = 'Campaign'
928 kwargs['suptitle'] = campaign.name
928 kwargs['suptitle'] = campaign.name
929 kwargs['form'] = form
929 kwargs['form'] = form
930 kwargs['button'] = 'Search'
930 kwargs['button'] = 'Search'
931 kwargs['details'] = True
931 kwargs['details'] = True
932 kwargs['search_button'] = True
932 kwargs['search_button'] = True
933
933
934 return render(request, 'operation.html', kwargs)
934 return render(request, 'operation.html', kwargs)
935
935
936
936
937 def operation_search(request, id_camp=None):
937 def operation_search(request, id_camp=None):
938
938
939
939
940 if not id_camp:
940 if not id_camp:
941 campaigns = Campaign.objects.all().order_by('-start_date')
941 campaigns = Campaign.objects.all().order_by('-start_date')
942
942
943 if not campaigns:
943 if not campaigns:
944 return render(request, 'operation.html', {})
944 return render(request, 'operation.html', {})
945
945
946 id_camp = campaigns[0].id
946 id_camp = campaigns[0].id
947 campaign = get_object_or_404(Campaign, pk = id_camp)
947 campaign = get_object_or_404(Campaign, pk = id_camp)
948
948
949 if request.method=='GET':
949 if request.method=='GET':
950 form = OperationSearchForm(initial={'campaign': campaign.id})
950 form = OperationSearchForm(initial={'campaign': campaign.id})
951
951
952 if request.method=='POST':
952 if request.method=='POST':
953 form = OperationSearchForm(request.POST, initial={'campaign':campaign.id})
953 form = OperationSearchForm(request.POST, initial={'campaign':campaign.id})
954
954
955 if form.is_valid():
955 if form.is_valid():
956 return redirect('url_operation', id_camp=campaign.id)
956 return redirect('url_operation', id_camp=campaign.id)
957
957
958 #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct()
958 #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct()
959 experiments = Experiment.objects.filter(campaign__pk=campaign.id)
959 experiments = Experiment.objects.filter(campaign__pk=campaign.id)
960 #for exs in experiments:
960 #for exs in experiments:
961 # exs.get_status()
961 # exs.get_status()
962 locations= Location.objects.filter(experiment=experiments).distinct()
962 locations= Location.objects.filter(experiment=experiments).distinct()
963 form = OperationSearchForm(initial={'campaign': campaign.id})
963 form = OperationSearchForm(initial={'campaign': campaign.id})
964
964
965 kwargs = {}
965 kwargs = {}
966 #---Campaign
966 #---Campaign
967 kwargs['campaign'] = campaign
967 kwargs['campaign'] = campaign
968 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
968 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
969 #---Experiment
969 #---Experiment
970 keys = ['id', 'name', 'start_time', 'end_time', 'status']
970 keys = ['id', 'name', 'start_time', 'end_time', 'status']
971 kwargs['experiment_keys'] = keys[1:]
971 kwargs['experiment_keys'] = keys[1:]
972 kwargs['experiments'] = experiments
972 kwargs['experiments'] = experiments
973 #---Radar
973 #---Radar
974 kwargs['locations'] = locations
974 kwargs['locations'] = locations
975 #---Else
975 #---Else
976 kwargs['title'] = 'Campaign'
976 kwargs['title'] = 'Campaign'
977 kwargs['suptitle'] = campaign.name
977 kwargs['suptitle'] = campaign.name
978 kwargs['form'] = form
978 kwargs['form'] = form
979 kwargs['button'] = 'Select'
979 kwargs['button'] = 'Select'
980 kwargs['details'] = True
980 kwargs['details'] = True
981 kwargs['search_button'] = False
981 kwargs['search_button'] = False
982
982
983 return render(request, 'operation.html', kwargs)
983 return render(request, 'operation.html', kwargs)
984
984
985
985
986 def radar_play(request, id_camp, id_radar):
986 def radar_play(request, id_camp, id_radar):
987 campaign = get_object_or_404(Campaign, pk = id_camp)
987 campaign = get_object_or_404(Campaign, pk = id_camp)
988 radar = get_object_or_404(Location, pk = id_radar)
988 radar = get_object_or_404(Location, pk = id_radar)
989 today = datetime.today()
989 today = datetime.today()
990 now = today.time()
990 now = today.time()
991
991
992 #--Clear Old Experiments From RunningExperiment Object
992 #--Clear Old Experiments From RunningExperiment Object
993 running_experiment = RunningExperiment.objects.get(radar=radar)
993 running_experiment = RunningExperiment.objects.get(radar=radar)
994 if running_experiment:
994 if running_experiment:
995 running_experiment.running_experiment.clear()
995 running_experiment.running_experiment.clear()
996 running_experiment.save()
996 running_experiment.save()
997
997
998 #--If campaign datetime is ok:
998 #--If campaign datetime is ok:
999 if today >= campaign.start_date and today <= campaign.end_date:
999 if today >= campaign.start_date and today <= campaign.end_date:
1000 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
1000 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
1001 for exp in experiments:
1001 for exp in experiments:
1002 #--If experiment time is ok:
1002 #--If experiment time is ok:
1003 if now >= exp.start_time and now <= exp.end_time:
1003 if now >= exp.start_time and now <= exp.end_time:
1004 configurations = Configuration.objects.filter(experiment = exp)
1004 configurations = Configuration.objects.filter(experiment = exp)
1005 for conf in configurations:
1005 for conf in configurations:
1006 if 'cgs' in conf.device.device_type.name:
1006 if 'cgs' in conf.device.device_type.name:
1007 conf.status_device()
1007 conf.status_device()
1008 else:
1008 else:
1009 answer = conf.start_device()
1009 answer = conf.start_device()
1010 conf.status_device()
1010 conf.status_device()
1011 #--Running Experiment
1011 #--Running Experiment
1012 old_running_experiment = RunningExperiment.objects.get(radar=radar)
1012 old_running_experiment = RunningExperiment.objects.get(radar=radar)
1013 #--If RunningExperiment element exists
1013 #--If RunningExperiment element exists
1014 if old_running_experiment:
1014 if old_running_experiment:
1015 old_running_experiment.running_experiment.add(exp)
1015 old_running_experiment.running_experiment.add(exp)
1016 old_running_experiment.status = 3
1016 old_running_experiment.status = 3
1017 old_running_experiment.save()
1017 old_running_experiment.save()
1018 #--Create a new Running_Experiment Object
1018 #--Create a new Running_Experiment Object
1019 else:
1019 else:
1020 new_running_experiment = RunningExperiment(
1020 new_running_experiment = RunningExperiment(
1021 radar = radar,
1021 radar = radar,
1022 status = 3,
1022 status = 3,
1023 )
1023 )
1024 new_running_experiment.save()
1024 new_running_experiment.save()
1025 new_running_experiment.running_experiment.add(exp)
1025 new_running_experiment.running_experiment.add(exp)
1026 new_running_experiment.save()
1026 new_running_experiment.save()
1027
1027
1028 if answer:
1028 if answer:
1029 messages.success(request, conf.message)
1029 messages.success(request, conf.message)
1030 exp.status=2
1030 exp.status=2
1031 exp.save()
1031 exp.save()
1032 else:
1032 else:
1033 messages.error(request, conf.message)
1033 messages.error(request, conf.message)
1034 else:
1034 else:
1035 if exp.status == 1 or exp.status == 3:
1035 if exp.status == 1 or exp.status == 3:
1036 exp.status=3
1036 exp.status=3
1037 exp.save()
1037 exp.save()
1038
1038
1039
1039
1040 route = request.META['HTTP_REFERER']
1040 route = request.META['HTTP_REFERER']
1041 route = str(route)
1041 route = str(route)
1042 if 'search' in route:
1042 if 'search' in route:
1043 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1043 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1044 else:
1044 else:
1045 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1045 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1046
1046
1047
1047
1048 def radar_stop(request, id_camp, id_radar):
1048 def radar_stop(request, id_camp, id_radar):
1049 campaign = get_object_or_404(Campaign, pk = id_camp)
1049 campaign = get_object_or_404(Campaign, pk = id_camp)
1050 radar = get_object_or_404(Location, pk = id_radar)
1050 radar = get_object_or_404(Location, pk = id_radar)
1051 today = datetime.today()
1051 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
1052 now = today.time()
1052
1053 for exp in experiments:
1054 configurations = Configuration.objects.filter(experiment = exp)
1055 for conf in configurations:
1056 if 'cgs' in conf.device.device_type.name:
1057 conf.status_device()
1058 else:
1059 answer = conf.stop_device()
1060 conf.status_device()
1061
1062 if answer:
1063 messages.success(request, conf.message)
1064 exp.status=1
1065 exp.save()
1066 else:
1067 messages.error(request, conf.message)
1068
1053
1069
1054 route = request.META['HTTP_REFERER']
1070 route = request.META['HTTP_REFERER']
1055 route = str(route)
1071 route = str(route)
1056 if 'search' in route:
1072 if 'search' in route:
1057 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1073 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1058 else:
1074 else:
1059 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1075 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1060
1076
1061
1077
1062 def radar_refresh(request, id_camp, id_radar):
1078 def radar_refresh(request, id_camp, id_radar):
1063
1079
1064 campaign = get_object_or_404(Campaign, pk = id_camp)
1080 campaign = get_object_or_404(Campaign, pk = id_camp)
1065 radar = get_object_or_404(Location, pk = id_radar)
1081 radar = get_object_or_404(Location, pk = id_radar)
1066 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
1082 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
1067 for exs in experiments:
1083 for exs in experiments:
1068 exs.get_status()
1084 exs.get_status()
1069
1085
1070 route = request.META['HTTP_REFERER']
1086 route = request.META['HTTP_REFERER']
1071 route = str(route)
1087 route = str(route)
1072 if 'search' in route:
1088 if 'search' in route:
1073 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1089 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1074 else:
1090 else:
1075 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1091 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1076
1092
General Comments 0
You need to be logged in to leave comments. Login now