##// END OF EJS Templates
Task #961: actualizar el numero de modulos conectados...
Fiorella Quino -
r259:d1310c2c240f
parent child
Show More
@@ -1,440 +1,442
1 from django.shortcuts import render_to_response
1 from django.shortcuts import render_to_response
2 from django.template import RequestContext
2 from django.template import RequestContext
3 from django.shortcuts import redirect, render, get_object_or_404
3 from django.shortcuts import redirect, render, get_object_or_404
4 from django.contrib import messages
4 from django.contrib import messages
5 from django.conf import settings
5 from django.conf import settings
6 from django.http import HttpResponse
6 from django.http import HttpResponse
7 from django.core.urlresolvers import reverse
7 from django.core.urlresolvers import reverse
8
8
9 from datetime import datetime
9 from datetime import datetime
10 from time import sleep
10 from time import sleep
11 import os
11 import os
12
12
13 from apps.main.models import Device, Configuration, Experiment
13 from apps.main.models import Device, Configuration, Experiment
14 from apps.main.views import sidebar
14 from apps.main.views import sidebar
15
15
16 from .models import ABSConfiguration, ABSBeam
16 from .models import ABSConfiguration, ABSBeam
17 from .forms import ABSConfigurationForm, ABSBeamEditForm, ABSBeamAddForm, ABSImportForm
17 from .forms import ABSConfigurationForm, ABSBeamEditForm, ABSBeamAddForm, ABSImportForm
18
18
19 from .utils.overJroShow import overJroShow
19 from .utils.overJroShow import overJroShow
20 from .utils.OverJRO import OverJRO
20 from .utils.OverJRO import OverJRO
21 # Create your views here.
21 # Create your views here.
22 import json, ast
22 import json, ast
23
23
24
24
25 def get_values_from_form(form_data):
25 def get_values_from_form(form_data):
26
26
27 sublistup = []
27 sublistup = []
28 sublistdown = []
28 sublistdown = []
29 subtxlistup = []
29 subtxlistup = []
30 subtxlistdown = []
30 subtxlistdown = []
31 subrxlistup = []
31 subrxlistup = []
32 subrxlistdown = []
32 subrxlistdown = []
33
33
34 up_values_list = []
34 up_values_list = []
35 down_values_list = []
35 down_values_list = []
36 up_txvalues_list = []
36 up_txvalues_list = []
37 down_txvalues_list = []
37 down_txvalues_list = []
38 up_rxvalues_list = []
38 up_rxvalues_list = []
39 down_rxvalues_list = []
39 down_rxvalues_list = []
40
40
41 values_list = {}
41 values_list = {}
42 cont = 1
42 cont = 1
43
43
44 for i in range(1,65):
44 for i in range(1,65):
45 x = float(form_data['abs_up'+str(i)])
45 x = float(form_data['abs_up'+str(i)])
46 y = float(form_data['abs_down'+str(i)])
46 y = float(form_data['abs_down'+str(i)])
47 sublistup.append(x)
47 sublistup.append(x)
48 sublistdown.append(y)
48 sublistdown.append(y)
49
49
50 if str(i) in form_data.getlist('uptx_checks'):
50 if str(i) in form_data.getlist('uptx_checks'):
51 subtxlistup.append(1)
51 subtxlistup.append(1)
52 else:
52 else:
53 subtxlistup.append(0)
53 subtxlistup.append(0)
54 if str(i) in form_data.getlist('downtx_checks'):
54 if str(i) in form_data.getlist('downtx_checks'):
55 subtxlistdown.append(1)
55 subtxlistdown.append(1)
56 else:
56 else:
57 subtxlistdown.append(0)
57 subtxlistdown.append(0)
58
58
59 if str(i) in form_data.getlist('uprx_checks'):
59 if str(i) in form_data.getlist('uprx_checks'):
60 subrxlistup.append(1)
60 subrxlistup.append(1)
61 else:
61 else:
62 subrxlistup.append(0)
62 subrxlistup.append(0)
63 if str(i) in form_data.getlist('downrx_checks'):
63 if str(i) in form_data.getlist('downrx_checks'):
64 subrxlistdown.append(1)
64 subrxlistdown.append(1)
65 else:
65 else:
66 subrxlistdown.append(0)
66 subrxlistdown.append(0)
67
67
68 cont = cont+1
68 cont = cont+1
69
69
70 if cont == 9:
70 if cont == 9:
71 up_values_list.append(sublistup)
71 up_values_list.append(sublistup)
72 down_values_list.append(sublistdown)
72 down_values_list.append(sublistdown)
73 sublistup = []
73 sublistup = []
74 sublistdown = []
74 sublistdown = []
75
75
76 up_txvalues_list.append(subtxlistup)
76 up_txvalues_list.append(subtxlistup)
77 down_txvalues_list.append(subtxlistdown)
77 down_txvalues_list.append(subtxlistdown)
78 subtxlistup = []
78 subtxlistup = []
79 subtxlistdown = []
79 subtxlistdown = []
80 up_rxvalues_list.append(subrxlistup)
80 up_rxvalues_list.append(subrxlistup)
81 down_rxvalues_list.append(subrxlistdown)
81 down_rxvalues_list.append(subrxlistdown)
82 subrxlistup = []
82 subrxlistup = []
83 subrxlistdown = []
83 subrxlistdown = []
84 cont = 1
84 cont = 1
85
85
86
86
87 list_uesup = []
87 list_uesup = []
88 list_uesdown = []
88 list_uesdown = []
89 for i in range(1,5):
89 for i in range(1,5):
90 if form_data['ues_up'+str(i)] == '':
90 if form_data['ues_up'+str(i)] == '':
91 list_uesup.append(0.0)
91 list_uesup.append(0.0)
92 else:
92 else:
93 list_uesup.append(float(form_data['ues_up'+str(i)]))
93 list_uesup.append(float(form_data['ues_up'+str(i)]))
94
94
95 if form_data['ues_down'+str(i)] == '':
95 if form_data['ues_down'+str(i)] == '':
96 list_uesdown.append(0.0)
96 list_uesdown.append(0.0)
97 else:
97 else:
98 list_uesdown.append(float(form_data['ues_down'+str(i)]))
98 list_uesdown.append(float(form_data['ues_down'+str(i)]))
99
99
100 onlyrx_list = form_data.getlist('onlyrx')
100 onlyrx_list = form_data.getlist('onlyrx')
101 only_rx = {}
101 only_rx = {}
102 if '1' in onlyrx_list:
102 if '1' in onlyrx_list:
103 only_rx['up'] = True
103 only_rx['up'] = True
104 else:
104 else:
105 only_rx['up'] = False
105 only_rx['up'] = False
106 if '2' in onlyrx_list:
106 if '2' in onlyrx_list:
107 only_rx['down'] = True
107 only_rx['down'] = True
108 else:
108 else:
109 only_rx['down'] = False
109 only_rx['down'] = False
110
110
111 antenna = {'antenna_up': up_values_list, 'antenna_down': down_values_list}
111 antenna = {'antenna_up': up_values_list, 'antenna_down': down_values_list}
112 tx = {'up': up_txvalues_list, 'down': down_txvalues_list}
112 tx = {'up': up_txvalues_list, 'down': down_txvalues_list}
113 rx = {'up': up_rxvalues_list, 'down': down_rxvalues_list}
113 rx = {'up': up_rxvalues_list, 'down': down_rxvalues_list}
114 ues = {'up': list_uesup, 'down': list_uesdown}
114 ues = {'up': list_uesup, 'down': list_uesdown}
115 name = str(form_data['beam_name'])
115 name = str(form_data['beam_name'])
116
116
117 beam_data = {'name': name, 'antenna': antenna, 'tx': tx, 'rx': rx, 'ues': ues, 'only_rx': only_rx}
117 beam_data = {'name': name, 'antenna': antenna, 'tx': tx, 'rx': rx, 'ues': ues, 'only_rx': only_rx}
118
118
119 return beam_data
119 return beam_data
120
120
121
121
122
122
123 def abs_conf(request, id_conf, status_request=None):
123 def abs_conf(request, id_conf, status_request=None):
124
124
125 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
125 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
126 beams = ABSBeam.objects.filter(abs_conf=conf)
126 beams = ABSBeam.objects.filter(abs_conf=conf)
127 active_beam_id = json.loads(conf.active_beam)
127 active_beam_id = json.loads(conf.active_beam)
128
128
129 #------------Colors for Active Beam:-------------
129 #------------Colors for Active Beam:-------------
130 modules_status = json.loads(conf.module_status)
130 modules_status = json.loads(conf.module_status)
131 module_messages = json.loads(conf.module_messages)
131 module_messages = json.loads(conf.module_messages)
132
132
133 color_status = {}
133 color_status = {}
134 for status in modules_status:
134 for status in modules_status:
135 if modules_status[status] == 3: #Running background-color: #00cc00;
135 if modules_status[status] == 3: #Running background-color: #00cc00;
136 color_status[status] = 'class=text-success'#'bgcolor=#00cc00'
136 color_status[status] = 'class=text-success'#'bgcolor=#00cc00'
137 elif modules_status[status] == 1: #Connected background-color: #ee902c;
137 elif modules_status[status] == 1: #Connected background-color: #ee902c;
138 color_status[status] = 'class=text-warning'#'bgcolor=#ee902c'
138 color_status[status] = 'class=text-warning'#'bgcolor=#ee902c'
139 else: #Disconnected background-color: #ff0000;
139 else: #Disconnected background-color: #ff0000;
140 color_status[status] = 'class=text-danger'#'bgcolor=#FF0000'
140 color_status[status] = 'class=text-danger'#'bgcolor=#FF0000'
141 #------------------------------------------------
141 #------------------------------------------------
142
142
143 kwargs = {}
143 kwargs = {}
144 #kwargs['status'] = conf.device.get_status_display()
144 #kwargs['status'] = conf.device.get_status_display()
145 kwargs['connected_modules'] = str(conf.connected_modules())+'/64'
145 kwargs['connected_modules'] = str(conf.connected_modules())+'/64'
146
146
147 kwargs['dev_conf'] = conf
147 kwargs['dev_conf'] = conf
148 if conf.operation_mode == 0:
148 if conf.operation_mode == 0:
149 kwargs['dev_conf_keys'] = ['name', 'operation_mode']
149 kwargs['dev_conf_keys'] = ['name', 'operation_mode']
150 else:
150 else:
151 kwargs['dev_conf_keys'] = ['name', 'operation_mode', 'operation_value']
151 kwargs['dev_conf_keys'] = ['name', 'operation_mode', 'operation_value']
152
152
153 kwargs['title'] = 'ABS Configuration'
153 kwargs['title'] = 'ABS Configuration'
154 kwargs['suptitle'] = 'Details'
154 kwargs['suptitle'] = 'Details'
155 #kwargs['no_play'] = True
155 #kwargs['no_play'] = True
156
156
157 kwargs['button'] = 'Edit Configuration'
157 kwargs['button'] = 'Edit Configuration'
158 #------------------Active Beam-----------------------
158 #------------------Active Beam-----------------------
159 try:
159 try:
160 active_beam_id = active_beam_id['active_beam']
160 active_beam_id = active_beam_id['active_beam']
161 active_beam = ABSBeam.objects.get(pk=active_beam_id)
161 active_beam = ABSBeam.objects.get(pk=active_beam_id)
162 kwargs['active_beam'] = active_beam
162 kwargs['active_beam'] = active_beam
163 for beam in beams:
163 for beam in beams:
164 if beam.id == active_beam.id:
164 if beam.id == active_beam.id:
165 beam.color_status = color_status
165 beam.color_status = color_status
166 beam.module_messages = module_messages
166 beam.module_messages = module_messages
167 except:
167 except:
168 active_beam = ''
168 active_beam = ''
169 #----------------------------------------------------
169 #----------------------------------------------------
170 kwargs['beams'] = beams
170 kwargs['beams'] = beams
171 kwargs['modules_status'] = modules_status
171 kwargs['modules_status'] = modules_status
172 kwargs['color_status'] = color_status
172 kwargs['color_status'] = color_status
173 kwargs['module_messages'] = module_messages
173 kwargs['module_messages'] = module_messages
174
174
175 #if conf.device.status in [0,1]:
175 #if conf.device.status in [0,1]:
176 if conf.connected_modules() == 0:
176 if conf.connected_modules() == 0:
177 conf.device.status = 0
177 messages.error(request, 'No ABS module is connected.')#conf.message)
178 messages.error(request, 'No ABS module is connected.')#conf.message)
179 conf.device.save()
178 else:
180 else:
179 messages.success(request, 'ABS modules are connected.')#conf.message)
181 messages.success(request, 'ABS modules are connected.')#conf.message)
180
182
181 ###### SIDEBAR ######
183 ###### SIDEBAR ######
182 kwargs.update(sidebar(conf=conf))
184 kwargs.update(sidebar(conf=conf))
183
185
184 if status_request:
186 if status_request:
185 conf.status_device()
187 conf.status_device()
186 kwargs['status_request'] = True
188 kwargs['status_request'] = True
187 return render(request, 'abs_conf.html', kwargs)
189 return render(request, 'abs_conf.html', kwargs)
188
190
189 return render(request, 'abs_conf.html', kwargs)
191 return render(request, 'abs_conf.html', kwargs)
190
192
191
193
192 def abs_conf_edit(request, id_conf):
194 def abs_conf_edit(request, id_conf):
193
195
194 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
196 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
195
197
196 beams = ABSBeam.objects.filter(abs_conf=conf)
198 beams = ABSBeam.objects.filter(abs_conf=conf)
197 print beams
199 print beams
198
200
199 if request.method=='GET':
201 if request.method=='GET':
200 form = ABSConfigurationForm(instance=conf)
202 form = ABSConfigurationForm(instance=conf)
201
203
202 if request.method=='POST':
204 if request.method=='POST':
203 form = ABSConfigurationForm(request.POST, instance=conf)
205 form = ABSConfigurationForm(request.POST, instance=conf)
204
206
205 if form.is_valid():
207 if form.is_valid():
206 conf = form.save(commit=False)
208 conf = form.save(commit=False)
207 conf.save()
209 conf.save()
208 return redirect('url_abs_conf', id_conf=conf.id)
210 return redirect('url_abs_conf', id_conf=conf.id)
209
211
210 ###### SIDEBAR ######
212 ###### SIDEBAR ######
211 kwargs = {}
213 kwargs = {}
212
214
213 kwargs['dev_conf'] = conf
215 kwargs['dev_conf'] = conf
214 #kwargs['id_dev'] = conf.id
216 #kwargs['id_dev'] = conf.id
215 kwargs['id_conf'] = conf.id
217 kwargs['id_conf'] = conf.id
216 kwargs['form'] = form
218 kwargs['form'] = form
217 kwargs['abs_beams'] = beams
219 kwargs['abs_beams'] = beams
218 kwargs['title'] = 'Device Configuration'
220 kwargs['title'] = 'Device Configuration'
219 kwargs['suptitle'] = 'Edit'
221 kwargs['suptitle'] = 'Edit'
220 kwargs['button'] = 'Save'
222 kwargs['button'] = 'Save'
221
223
222 kwargs['edit'] = True
224 kwargs['edit'] = True
223
225
224 return render(request, 'abs_conf_edit.html', kwargs)
226 return render(request, 'abs_conf_edit.html', kwargs)
225
227
226
228
227 def import_file(request, id_conf):
229 def import_file(request, id_conf):
228
230
229 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
231 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
230 if request.method=='POST':
232 if request.method=='POST':
231 form = ABSImportForm(request.POST, request.FILES)
233 form = ABSImportForm(request.POST, request.FILES)
232 if form.is_valid():
234 if form.is_valid():
233 try:
235 try:
234 parms = conf.import_from_file(request.FILES['file_name'])
236 parms = conf.import_from_file(request.FILES['file_name'])
235
237
236 if parms:
238 if parms:
237 conf.update_from_file(parms)
239 conf.update_from_file(parms)
238 messages.success(request, 'Configuration "%s" loaded succesfully' % request.FILES['file_name'])
240 messages.success(request, 'Configuration "%s" loaded succesfully' % request.FILES['file_name'])
239 return redirect(conf.get_absolute_url_edit())
241 return redirect(conf.get_absolute_url_edit())
240
242
241 except Exception as e:
243 except Exception as e:
242 messages.error(request, 'Error parsing file: "%s" - %s' % (request.FILES['file_name'], e))
244 messages.error(request, 'Error parsing file: "%s" - %s' % (request.FILES['file_name'], e))
243
245
244 else:
246 else:
245 messages.warning(request, 'Your current configuration will be replaced')
247 messages.warning(request, 'Your current configuration will be replaced')
246 form = ABSImportForm()
248 form = ABSImportForm()
247
249
248 kwargs = {}
250 kwargs = {}
249 kwargs['form'] = form
251 kwargs['form'] = form
250 kwargs['title'] = 'ABS Configuration'
252 kwargs['title'] = 'ABS Configuration'
251 kwargs['suptitle'] = 'Import file'
253 kwargs['suptitle'] = 'Import file'
252 kwargs['button'] = 'Upload'
254 kwargs['button'] = 'Upload'
253 kwargs['previous'] = conf.get_absolute_url()
255 kwargs['previous'] = conf.get_absolute_url()
254
256
255 return render(request, 'abs_import.html', kwargs)
257 return render(request, 'abs_import.html', kwargs)
256
258
257
259
258 def send_beam(request, id_conf, id_beam):
260 def send_beam(request, id_conf, id_beam):
259
261
260 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
262 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
261 beam = get_object_or_404(ABSBeam, pk=id_beam)
263 beam = get_object_or_404(ABSBeam, pk=id_beam)
262 beams_list = ABSBeam.objects.filter(abs_conf=conf)
264 beams_list = ABSBeam.objects.filter(abs_conf=conf)
263 #To set this beam as an Active Beam
265 #To set this beam as an Active Beam
264 beam.set_as_activebeam()
266 beam.set_as_activebeam()
265 #To send beam position to abs-modules
267 #To send beam position to abs-modules
266 i = 0
268 i = 0
267 for b in beams_list:
269 for b in beams_list:
268 if b.id == int(id_beam):
270 if b.id == int(id_beam):
269 break
271 break
270 else:
272 else:
271 i += 1
273 i += 1
272 beam_pos = i + 1 #Estandarizar
274 beam_pos = i + 1 #Estandarizar
273 print 'Position: ',beam_pos
275 print 'Position: ',beam_pos
274 conf.send_beam_num(beam_pos)
276 conf.send_beam_num(beam_pos)
275
277
276 return redirect('url_abs_conf', conf.id)
278 return redirect('url_abs_conf', conf.id)
277
279
278
280
279 def add_beam(request, id_conf):
281 def add_beam(request, id_conf):
280
282
281 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
283 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
282 confs = Configuration.objects.all()
284 confs = Configuration.objects.all()
283
285
284 if request.method=='GET':
286 if request.method=='GET':
285 #form = ABSBeamEditForm()
287 #form = ABSBeamEditForm()
286 form = ABSBeamAddForm()
288 form = ABSBeamAddForm()
287
289
288 if request.method=='POST':
290 if request.method=='POST':
289 form = ABSBeamAddForm(request.POST)
291 form = ABSBeamAddForm(request.POST)
290
292
291 beam_data = get_values_from_form(request.POST)
293 beam_data = get_values_from_form(request.POST)
292
294
293 new_beam = ABSBeam(
295 new_beam = ABSBeam(
294 name =beam_data['name'],
296 name =beam_data['name'],
295 antenna =json.dumps(beam_data['antenna']),
297 antenna =json.dumps(beam_data['antenna']),
296 abs_conf=conf,
298 abs_conf=conf,
297 tx =json.dumps(beam_data['tx']),
299 tx =json.dumps(beam_data['tx']),
298 rx =json.dumps(beam_data['rx']),
300 rx =json.dumps(beam_data['rx']),
299 ues =json.dumps(beam_data['ues']),
301 ues =json.dumps(beam_data['ues']),
300 only_rx =json.dumps(beam_data['only_rx'])
302 only_rx =json.dumps(beam_data['only_rx'])
301 )
303 )
302 new_beam.save()
304 new_beam.save()
303 #---Update 6bits configuration and add beam to abs configuration beams list.
305 #---Update 6bits configuration and add beam to abs configuration beams list.
304 new_beam.modules_6bits()
306 new_beam.modules_6bits()
305 #new_beam.add_beam2list()
307 #new_beam.add_beam2list()
306 messages.success(request, 'Beam: "%s" has been added.' % new_beam.name)
308 messages.success(request, 'Beam: "%s" has been added.' % new_beam.name)
307
309
308 return redirect('url_edit_abs_conf', conf.id)
310 return redirect('url_edit_abs_conf', conf.id)
309
311
310 ###### SIDEBAR ######
312 ###### SIDEBAR ######
311 kwargs = {}
313 kwargs = {}
312
314
313 #kwargs['dev_conf'] = conf.device
315 #kwargs['dev_conf'] = conf.device
314 #kwargs['id_dev'] = conf.device
316 #kwargs['id_dev'] = conf.device
315 kwargs['id_conf'] = conf.id
317 kwargs['id_conf'] = conf.id
316 kwargs['form'] = form
318 kwargs['form'] = form
317 kwargs['title'] = 'ABS Beams'
319 kwargs['title'] = 'ABS Beams'
318 kwargs['suptitle'] = 'Add Beam'
320 kwargs['suptitle'] = 'Add Beam'
319 kwargs['button'] = 'Add'
321 kwargs['button'] = 'Add'
320 kwargs['no_sidebar'] = True
322 kwargs['no_sidebar'] = True
321
323
322 #kwargs['previous'] = conf.get_absolute_url_edit()
324 #kwargs['previous'] = conf.get_absolute_url_edit()
323 kwargs['edit'] = True
325 kwargs['edit'] = True
324
326
325 return render(request, 'abs_add_beam.html', kwargs)
327 return render(request, 'abs_add_beam.html', kwargs)
326
328
327
329
328 def edit_beam(request, id_conf, id_beam):
330 def edit_beam(request, id_conf, id_beam):
329
331
330 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
332 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
331 beam = get_object_or_404(ABSBeam, pk=id_beam)
333 beam = get_object_or_404(ABSBeam, pk=id_beam)
332
334
333 if request.method=='GET':
335 if request.method=='GET':
334 form = ABSBeamEditForm(initial={'beam': beam})
336 form = ABSBeamEditForm(initial={'beam': beam})
335
337
336 if request.method=='POST':
338 if request.method=='POST':
337 form = ABSBeamEditForm(request.POST)
339 form = ABSBeamEditForm(request.POST)
338
340
339 beam_data = get_values_from_form(request.POST)
341 beam_data = get_values_from_form(request.POST)
340
342
341 beam.dict_to_parms(beam_data)
343 beam.dict_to_parms(beam_data)
342 beam.save()
344 beam.save()
343
345
344 messages.success(request, 'Beam: "%s" has been updated.' % beam.name)
346 messages.success(request, 'Beam: "%s" has been updated.' % beam.name)
345
347
346 return redirect('url_edit_abs_conf', conf.id)
348 return redirect('url_edit_abs_conf', conf.id)
347
349
348 ###### SIDEBAR ######
350 ###### SIDEBAR ######
349 kwargs = {}
351 kwargs = {}
350
352
351 kwargs['id_conf'] = conf.id
353 kwargs['id_conf'] = conf.id
352 kwargs['form'] = form
354 kwargs['form'] = form
353 kwargs['title'] = 'ABS Beams'
355 kwargs['title'] = 'ABS Beams'
354 kwargs['suptitle'] = 'Edit Beam'
356 kwargs['suptitle'] = 'Edit Beam'
355 kwargs['button'] = 'Save'
357 kwargs['button'] = 'Save'
356 kwargs['no_sidebar'] = True
358 kwargs['no_sidebar'] = True
357
359
358 #kwargs['previous'] = conf.get_absolute_url_edit()
360 #kwargs['previous'] = conf.get_absolute_url_edit()
359 kwargs['edit'] = True
361 kwargs['edit'] = True
360
362
361 return render(request, 'abs_edit_beam.html', kwargs)
363 return render(request, 'abs_edit_beam.html', kwargs)
362
364
363
365
364
366
365 def remove_beam(request, id_conf, id_beam):
367 def remove_beam(request, id_conf, id_beam):
366
368
367 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
369 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
368 beam = get_object_or_404(ABSBeam, pk=id_beam)
370 beam = get_object_or_404(ABSBeam, pk=id_beam)
369
371
370 if request.method=='POST':
372 if request.method=='POST':
371 if beam:
373 if beam:
372 try:
374 try:
373 beam.remove_beamfromlist()
375 beam.remove_beamfromlist()
374 beam.delete()
376 beam.delete()
375 messages.success(request, 'Beam: "%s" has been deleted.' % beam)
377 messages.success(request, 'Beam: "%s" has been deleted.' % beam)
376 except:
378 except:
377 messages.error(request, 'Unable to delete beam: "%s".' % beam)
379 messages.error(request, 'Unable to delete beam: "%s".' % beam)
378
380
379 return redirect('url_edit_abs_conf', conf.id)
381 return redirect('url_edit_abs_conf', conf.id)
380
382
381 ###### SIDEBAR ######
383 ###### SIDEBAR ######
382 kwargs = {}
384 kwargs = {}
383
385
384 kwargs['object'] = beam
386 kwargs['object'] = beam
385 kwargs['delete'] = True
387 kwargs['delete'] = True
386 kwargs['title'] = 'Delete'
388 kwargs['title'] = 'Delete'
387 kwargs['suptitle'] = 'Beam'
389 kwargs['suptitle'] = 'Beam'
388 kwargs['previous'] = conf.get_absolute_url_edit()
390 kwargs['previous'] = conf.get_absolute_url_edit()
389 return render(request, 'confirm.html', kwargs)
391 return render(request, 'confirm.html', kwargs)
390
392
391
393
392
394
393 def plot_patterns(request, id_conf, id_beam=None):
395 def plot_patterns(request, id_conf, id_beam=None):
394
396
395 kwargs = {}
397 kwargs = {}
396 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
398 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
397 beams = ABSBeam.objects.filter(abs_conf=conf)
399 beams = ABSBeam.objects.filter(abs_conf=conf)
398
400
399 if id_beam:
401 if id_beam:
400 beam = get_object_or_404(ABSBeam, pk=id_beam)
402 beam = get_object_or_404(ABSBeam, pk=id_beam)
401 kwargs['beam'] = beam
403 kwargs['beam'] = beam
402
404
403
405
404 ###### SIDEBAR ######
406 ###### SIDEBAR ######
405
407
406 kwargs['dev_conf'] = conf.device
408 kwargs['dev_conf'] = conf.device
407 kwargs['id_dev'] = conf.device
409 kwargs['id_dev'] = conf.device
408 kwargs['id_conf'] = conf.id
410 kwargs['id_conf'] = conf.id
409 kwargs['abs_beams'] = beams
411 kwargs['abs_beams'] = beams
410 kwargs['title'] = 'ABS Patterns'
412 kwargs['title'] = 'ABS Patterns'
411 kwargs['suptitle'] = conf.name
413 kwargs['suptitle'] = conf.name
412 kwargs['no_sidebar'] = True
414 kwargs['no_sidebar'] = True
413
415
414 return render(request, 'abs_patterns.html', kwargs)
416 return render(request, 'abs_patterns.html', kwargs)
415
417
416
418
417 def plot_pattern(request, id_conf, id_beam, antenna):
419 def plot_pattern(request, id_conf, id_beam, antenna):
418
420
419 if antenna=='down':
421 if antenna=='down':
420 sleep(3)
422 sleep(3)
421
423
422 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
424 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
423 beam = get_object_or_404(ABSBeam, pk=id_beam)
425 beam = get_object_or_404(ABSBeam, pk=id_beam)
424
426
425 name = conf.experiment.name
427 name = conf.experiment.name
426
428
427 just_rx = 1 if json.loads(beam.only_rx)[antenna] else 0
429 just_rx = 1 if json.loads(beam.only_rx)[antenna] else 0
428 phases = json.loads(beam.antenna)['antenna_{}'.format(antenna)]
430 phases = json.loads(beam.antenna)['antenna_{}'.format(antenna)]
429 gain_tx = json.loads(beam.tx)[antenna]
431 gain_tx = json.loads(beam.tx)[antenna]
430 gain_rx = json.loads(beam.rx)[antenna]
432 gain_rx = json.loads(beam.rx)[antenna]
431 ues = json.loads(beam.ues)[antenna]
433 ues = json.loads(beam.ues)[antenna]
432
434
433 newOverJro = overJroShow(name)
435 newOverJro = overJroShow(name)
434 fig = newOverJro.plotPattern2(datetime.today(), phases, gain_tx, gain_rx, ues, just_rx)
436 fig = newOverJro.plotPattern2(datetime.today(), phases, gain_tx, gain_rx, ues, just_rx)
435
437
436 response=HttpResponse(content_type='image/png')
438 response=HttpResponse(content_type='image/png')
437
439
438 fig.canvas.print_png(response)
440 fig.canvas.print_png(response)
439
441
440 return response
442 return response
General Comments 0
You need to be logged in to leave comments. Login now