##// END OF EJS Templates
Task #716: Vista ABS (urls.py for plot beams patterns)...
Fiorella Quino -
r177:ad2e7677ed4e
parent child
Show More
@@ -1,327 +1,482
1 1 from django.shortcuts import render_to_response
2 2 from django.template import RequestContext
3 3 from django.shortcuts import redirect, render, get_object_or_404
4 4 from django.contrib import messages
5 from django.conf import settings
6 from django.http import HttpResponse
7
8 from datetime import datetime
9 from time import sleep
10 import os
5 11
6 12 from apps.main.models import Device, Configuration
7 13 from apps.main.views import sidebar
8 14
9 15 from .models import ABSConfiguration, ABSBeam
10 16 from .forms import ABSConfigurationForm, ABSBeamEditForm, ABSBeamAddForm
17
18 from .utils.overJroShow import overJroShow
19 from .utils.OverJRO import OverJRO
11 20 # Create your views here.
12 21 import json, ast
13 22
14 23
15 24 def get_values_from_form(form_data):
16 25
17 26 sublistup = []
18 27 sublistdown = []
19 28 subtxlistup = []
20 29 subtxlistdown = []
21 30 subrxlistup = []
22 31 subrxlistdown = []
23 32
24 33 up_values_list = []
25 34 down_values_list = []
26 35 up_txvalues_list = []
27 36 down_txvalues_list = []
28 37 up_rxvalues_list = []
29 38 down_rxvalues_list = []
30 39
31 40 values_list = {}
32 41 cont = 1
33 42
34 43 for i in range(1,65):
35 44 x = float(form_data['abs_up'+str(i)])
36 45 y = float(form_data['abs_down'+str(i)])
37 46 sublistup.append(x)
38 47 sublistdown.append(y)
39 48
40 49 if str(i) in form_data.getlist('uptx_checks'):
41 50 subtxlistup.append(1)
42 51 else:
43 52 subtxlistup.append(0)
44 53 if str(i) in form_data.getlist('downtx_checks'):
45 54 subtxlistdown.append(1)
46 55 else:
47 56 subtxlistdown.append(0)
48 57
49 58 if str(i) in form_data.getlist('uprx_checks'):
50 59 subrxlistup.append(1)
51 60 else:
52 61 subrxlistup.append(0)
53 62 if str(i) in form_data.getlist('downrx_checks'):
54 63 subrxlistdown.append(1)
55 64 else:
56 65 subrxlistdown.append(0)
57 66
58 67 cont = cont+1
59 68
60 69 if cont == 9:
61 70 up_values_list.append(sublistup)
62 71 down_values_list.append(sublistdown)
63 72 sublistup = []
64 73 sublistdown = []
65 74
66 75 up_txvalues_list.append(subtxlistup)
67 76 down_txvalues_list.append(subtxlistdown)
68 77 subtxlistup = []
69 78 subtxlistdown = []
70 79 up_rxvalues_list.append(subrxlistup)
71 80 down_rxvalues_list.append(subrxlistdown)
72 81 subrxlistup = []
73 82 subrxlistdown = []
74 83 cont = 1
75 84
76 85
77 86 list_uesup = []
78 87 list_uesdown = []
79 88 for i in range(1,5):
80 89 if form_data['ues_up'+str(i)] == '':
81 90 list_uesup.append(0.0)
82 91 else:
83 92 list_uesup.append(float(form_data['ues_up'+str(i)]))
84 93
85 94 if form_data['ues_down'+str(i)] == '':
86 95 list_uesdown.append(0.0)
87 96 else:
88 97 list_uesdown.append(float(form_data['ues_down'+str(i)]))
89 98
90 99 onlyrx_list = form_data.getlist('onlyrx')
91 100 only_rx = {}
92 101 if '1' in onlyrx_list:
93 102 only_rx['up'] = True
94 103 else:
95 104 only_rx['up'] = False
96 105 if '2' in onlyrx_list:
97 106 only_rx['down'] = True
98 107 else:
99 108 only_rx['down'] = False
100 109
101 110 antenna = {'antenna_up': up_values_list, 'antenna_down': down_values_list}
102 111 tx = {'up': up_txvalues_list, 'down': down_txvalues_list}
103 112 rx = {'up': up_rxvalues_list, 'down': down_rxvalues_list}
104 113 ues = {'up': list_uesup, 'down': list_uesdown}
105 114 name = str(form_data['beam_name'])
106 115
107 116 beam_data = {'name': name, 'antenna': antenna, 'tx': tx, 'rx': rx, 'ues': ues, 'only_rx': only_rx}
108 117
109 118 return beam_data
110 119
111 120
112 121
113 122 def abs_conf(request, id_conf):
114 123
115 124 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
116 125
117 126 beams_dict = ast.literal_eval(conf.beams)
118 127 beams = []
119 128 for beam_id in range(1,len(beams_dict)+1):
120 129 beam = ABSBeam.objects.get(pk=beams_dict['beam'+str(beam_id)])
121 130 beams.append(beam)
122 131
123 132 beams_id = ast.literal_eval(conf.beams)
124 133
125 134 ip=conf.device.ip_address
126 135 port=conf.device.port_address
127 136
128 137 kwargs = {}
129 138 kwargs['status'] = conf.device.get_status_display()
130 139
131 140
132 141 kwargs['dev_conf'] = conf
133 142 kwargs['dev_conf_keys'] = ['name',]
134 143
135 144 kwargs['title'] = 'ABS Configuration'
136 145 kwargs['suptitle'] = 'Details'
137 146 kwargs['no_play'] = True
138 147
139 148 kwargs['button'] = 'Edit Configuration'
140 149
141 150 #kwargs['no_play'] = True
142 151 kwargs['beams_id'] = beams_id
143 152 kwargs['beams'] = beams
144 153 kwargs['beam_selector'] = 0
145 154 #kwargs['my_data'] = simplejson.dumps(beams)
146 155
147 156 kwargs['only_stop'] = True
148 157
149 158 ###### SIDEBAR ######
150 159 kwargs.update(sidebar(conf=conf))
151 160
152 161 return render(request, 'abs_conf.html', kwargs)
153 162
154 163 def abs_conf_edit(request, id_conf):
155 164
156 165 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
157 166 beams_list = ast.literal_eval(conf.beams)
158 167 i = 1
159 168 beams = []
160 169 for b in beams_list:
161 170 beam = ABSBeam.objects.get(pk=beams_list['beam'+str(i)])
162 171 beams.append(beam)
163 172 i=i+1
164 173
165 174 if request.method=='GET':
166 175 form = ABSConfigurationForm(instance=conf)
167 176
168 177 if request.method=='POST':
169 178 form = ABSConfigurationForm(request.POST, instance=conf)
170 179
171 180 if form.is_valid():
172 181 conf = form.save(commit=False)
173 182 conf.save()
174 183 return redirect('url_abs_conf', id_conf=conf.id)
175 184
176 185 ###### SIDEBAR ######
177 186 kwargs = {}
178 187
179 188 kwargs['dev_conf'] = conf
180 189 #kwargs['id_dev'] = conf.id
181 190 kwargs['id_conf'] = conf.id
182 191 kwargs['form'] = form
183 192 kwargs['abs_beams'] = beams
184 193 kwargs['title'] = 'Device Configuration'
185 194 kwargs['suptitle'] = 'Edit'
186 195 kwargs['button'] = 'Save'
187 196
188 197 kwargs['edit'] = True
189 198
190 199 return render(request, 'abs_conf_edit.html', kwargs)
191 200
192 201
193 def plot_patterns(request, id_conf):
194
195 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
196 beams_list = ast.literal_eval(conf.beams)
197 i = 1
198 beams = []
199 for b in beams_list:
200 beam = ABSBeam.objects.get(pk=beams_list['beam'+str(i)])
201 beams.append(beam)
202 i=i+1
203
204 ###### SIDEBAR ######
205 kwargs = {}
206
207 kwargs['dev_conf'] = conf.device
208 kwargs['id_dev'] = conf.device
209 kwargs['id_conf'] = conf.id
210 kwargs['abs_beams'] = beams
211 kwargs['title'] = 'ABS Patterns'
212 kwargs['suptitle'] = conf.name
213 kwargs['no_sidebar'] = True
214 202
215 return render(request, 'abs_patterns.html', kwargs)
216 203
217 204 def add_beam(request, id_conf):
218 205
219 206 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
220 207 confs = Configuration.objects.all()
221 208
222 209 if request.method=='GET':
223 210 #form = ABSBeamEditForm()
224 211 form = ABSBeamAddForm()
225 212
226 213 if request.method=='POST':
227 214 form = ABSBeamAddForm(request.POST)
228 215
229 216 beam_data = get_values_from_form(request.POST)
230 217
231 218 new_beam = ABSBeam(
232 219 name =beam_data['name'],
233 220 antenna =json.dumps(beam_data['antenna']),
234 221 abs_conf=conf,
235 222 tx =json.dumps(beam_data['tx']),
236 223 rx =json.dumps(beam_data['rx']),
237 224 ues =json.dumps(beam_data['ues']),
238 225 only_rx =json.dumps(beam_data['only_rx'])
239 226 )
240 227 new_beam.save()
241 228 #---Update 6bits configuration and add beam to abs configuration beams list.
242 229 new_beam.modules_6bits()
243 230 new_beam.add_beam2list()
244 231 messages.success(request, 'Beam: "%s" has been added.' % new_beam.name)
245 232
246 233 return redirect('url_edit_abs_conf', conf.id)
247 234
248 235 ###### SIDEBAR ######
249 236 kwargs = {}
250 237
251 238 #kwargs['dev_conf'] = conf.device
252 239 #kwargs['id_dev'] = conf.device
253 240 kwargs['id_conf'] = conf.id
254 241 kwargs['form'] = form
255 242 kwargs['title'] = 'ABS Beams'
256 243 kwargs['suptitle'] = 'Add Beam'
257 244 kwargs['button'] = 'Add'
258 245 kwargs['no_sidebar'] = True
259 246
260 247 #kwargs['previous'] = conf.get_absolute_url_edit()
261 248 kwargs['edit'] = True
262 249
263 250 return render(request, 'abs_add_beam.html', kwargs)
264 251
265 252
266 253 def edit_beam(request, id_conf, id_beam):
267 254
268 255 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
269 256 beam = get_object_or_404(ABSBeam, pk=id_beam)
270 257
271 258 if request.method=='GET':
272 259 form = ABSBeamEditForm(initial={'beam': beam})
273 260
274 261 if request.method=='POST':
275 262 form = ABSBeamEditForm(request.POST)
276 263
277 264 beam_data = get_values_from_form(request.POST)
278 265
279 266 beam.dict_to_parms(beam_data)
280 267 beam.save()
281 268
282 269 messages.success(request, 'Beam: "%s" has been updated.' % beam.name)
283 270
284 271 return redirect('url_edit_abs_conf', conf.id)
285 272
286 273 ###### SIDEBAR ######
287 274 kwargs = {}
288 275
289 276 kwargs['id_conf'] = conf.id
290 277 kwargs['form'] = form
291 278 kwargs['title'] = 'ABS Beams'
292 279 kwargs['suptitle'] = 'Edit Beam'
293 280 kwargs['button'] = 'Save'
294 281 kwargs['no_sidebar'] = True
295 282
296 283 #kwargs['previous'] = conf.get_absolute_url_edit()
297 284 kwargs['edit'] = True
298 285
299 286 return render(request, 'abs_edit_beam.html', kwargs)
300 287
301 288
302 289
303 290 def remove_beam(request, id_conf, id_beam):
304 291
305 292 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
306 293 beam = get_object_or_404(ABSBeam, pk=id_beam)
307 294
308 295 if request.method=='POST':
309 296 if beam:
310 297 try:
311 298 beam.remove_beamfromlist()
312 299 beam.delete()
313 300 messages.success(request, 'Beam: "%s" has been deleted.' % beam)
314 301 except:
315 302 messages.error(request, 'Unable to delete beam: "%s".' % beam)
316 303
317 304 return redirect('url_edit_abs_conf', conf.id)
318 305
319 306 ###### SIDEBAR ######
320 307 kwargs = {}
321 308
322 309 kwargs['object'] = beam
323 310 kwargs['delete'] = True
324 311 kwargs['title'] = 'Delete'
325 312 kwargs['suptitle'] = 'Beam'
326 313 kwargs['previous'] = conf.get_absolute_url_edit()
327 314 return render(request, 'confirm.html', kwargs)
315
316
317
318 def plot_patterns(request, id_conf):
319
320 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
321 beams_list = ast.literal_eval(conf.beams)
322 i = 1
323 beams = []
324 for b in beams_list:
325 beam = ABSBeam.objects.get(pk=beams_list['beam'+str(i)])
326 beams.append(beam)
327 i=i+1
328
329 ###### SIDEBAR ######
330 kwargs = {}
331
332 kwargs['dev_conf'] = conf.device
333 kwargs['id_dev'] = conf.device
334 kwargs['id_conf'] = conf.id
335 kwargs['abs_beams'] = beams
336 kwargs['title'] = 'ABS Patterns'
337 kwargs['suptitle'] = conf.name
338 kwargs['no_sidebar'] = True
339
340 return render(request, 'abs_patterns.html', kwargs)
341
342
343 def plot_pattern(request, id_conf, id_beam):
344
345 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
346 beam = get_object_or_404(ABSBeam, pk=id_beam)
347
348 #Lista de Beams de la configuracion con su respectivo ID
349 beams_list = ast.literal_eval(conf.beams)
350 i = 1
351 #Lista de Objetos ABSBeams en el 0rden de su respectiva configuracion
352 beams = []
353 for b in beams_list:
354 beam = ABSBeam.objects.get(pk=beams_list['beam'+str(i)])
355 beams.append(beam)
356 i=i+1
357
358 ###### SIDEBAR ######
359 beam = get_object_or_404(ABSBeam, pk=id_beam)
360 kwargs = {}
361
362 kwargs['dev_conf'] = conf.device
363 kwargs['id_dev'] = conf.device
364 kwargs['id_conf'] = conf.id
365 kwargs['abs_beams'] = beams
366 kwargs['beam'] = beam
367 kwargs['title'] = 'ABS Patterns'
368 kwargs['suptitle'] = conf.name
369 kwargs['no_sidebar'] = True
370
371 return render(request, 'abs_patterns.html', kwargs)
372
373
374
375 def plot_uppattern(request, id_conf, id_beam):
376
377 from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
378
379 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
380 beam = get_object_or_404(ABSBeam, pk=id_beam)
381
382 exp_name = conf.experiment.name
383
384 just_rx = 0
385
386 only_rx = json.loads(beam.only_rx)
387 if only_rx['up'] == True:
388 just_rx = 1
389
390 antenna = ast.literal_eval(beam.antenna)
391 objAntenna = json.dumps(antenna['antenna_up'])
392 antenna_up = ''.join(str(i) for i in objAntenna)
393 phase_tx = antenna_up.replace(' ','')
394
395 tx = ast.literal_eval(beam.tx)
396 tx = json.dumps(tx['up'])
397 tx = ''.join(str(i) for i in tx)
398 gain_tx = tx.replace(' ','')
399
400 rx = ast.literal_eval(beam.rx)
401 rx = json.dumps(rx['up'])
402 rx = ''.join(str(i) for i in rx)
403 gain_rx = rx.replace(' ','')
404
405 ues = json.dumps(beam.get_up_ues)
406 ues = ''.join(str(i) for i in ues)
407 ues_tx = ues.replace(' ','')
408
409 #sleep(1)
410
411 overjro = OverJRO()
412 overjro.setParameters(settings.MEDIA_ROOT, exp_name, phase_tx, gain_tx, gain_rx, ues_tx, just_rx)
413 contentFile = overjro.setTextContent()
414 finalpath = overjro.saveFile(contentFile)
415
416 currentdate = datetime.today()
417 newOverJro = overJroShow()
418 newOverJro.setInputParameters(settings.MEDIA_ROOT, currentdate, finalpath)
419 newOverJro.setupParameters()
420 newOverJro.execute()
421 path = newOverJro.getPlot()
422 path= "apps/abs/media/"+path
423
424
425 canvas=FigureCanvas(newOverJro.figure)
426 response=HttpResponse(content_type='image/png')
427 canvas.print_png(response)
428 return response
429
430 def plot_downpattern(request, id_conf, id_beam):
431
432 sleep(4)
433 from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
434
435 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
436 beam = get_object_or_404(ABSBeam, pk=id_beam)
437
438 exp_name = conf.experiment.name
439
440 just_rx = 0
441
442 only_rx = json.loads(beam.only_rx)
443 if only_rx['down'] == True:
444 just_rx = 1
445
446 antenna = ast.literal_eval(beam.antenna)
447 objAntenna = json.dumps(antenna['antenna_down'])
448 antenna_down = ''.join(str(i) for i in objAntenna)
449 phase_tx = antenna_down.replace(' ','')
450
451 tx = ast.literal_eval(beam.tx)
452 tx = json.dumps(tx['down'])
453 tx = ''.join(str(i) for i in tx)
454 gain_tx = tx.replace(' ','')
455
456 rx = ast.literal_eval(beam.rx)
457 rx = json.dumps(rx['down'])
458 rx = ''.join(str(i) for i in rx)
459 gain_rx = rx.replace(' ','')
460
461 ues = json.dumps(beam.get_down_ues)
462 ues = ''.join(str(i) for i in ues)
463 ues_tx = ues.replace(' ','')
464
465 overjro = OverJRO()
466 overjro.setParameters(settings.MEDIA_ROOT, exp_name, phase_tx, gain_tx, gain_rx, ues_tx, just_rx)
467 contentFile = overjro.setTextContent()
468 finalpath = overjro.saveFile(contentFile)
469
470 currentdate = datetime.today()
471 newOverJro = overJroShow()
472 newOverJro.setInputParameters(settings.MEDIA_ROOT, currentdate, finalpath)
473 newOverJro.setupParameters()
474 newOverJro.execute()
475 path = newOverJro.getPlot()
476 path= "apps/abs/media/"+path
477
478
479 canvas=FigureCanvas(newOverJro.figure)
480 response=HttpResponse(content_type='image/png')
481 canvas.print_png(response)
482 return response
General Comments 0
You need to be logged in to leave comments. Login now