##// END OF EJS Templates
DDS new conf: default values (dev_conf_edit.html) (views.py)...
Fiorella Quino -
r99:52b7f66cbf30
parent child
Show More
@@ -1,38 +1,109
1 {% extends "base_edit.html" %}
1 {% extends "base_edit.html" %}
2 {% load bootstrap3 %}
2 {% load bootstrap3 %}
3 {% load static %}
3 {% load static %}
4 {% load main_tags %}
4 {% load main_tags %}
5
5
6
6
7 {% block extra-js%}
7 {% block extra-js%}
8
8
9 {% if id_exp %}
9 {% if id_exp %}
10
10
11 <script type="text/javascript">
11 <script type="text/javascript">
12
12
13 $("#id_device").change(function() {
13 $("#id_device").change(function() {
14 var url = "{% url 'url_add_dev_conf' id_exp %}";
14 var url = "{% url 'url_add_dev_conf' id_exp %}";
15 document.location = url+ $(this).val() + "/?name=" + $("#id_name").val();
15 document.location = url+ $(this).val() + "/?name=" + $("#id_name").val();
16 });
16 });
17
17
18 $('#id_create_from').change(function() {
18 $('#id_create_from').change(function() {
19 var url = "{% url 'url_add_dev_conf' id_exp %}";
19 var url = "{% url 'url_add_dev_conf' id_exp %}";
20 if ($(this).val()=="2"){
20 if ($(this).val()=="2"){
21 document.location = url+"?template=0";
21 document.location = url+"?template=0";
22 }else if ($(this).val()=="1"){
22 }else if ($(this).val()=="1"){
23 document.location = url+"?blank=0";
23 document.location = url+"?blank=0";
24 }else{
24 }else{
25 document.location = url;
25 document.location = url;
26 }
26 }
27 });
27 });
28
28
29 $('#id_choose_template').change(function() {
29 $('#id_choose_template').change(function() {
30 var url = "{% url 'url_add_dev_conf' id_exp %}";
30 var url = "{% url 'url_add_dev_conf' id_exp %}";
31 document.location = url+"?template="+$(this).val();
31 document.location = url+"?template="+$(this).val();
32 });
32 });
33
33
34 </script>
34 </script>
35
35
36 {% endif %}
36 {% endif %}
37
37
38 {% if dds_device %}
39 <script src="{% static 'js/dds_conversion.js' %}"></script>
40 <script type="text/javascript">
41
42 $("#id_clock").on('change', function() {
43 updateFrequencies();
44 });
45
46 $("#id_multiplier").on('change', function() {
47 updateFrequencies();
48 });
49
50 $("#id_frequencyA_Mhz").on('change', function() {
51 updateBinaryFrequencies();
52 });
53
54 $("#id_frequencyA").on('change', function() {
55 updateFrequencies();
56 });
57
58 $("#id_frequencyB_Mhz").on('change', function() {
59 updateBinaryFrequencies();
60 });
61
62 $("#id_frequencyB").on('change', function() {
63 updateFrequencies();
64 });
65
66 function updateBinaryFrequencies() {
67
68 var clock = $("#id_clock").val();
69 var multiplier = $("#id_multiplier").val();
70 var freq = $("#id_frequencyA_Mhz").val();
71 var freq_mod = $("#id_frequencyB_Mhz").val();
72
73 var mclock = clock*multiplier;
74
75 var freq_bin = freq2Binary(mclock, freq);
76 var freq_mod_bin = freq2Binary(mclock, freq_mod);
77
78 $("#id_frequencyA").val(freq_bin);
79 $("#id_frequencyB").val(freq_mod_bin);
80
81 freq = binary2Freq(mclock, freq_bin);
82 freq_mod = binary2Freq(mclock, freq_mod_bin);
83
84 $("#id_frequencyA_Mhz").val(freq);
85 $("#id_frequencyB_Mhz").val(freq_mod);
86
87 }
88
89 function updateFrequencies() {
90
91 var clock = $("#id_clock").val();
92 var multiplier = $("#id_multiplier").val();
93 var freq_bin = $("#id_frequencyA").val();
94 var freq_mod_bin = $("#id_frequencyB").val();
95
96 var mclock = clock*multiplier;
97
98 var freq = binary2Freq(mclock, freq_bin);
99 var freq_mod = binary2Freq(mclock, freq_mod_bin);
100
101 $("#id_frequencyA_Mhz").val(freq);
102 $("#id_frequencyB_Mhz").val(freq_mod);
103
104 }
105
106 </script>
107 {% endif %}
108
38 {% endblock %} No newline at end of file
109 {% endblock %}
@@ -1,1094 +1,1099
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 if id_dev != 0:
602 device = Device.objects.get(pk=id_dev)
603 if 'dds' in device.device_type.name:
604 kwargs['dds_device'] = True
605
601 return render(request, 'dev_conf_edit.html', kwargs)
606 return render(request, 'dev_conf_edit.html', kwargs)
602
607
603
608
604 def dev_conf_edit(request, id_conf):
609 def dev_conf_edit(request, id_conf):
605
610
606 conf = get_object_or_404(Configuration, pk=id_conf)
611 conf = get_object_or_404(Configuration, pk=id_conf)
607
612
608 DevConfModel = CONF_MODELS[conf.device.device_type.name]
613 DevConfModel = CONF_MODELS[conf.device.device_type.name]
609 DevConfForm = CONF_FORMS[conf.device.device_type.name]
614 DevConfForm = CONF_FORMS[conf.device.device_type.name]
610
615
611 dev_conf = DevConfModel.objects.get(pk=id_conf)
616 dev_conf = DevConfModel.objects.get(pk=id_conf)
612
617
613 if request.method=='GET':
618 if request.method=='GET':
614 form = DevConfForm(instance=dev_conf)
619 form = DevConfForm(instance=dev_conf)
615
620
616 if request.method=='POST':
621 if request.method=='POST':
617 form = DevConfForm(request.POST, instance=dev_conf)
622 form = DevConfForm(request.POST, instance=dev_conf)
618
623
619 if form.is_valid():
624 if form.is_valid():
620 form.save()
625 form.save()
621 return redirect('url_dev_conf', id_conf=id_conf)
626 return redirect('url_dev_conf', id_conf=id_conf)
622
627
623 kwargs = {}
628 kwargs = {}
624 kwargs['form'] = form
629 kwargs['form'] = form
625 kwargs['title'] = 'Device Configuration'
630 kwargs['title'] = 'Device Configuration'
626 kwargs['suptitle'] = 'Edit'
631 kwargs['suptitle'] = 'Edit'
627 kwargs['button'] = 'Update'
632 kwargs['button'] = 'Update'
628
633
629 ###### SIDEBAR ######
634 ###### SIDEBAR ######
630 kwargs.update(sidebar(conf=conf))
635 kwargs.update(sidebar(conf=conf))
631
636
632 return render(request, '%s_conf_edit.html' % conf.device.device_type.name, kwargs)
637 return render(request, '%s_conf_edit.html' % conf.device.device_type.name, kwargs)
633
638
634
639
635 def dev_conf_start(request, id_conf):
640 def dev_conf_start(request, id_conf):
636
641
637 conf = get_object_or_404(Configuration, pk=id_conf)
642 conf = get_object_or_404(Configuration, pk=id_conf)
638
643
639 DevConfModel = CONF_MODELS[conf.device.device_type.name]
644 DevConfModel = CONF_MODELS[conf.device.device_type.name]
640
645
641 conf = DevConfModel.objects.get(pk=id_conf)
646 conf = DevConfModel.objects.get(pk=id_conf)
642
647
643 if conf.start_device():
648 if conf.start_device():
644 messages.success(request, conf.message)
649 messages.success(request, conf.message)
645 else:
650 else:
646 messages.error(request, conf.message)
651 messages.error(request, conf.message)
647
652
648 conf.status_device()
653 conf.status_device()
649
654
650 return redirect(conf.get_absolute_url())
655 return redirect(conf.get_absolute_url())
651
656
652
657
653 def dev_conf_stop(request, id_conf):
658 def dev_conf_stop(request, id_conf):
654
659
655 conf = get_object_or_404(Configuration, pk=id_conf)
660 conf = get_object_or_404(Configuration, pk=id_conf)
656
661
657 DevConfModel = CONF_MODELS[conf.device.device_type.name]
662 DevConfModel = CONF_MODELS[conf.device.device_type.name]
658
663
659 conf = DevConfModel.objects.get(pk=id_conf)
664 conf = DevConfModel.objects.get(pk=id_conf)
660
665
661 if conf.stop_device():
666 if conf.stop_device():
662 messages.success(request, conf.message)
667 messages.success(request, conf.message)
663 else:
668 else:
664 messages.error(request, conf.message)
669 messages.error(request, conf.message)
665
670
666 conf.status_device()
671 conf.status_device()
667
672
668 return redirect(conf.get_absolute_url())
673 return redirect(conf.get_absolute_url())
669
674
670
675
671 def dev_conf_status(request, id_conf):
676 def dev_conf_status(request, id_conf):
672
677
673 conf = get_object_or_404(Configuration, pk=id_conf)
678 conf = get_object_or_404(Configuration, pk=id_conf)
674
679
675 DevConfModel = CONF_MODELS[conf.device.device_type.name]
680 DevConfModel = CONF_MODELS[conf.device.device_type.name]
676
681
677 conf = DevConfModel.objects.get(pk=id_conf)
682 conf = DevConfModel.objects.get(pk=id_conf)
678
683
679 if conf.status_device():
684 if conf.status_device():
680 messages.success(request, conf.message)
685 messages.success(request, conf.message)
681 else:
686 else:
682 messages.error(request, conf.message)
687 messages.error(request, conf.message)
683
688
684 return redirect(conf.get_absolute_url())
689 return redirect(conf.get_absolute_url())
685
690
686
691
687 def dev_conf_write(request, id_conf):
692 def dev_conf_write(request, id_conf):
688
693
689 conf = get_object_or_404(Configuration, pk=id_conf)
694 conf = get_object_or_404(Configuration, pk=id_conf)
690
695
691 DevConfModel = CONF_MODELS[conf.device.device_type.name]
696 DevConfModel = CONF_MODELS[conf.device.device_type.name]
692
697
693 conf = DevConfModel.objects.get(pk=id_conf)
698 conf = DevConfModel.objects.get(pk=id_conf)
694
699
695 answer = conf.write_device()
700 answer = conf.write_device()
696 conf.status_device()
701 conf.status_device()
697
702
698 if answer:
703 if answer:
699 messages.success(request, conf.message)
704 messages.success(request, conf.message)
700
705
701 #Creating a historical configuration
706 #Creating a historical configuration
702 conf.clone(type=0, template=False)
707 conf.clone(type=0, template=False)
703
708
704 #Original configuration
709 #Original configuration
705 conf = DevConfModel.objects.get(pk=id_conf)
710 conf = DevConfModel.objects.get(pk=id_conf)
706 else:
711 else:
707 messages.error(request, conf.message)
712 messages.error(request, conf.message)
708
713
709 return redirect(conf.get_absolute_url())
714 return redirect(conf.get_absolute_url())
710
715
711
716
712 def dev_conf_read(request, id_conf):
717 def dev_conf_read(request, id_conf):
713
718
714 conf = get_object_or_404(Configuration, pk=id_conf)
719 conf = get_object_or_404(Configuration, pk=id_conf)
715
720
716 DevConfModel = CONF_MODELS[conf.device.device_type.name]
721 DevConfModel = CONF_MODELS[conf.device.device_type.name]
717 DevConfForm = CONF_FORMS[conf.device.device_type.name]
722 DevConfForm = CONF_FORMS[conf.device.device_type.name]
718
723
719 conf = DevConfModel.objects.get(pk=id_conf)
724 conf = DevConfModel.objects.get(pk=id_conf)
720
725
721 if request.method=='GET':
726 if request.method=='GET':
722
727
723 parms = conf.read_device()
728 parms = conf.read_device()
724 conf.status_device()
729 conf.status_device()
725
730
726 if not parms:
731 if not parms:
727 messages.error(request, conf.message)
732 messages.error(request, conf.message)
728 return redirect(conf.get_absolute_url())
733 return redirect(conf.get_absolute_url())
729
734
730 form = DevConfForm(initial=parms, instance=conf)
735 form = DevConfForm(initial=parms, instance=conf)
731
736
732 if request.method=='POST':
737 if request.method=='POST':
733 form = DevConfForm(request.POST, instance=conf)
738 form = DevConfForm(request.POST, instance=conf)
734
739
735 if form.is_valid():
740 if form.is_valid():
736 form.save()
741 form.save()
737 return redirect(conf.get_absolute_url())
742 return redirect(conf.get_absolute_url())
738
743
739 messages.error(request, "Parameters could not be saved")
744 messages.error(request, "Parameters could not be saved")
740
745
741 kwargs = {}
746 kwargs = {}
742 kwargs['id_dev'] = conf.id
747 kwargs['id_dev'] = conf.id
743 kwargs['form'] = form
748 kwargs['form'] = form
744 kwargs['title'] = 'Device Configuration'
749 kwargs['title'] = 'Device Configuration'
745 kwargs['suptitle'] = 'Parameters read from device'
750 kwargs['suptitle'] = 'Parameters read from device'
746 kwargs['button'] = 'Save'
751 kwargs['button'] = 'Save'
747
752
748 ###### SIDEBAR ######
753 ###### SIDEBAR ######
749 kwargs.update(sidebar(conf=conf))
754 kwargs.update(sidebar(conf=conf))
750
755
751 return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs)
756 return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs)
752
757
753
758
754 def dev_conf_import(request, id_conf):
759 def dev_conf_import(request, id_conf):
755
760
756 conf = get_object_or_404(Configuration, pk=id_conf)
761 conf = get_object_or_404(Configuration, pk=id_conf)
757
762
758 DevConfModel = CONF_MODELS[conf.device.device_type.name]
763 DevConfModel = CONF_MODELS[conf.device.device_type.name]
759 DevConfForm = CONF_FORMS[conf.device.device_type.name]
764 DevConfForm = CONF_FORMS[conf.device.device_type.name]
760 conf = DevConfModel.objects.get(pk=id_conf)
765 conf = DevConfModel.objects.get(pk=id_conf)
761
766
762 if request.method == 'GET':
767 if request.method == 'GET':
763 file_form = UploadFileForm()
768 file_form = UploadFileForm()
764
769
765 if request.method == 'POST':
770 if request.method == 'POST':
766 file_form = UploadFileForm(request.POST, request.FILES)
771 file_form = UploadFileForm(request.POST, request.FILES)
767
772
768 if file_form.is_valid():
773 if file_form.is_valid():
769
774
770 parms = conf.import_from_file(request.FILES['file'])
775 parms = conf.import_from_file(request.FILES['file'])
771
776
772 if parms:
777 if parms:
773 messages.success(request, "Parameters imported from: '%s'." %request.FILES['file'].name)
778 messages.success(request, "Parameters imported from: '%s'." %request.FILES['file'].name)
774 form = DevConfForm(initial=parms, instance=conf)
779 form = DevConfForm(initial=parms, instance=conf)
775
780
776 kwargs = {}
781 kwargs = {}
777 kwargs['id_dev'] = conf.id
782 kwargs['id_dev'] = conf.id
778 kwargs['form'] = form
783 kwargs['form'] = form
779 kwargs['title'] = 'Device Configuration'
784 kwargs['title'] = 'Device Configuration'
780 kwargs['suptitle'] = 'Parameters imported'
785 kwargs['suptitle'] = 'Parameters imported'
781 kwargs['button'] = 'Save'
786 kwargs['button'] = 'Save'
782 kwargs['action'] = conf.get_absolute_url_edit()
787 kwargs['action'] = conf.get_absolute_url_edit()
783 kwargs['previous'] = conf.get_absolute_url()
788 kwargs['previous'] = conf.get_absolute_url()
784
789
785 ###### SIDEBAR ######
790 ###### SIDEBAR ######
786 kwargs.update(sidebar(conf=conf))
791 kwargs.update(sidebar(conf=conf))
787
792
788 return render(request, '%s_conf_edit.html' % conf.device.device_type.name, kwargs)
793 return render(request, '%s_conf_edit.html' % conf.device.device_type.name, kwargs)
789
794
790 messages.error(request, "Could not import parameters from file")
795 messages.error(request, "Could not import parameters from file")
791
796
792 kwargs = {}
797 kwargs = {}
793 kwargs['id_dev'] = conf.id
798 kwargs['id_dev'] = conf.id
794 kwargs['title'] = 'Device Configuration'
799 kwargs['title'] = 'Device Configuration'
795 kwargs['form'] = file_form
800 kwargs['form'] = file_form
796 kwargs['suptitle'] = 'Importing file'
801 kwargs['suptitle'] = 'Importing file'
797 kwargs['button'] = 'Import'
802 kwargs['button'] = 'Import'
798
803
799 kwargs.update(sidebar(conf=conf))
804 kwargs.update(sidebar(conf=conf))
800
805
801 return render(request, 'dev_conf_import.html', kwargs)
806 return render(request, 'dev_conf_import.html', kwargs)
802
807
803
808
804 def dev_conf_export(request, id_conf):
809 def dev_conf_export(request, id_conf):
805
810
806 conf = get_object_or_404(Configuration, pk=id_conf)
811 conf = get_object_or_404(Configuration, pk=id_conf)
807
812
808 DevConfModel = CONF_MODELS[conf.device.device_type.name]
813 DevConfModel = CONF_MODELS[conf.device.device_type.name]
809
814
810 conf = DevConfModel.objects.get(pk=id_conf)
815 conf = DevConfModel.objects.get(pk=id_conf)
811
816
812 if request.method == 'GET':
817 if request.method == 'GET':
813 file_form = DownloadFileForm(conf.device.device_type.name)
818 file_form = DownloadFileForm(conf.device.device_type.name)
814
819
815 if request.method == 'POST':
820 if request.method == 'POST':
816 file_form = DownloadFileForm(conf.device.device_type.name, request.POST)
821 file_form = DownloadFileForm(conf.device.device_type.name, request.POST)
817
822
818 if file_form.is_valid():
823 if file_form.is_valid():
819 fields = conf.export_to_file(format = file_form.cleaned_data['format'])
824 fields = conf.export_to_file(format = file_form.cleaned_data['format'])
820
825
821 response = HttpResponse(content_type=fields['content_type'])
826 response = HttpResponse(content_type=fields['content_type'])
822 response['Content-Disposition'] = 'attachment; filename="%s"' %fields['filename']
827 response['Content-Disposition'] = 'attachment; filename="%s"' %fields['filename']
823 response.write(fields['content'])
828 response.write(fields['content'])
824
829
825 return response
830 return response
826
831
827 messages.error(request, "Could not export parameters")
832 messages.error(request, "Could not export parameters")
828
833
829 kwargs = {}
834 kwargs = {}
830 kwargs['id_dev'] = conf.id
835 kwargs['id_dev'] = conf.id
831 kwargs['title'] = 'Device Configuration'
836 kwargs['title'] = 'Device Configuration'
832 kwargs['form'] = file_form
837 kwargs['form'] = file_form
833 kwargs['suptitle'] = 'Exporting file'
838 kwargs['suptitle'] = 'Exporting file'
834 kwargs['button'] = 'Export'
839 kwargs['button'] = 'Export'
835
840
836 return render(request, 'dev_conf_export.html', kwargs)
841 return render(request, 'dev_conf_export.html', kwargs)
837
842
838
843
839 def dev_conf_delete(request, id_conf):
844 def dev_conf_delete(request, id_conf):
840
845
841 conf = get_object_or_404(Configuration, pk=id_conf)
846 conf = get_object_or_404(Configuration, pk=id_conf)
842
847
843 if request.method=='POST':
848 if request.method=='POST':
844 if request.user.is_staff:
849 if request.user.is_staff:
845 conf.delete()
850 conf.delete()
846 return redirect('url_dev_confs')
851 return redirect('url_dev_confs')
847
852
848 messages.error(request, 'Not enough permission to delete this object')
853 messages.error(request, 'Not enough permission to delete this object')
849 return redirect(conf.get_absolute_url())
854 return redirect(conf.get_absolute_url())
850
855
851 kwargs = {
856 kwargs = {
852 'title': 'Delete',
857 'title': 'Delete',
853 'suptitle': 'Experiment',
858 'suptitle': 'Experiment',
854 'object': conf,
859 'object': conf,
855 'previous': conf.get_absolute_url(),
860 'previous': conf.get_absolute_url(),
856 'delete': True
861 'delete': True
857 }
862 }
858
863
859 return render(request, 'confirm.html', kwargs)
864 return render(request, 'confirm.html', kwargs)
860
865
861
866
862 def sidebar(**kwargs):
867 def sidebar(**kwargs):
863
868
864 side_data = {}
869 side_data = {}
865
870
866 conf = kwargs.get('conf', None)
871 conf = kwargs.get('conf', None)
867 experiment = kwargs.get('experiment', None)
872 experiment = kwargs.get('experiment', None)
868
873
869 if not experiment:
874 if not experiment:
870 experiment = conf.experiment
875 experiment = conf.experiment
871
876
872 if experiment:
877 if experiment:
873 side_data['experiment'] = experiment
878 side_data['experiment'] = experiment
874 campaign = experiment.campaign_set.all()
879 campaign = experiment.campaign_set.all()
875 if campaign:
880 if campaign:
876 side_data['campaign'] = campaign[0]
881 side_data['campaign'] = campaign[0]
877 experiments = campaign[0].experiments.all()
882 experiments = campaign[0].experiments.all()
878 else:
883 else:
879 experiments = [experiment]
884 experiments = [experiment]
880 configurations = experiment.configuration_set.filter(type=0)
885 configurations = experiment.configuration_set.filter(type=0)
881 side_data['side_experiments'] = experiments
886 side_data['side_experiments'] = experiments
882 side_data['side_configurations'] = configurations
887 side_data['side_configurations'] = configurations
883
888
884 return side_data
889 return side_data
885
890
886
891
887 def operation(request, id_camp=None):
892 def operation(request, id_camp=None):
888
893
889 if not id_camp:
894 if not id_camp:
890 campaigns = Campaign.objects.all().order_by('-start_date')
895 campaigns = Campaign.objects.all().order_by('-start_date')
891
896
892 if not campaigns:
897 if not campaigns:
893 kwargs = {}
898 kwargs = {}
894 kwargs['title'] = 'No Campaigns'
899 kwargs['title'] = 'No Campaigns'
895 kwargs['suptitle'] = 'Empty'
900 kwargs['suptitle'] = 'Empty'
896 return render(request, 'operation.html', kwargs)
901 return render(request, 'operation.html', kwargs)
897
902
898 id_camp = campaigns[0].id
903 id_camp = campaigns[0].id
899
904
900 campaign = get_object_or_404(Campaign, pk = id_camp)
905 campaign = get_object_or_404(Campaign, pk = id_camp)
901
906
902 if request.method=='GET':
907 if request.method=='GET':
903 form = OperationForm(initial={'campaign': campaign.id}, length = 5)
908 form = OperationForm(initial={'campaign': campaign.id}, length = 5)
904
909
905 if request.method=='POST':
910 if request.method=='POST':
906 form = OperationForm(request.POST, initial={'campaign':campaign.id}, length = 5)
911 form = OperationForm(request.POST, initial={'campaign':campaign.id}, length = 5)
907
912
908 if form.is_valid():
913 if form.is_valid():
909 return redirect('url_operation', id_camp=campaign.id)
914 return redirect('url_operation', id_camp=campaign.id)
910 #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct()
915 #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct()
911 experiments = Experiment.objects.filter(campaign__pk=campaign.id)
916 experiments = Experiment.objects.filter(campaign__pk=campaign.id)
912 #for exs in experiments:
917 #for exs in experiments:
913 # exs.get_status()
918 # exs.get_status()
914 locations= Location.objects.filter(experiment=experiments).distinct()
919 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]
920 #experiments = [Experiment.objects.filter(location__pk=location.id).filter(campaign__pk=campaign.id) for location in locations]
916 kwargs = {}
921 kwargs = {}
917 #---Campaign
922 #---Campaign
918 kwargs['campaign'] = campaign
923 kwargs['campaign'] = campaign
919 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
924 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
920 #---Experiment
925 #---Experiment
921 keys = ['id', 'name', 'start_time', 'end_time', 'status']
926 keys = ['id', 'name', 'start_time', 'end_time', 'status']
922 kwargs['experiment_keys'] = keys[1:]
927 kwargs['experiment_keys'] = keys[1:]
923 kwargs['experiments'] = experiments
928 kwargs['experiments'] = experiments
924 #---Radar
929 #---Radar
925 kwargs['locations'] = locations
930 kwargs['locations'] = locations
926 #---Else
931 #---Else
927 kwargs['title'] = 'Campaign'
932 kwargs['title'] = 'Campaign'
928 kwargs['suptitle'] = campaign.name
933 kwargs['suptitle'] = campaign.name
929 kwargs['form'] = form
934 kwargs['form'] = form
930 kwargs['button'] = 'Search'
935 kwargs['button'] = 'Search'
931 kwargs['details'] = True
936 kwargs['details'] = True
932 kwargs['search_button'] = True
937 kwargs['search_button'] = True
933
938
934 return render(request, 'operation.html', kwargs)
939 return render(request, 'operation.html', kwargs)
935
940
936
941
937 def operation_search(request, id_camp=None):
942 def operation_search(request, id_camp=None):
938
943
939
944
940 if not id_camp:
945 if not id_camp:
941 campaigns = Campaign.objects.all().order_by('-start_date')
946 campaigns = Campaign.objects.all().order_by('-start_date')
942
947
943 if not campaigns:
948 if not campaigns:
944 return render(request, 'operation.html', {})
949 return render(request, 'operation.html', {})
945
950
946 id_camp = campaigns[0].id
951 id_camp = campaigns[0].id
947 campaign = get_object_or_404(Campaign, pk = id_camp)
952 campaign = get_object_or_404(Campaign, pk = id_camp)
948
953
949 if request.method=='GET':
954 if request.method=='GET':
950 form = OperationSearchForm(initial={'campaign': campaign.id})
955 form = OperationSearchForm(initial={'campaign': campaign.id})
951
956
952 if request.method=='POST':
957 if request.method=='POST':
953 form = OperationSearchForm(request.POST, initial={'campaign':campaign.id})
958 form = OperationSearchForm(request.POST, initial={'campaign':campaign.id})
954
959
955 if form.is_valid():
960 if form.is_valid():
956 return redirect('url_operation', id_camp=campaign.id)
961 return redirect('url_operation', id_camp=campaign.id)
957
962
958 #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct()
963 #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct()
959 experiments = Experiment.objects.filter(campaign__pk=campaign.id)
964 experiments = Experiment.objects.filter(campaign__pk=campaign.id)
960 #for exs in experiments:
965 #for exs in experiments:
961 # exs.get_status()
966 # exs.get_status()
962 locations= Location.objects.filter(experiment=experiments).distinct()
967 locations= Location.objects.filter(experiment=experiments).distinct()
963 form = OperationSearchForm(initial={'campaign': campaign.id})
968 form = OperationSearchForm(initial={'campaign': campaign.id})
964
969
965 kwargs = {}
970 kwargs = {}
966 #---Campaign
971 #---Campaign
967 kwargs['campaign'] = campaign
972 kwargs['campaign'] = campaign
968 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
973 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
969 #---Experiment
974 #---Experiment
970 keys = ['id', 'name', 'start_time', 'end_time', 'status']
975 keys = ['id', 'name', 'start_time', 'end_time', 'status']
971 kwargs['experiment_keys'] = keys[1:]
976 kwargs['experiment_keys'] = keys[1:]
972 kwargs['experiments'] = experiments
977 kwargs['experiments'] = experiments
973 #---Radar
978 #---Radar
974 kwargs['locations'] = locations
979 kwargs['locations'] = locations
975 #---Else
980 #---Else
976 kwargs['title'] = 'Campaign'
981 kwargs['title'] = 'Campaign'
977 kwargs['suptitle'] = campaign.name
982 kwargs['suptitle'] = campaign.name
978 kwargs['form'] = form
983 kwargs['form'] = form
979 kwargs['button'] = 'Select'
984 kwargs['button'] = 'Select'
980 kwargs['details'] = True
985 kwargs['details'] = True
981 kwargs['search_button'] = False
986 kwargs['search_button'] = False
982
987
983 return render(request, 'operation.html', kwargs)
988 return render(request, 'operation.html', kwargs)
984
989
985
990
986 def radar_play(request, id_camp, id_radar):
991 def radar_play(request, id_camp, id_radar):
987 campaign = get_object_or_404(Campaign, pk = id_camp)
992 campaign = get_object_or_404(Campaign, pk = id_camp)
988 radar = get_object_or_404(Location, pk = id_radar)
993 radar = get_object_or_404(Location, pk = id_radar)
989 today = datetime.today()
994 today = datetime.today()
990 now = today.time()
995 now = today.time()
991
996
992 #--Clear Old Experiments From RunningExperiment Object
997 #--Clear Old Experiments From RunningExperiment Object
993 running_experiment = RunningExperiment.objects.filter(radar=radar)
998 running_experiment = RunningExperiment.objects.filter(radar=radar)
994 if running_experiment:
999 if running_experiment:
995 running_experiment = running_experiment[0]
1000 running_experiment = running_experiment[0]
996 running_experiment.running_experiment.clear()
1001 running_experiment.running_experiment.clear()
997 running_experiment.save()
1002 running_experiment.save()
998
1003
999 #--If campaign datetime is ok:
1004 #--If campaign datetime is ok:
1000 if today >= campaign.start_date and today <= campaign.end_date:
1005 if today >= campaign.start_date and today <= campaign.end_date:
1001 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
1006 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
1002 for exp in experiments:
1007 for exp in experiments:
1003 #--If experiment time is ok:
1008 #--If experiment time is ok:
1004 if now >= exp.start_time and now <= exp.end_time:
1009 if now >= exp.start_time and now <= exp.end_time:
1005 configurations = Configuration.objects.filter(experiment = exp)
1010 configurations = Configuration.objects.filter(experiment = exp)
1006 for conf in configurations:
1011 for conf in configurations:
1007 if 'cgs' in conf.device.device_type.name:
1012 if 'cgs' in conf.device.device_type.name:
1008 conf.status_device()
1013 conf.status_device()
1009 else:
1014 else:
1010 answer = conf.start_device()
1015 answer = conf.start_device()
1011 conf.status_device()
1016 conf.status_device()
1012 #--Running Experiment
1017 #--Running Experiment
1013 old_running_experiment = RunningExperiment.objects.filter(radar=radar)
1018 old_running_experiment = RunningExperiment.objects.filter(radar=radar)
1014 #--If RunningExperiment element exists
1019 #--If RunningExperiment element exists
1015 if old_running_experiment:
1020 if old_running_experiment:
1016 old_running_experiment = old_running_experiment[0]
1021 old_running_experiment = old_running_experiment[0]
1017 old_running_experiment.running_experiment.add(exp)
1022 old_running_experiment.running_experiment.add(exp)
1018 old_running_experiment.status = 3
1023 old_running_experiment.status = 3
1019 old_running_experiment.save()
1024 old_running_experiment.save()
1020 #--Create a new Running_Experiment Object
1025 #--Create a new Running_Experiment Object
1021 else:
1026 else:
1022 new_running_experiment = RunningExperiment(
1027 new_running_experiment = RunningExperiment(
1023 radar = radar,
1028 radar = radar,
1024 status = 3,
1029 status = 3,
1025 )
1030 )
1026 new_running_experiment.save()
1031 new_running_experiment.save()
1027 new_running_experiment.running_experiment.add(exp)
1032 new_running_experiment.running_experiment.add(exp)
1028 new_running_experiment.save()
1033 new_running_experiment.save()
1029
1034
1030 if answer:
1035 if answer:
1031 messages.success(request, conf.message)
1036 messages.success(request, conf.message)
1032 exp.status=2
1037 exp.status=2
1033 exp.save()
1038 exp.save()
1034 else:
1039 else:
1035 messages.error(request, conf.message)
1040 messages.error(request, conf.message)
1036 else:
1041 else:
1037 if exp.status == 1 or exp.status == 3:
1042 if exp.status == 1 or exp.status == 3:
1038 exp.status=3
1043 exp.status=3
1039 exp.save()
1044 exp.save()
1040
1045
1041
1046
1042 route = request.META['HTTP_REFERER']
1047 route = request.META['HTTP_REFERER']
1043 route = str(route)
1048 route = str(route)
1044 if 'search' in route:
1049 if 'search' in route:
1045 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1050 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1046 else:
1051 else:
1047 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1052 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1048
1053
1049
1054
1050 def radar_stop(request, id_camp, id_radar):
1055 def radar_stop(request, id_camp, id_radar):
1051 campaign = get_object_or_404(Campaign, pk = id_camp)
1056 campaign = get_object_or_404(Campaign, pk = id_camp)
1052 radar = get_object_or_404(Location, pk = id_radar)
1057 radar = get_object_or_404(Location, pk = id_radar)
1053 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
1058 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
1054
1059
1055 for exp in experiments:
1060 for exp in experiments:
1056 configurations = Configuration.objects.filter(experiment = exp)
1061 configurations = Configuration.objects.filter(experiment = exp)
1057 for conf in configurations:
1062 for conf in configurations:
1058 if 'cgs' in conf.device.device_type.name:
1063 if 'cgs' in conf.device.device_type.name:
1059 conf.status_device()
1064 conf.status_device()
1060 else:
1065 else:
1061 answer = conf.stop_device()
1066 answer = conf.stop_device()
1062 conf.status_device()
1067 conf.status_device()
1063
1068
1064 if answer:
1069 if answer:
1065 messages.success(request, conf.message)
1070 messages.success(request, conf.message)
1066 exp.status=1
1071 exp.status=1
1067 exp.save()
1072 exp.save()
1068 else:
1073 else:
1069 messages.error(request, conf.message)
1074 messages.error(request, conf.message)
1070
1075
1071
1076
1072 route = request.META['HTTP_REFERER']
1077 route = request.META['HTTP_REFERER']
1073 route = str(route)
1078 route = str(route)
1074 if 'search' in route:
1079 if 'search' in route:
1075 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1080 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1076 else:
1081 else:
1077 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1082 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1078
1083
1079
1084
1080 def radar_refresh(request, id_camp, id_radar):
1085 def radar_refresh(request, id_camp, id_radar):
1081
1086
1082 campaign = get_object_or_404(Campaign, pk = id_camp)
1087 campaign = get_object_or_404(Campaign, pk = id_camp)
1083 radar = get_object_or_404(Location, pk = id_radar)
1088 radar = get_object_or_404(Location, pk = id_radar)
1084 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
1089 experiments = Experiment.objects.filter(campaign=campaign).filter(location=radar)
1085 for exs in experiments:
1090 for exs in experiments:
1086 exs.get_status()
1091 exs.get_status()
1087
1092
1088 route = request.META['HTTP_REFERER']
1093 route = request.META['HTTP_REFERER']
1089 route = str(route)
1094 route = str(route)
1090 if 'search' in route:
1095 if 'search' in route:
1091 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1096 return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp]))
1092 else:
1097 else:
1093 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1098 return HttpResponseRedirect(reverse('url_operation', args=[id_camp]))
1094
1099
General Comments 0
You need to be logged in to leave comments. Login now