##// END OF EJS Templates
Task #716: ABS View...
Fiorella Quino -
r168:023aec519db8
parent child
Show More
@@ -1,327 +1,327
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
5
6 from apps.main.models import Device, Configuration
6 from apps.main.models import Device, Configuration
7 from apps.main.views import sidebar
7 from apps.main.views import sidebar
8
8
9 from .models import ABSConfiguration, ABSBeam
9 from .models import ABSConfiguration, ABSBeam
10 from .forms import ABSConfigurationForm, ABSBeamEditForm, ABSBeamAddForm
10 from .forms import ABSConfigurationForm, ABSBeamEditForm, ABSBeamAddForm
11 # Create your views here.
11 # Create your views here.
12 import json, ast
12 import json, ast
13
13
14
14
15 def get_values_from_form(form_data):
15 def get_values_from_form(form_data):
16
16
17 sublistup = []
17 sublistup = []
18 sublistdown = []
18 sublistdown = []
19 subtxlistup = []
19 subtxlistup = []
20 subtxlistdown = []
20 subtxlistdown = []
21 subrxlistup = []
21 subrxlistup = []
22 subrxlistdown = []
22 subrxlistdown = []
23
23
24 up_values_list = []
24 up_values_list = []
25 down_values_list = []
25 down_values_list = []
26 up_txvalues_list = []
26 up_txvalues_list = []
27 down_txvalues_list = []
27 down_txvalues_list = []
28 up_rxvalues_list = []
28 up_rxvalues_list = []
29 down_rxvalues_list = []
29 down_rxvalues_list = []
30
30
31 values_list = {}
31 values_list = {}
32 cont = 1
32 cont = 1
33
33
34 for i in range(1,65):
34 for i in range(1,65):
35 x = float(form_data['abs_up'+str(i)])
35 x = float(form_data['abs_up'+str(i)])
36 y = float(form_data['abs_down'+str(i)])
36 y = float(form_data['abs_down'+str(i)])
37 sublistup.append(x)
37 sublistup.append(x)
38 sublistdown.append(y)
38 sublistdown.append(y)
39
39
40 if str(i) in form_data.getlist('uptx_checks'):
40 if str(i) in form_data.getlist('uptx_checks'):
41 subtxlistup.append(1)
41 subtxlistup.append(1)
42 else:
42 else:
43 subtxlistup.append(0)
43 subtxlistup.append(0)
44 if str(i) in form_data.getlist('downtx_checks'):
44 if str(i) in form_data.getlist('downtx_checks'):
45 subtxlistdown.append(1)
45 subtxlistdown.append(1)
46 else:
46 else:
47 subtxlistdown.append(0)
47 subtxlistdown.append(0)
48
48
49 if str(i) in form_data.getlist('uprx_checks'):
49 if str(i) in form_data.getlist('uprx_checks'):
50 subrxlistup.append(1)
50 subrxlistup.append(1)
51 else:
51 else:
52 subrxlistup.append(0)
52 subrxlistup.append(0)
53 if str(i) in form_data.getlist('downrx_checks'):
53 if str(i) in form_data.getlist('downrx_checks'):
54 subrxlistdown.append(1)
54 subrxlistdown.append(1)
55 else:
55 else:
56 subrxlistdown.append(0)
56 subrxlistdown.append(0)
57
57
58 cont = cont+1
58 cont = cont+1
59
59
60 if cont == 9:
60 if cont == 9:
61 up_values_list.append(sublistup)
61 up_values_list.append(sublistup)
62 down_values_list.append(sublistdown)
62 down_values_list.append(sublistdown)
63 sublistup = []
63 sublistup = []
64 sublistdown = []
64 sublistdown = []
65
65
66 up_txvalues_list.append(subtxlistup)
66 up_txvalues_list.append(subtxlistup)
67 down_txvalues_list.append(subtxlistdown)
67 down_txvalues_list.append(subtxlistdown)
68 subtxlistup = []
68 subtxlistup = []
69 subtxlistdown = []
69 subtxlistdown = []
70 up_rxvalues_list.append(subrxlistup)
70 up_rxvalues_list.append(subrxlistup)
71 down_rxvalues_list.append(subrxlistdown)
71 down_rxvalues_list.append(subrxlistdown)
72 subrxlistup = []
72 subrxlistup = []
73 subrxlistdown = []
73 subrxlistdown = []
74 cont = 1
74 cont = 1
75
75
76
76
77 list_uesup = []
77 list_uesup = []
78 list_uesdown = []
78 list_uesdown = []
79 for i in range(1,5):
79 for i in range(1,5):
80 if form_data['ues_up'+str(i)] == '':
80 if form_data['ues_up'+str(i)] == '':
81 list_uesup.append(0.0)
81 list_uesup.append(0.0)
82 else:
82 else:
83 list_uesup.append(float(form_data['ues_up'+str(i)]))
83 list_uesup.append(float(form_data['ues_up'+str(i)]))
84
84
85 if form_data['ues_down'+str(i)] == '':
85 if form_data['ues_down'+str(i)] == '':
86 list_uesdown.append(0.0)
86 list_uesdown.append(0.0)
87 else:
87 else:
88 list_uesdown.append(float(form_data['ues_down'+str(i)]))
88 list_uesdown.append(float(form_data['ues_down'+str(i)]))
89
89
90 onlyrx_list = form_data.getlist('onlyrx')
90 onlyrx_list = form_data.getlist('onlyrx')
91 only_rx = {}
91 only_rx = {}
92 if '1' in onlyrx_list:
92 if '1' in onlyrx_list:
93 only_rx['up'] = True
93 only_rx['up'] = True
94 else:
94 else:
95 only_rx['up'] = False
95 only_rx['up'] = False
96 if '2' in onlyrx_list:
96 if '2' in onlyrx_list:
97 only_rx['down'] = True
97 only_rx['down'] = True
98 else:
98 else:
99 only_rx['down'] = False
99 only_rx['down'] = False
100
100
101 antenna = {'antenna_up': up_values_list, 'antenna_down': down_values_list}
101 antenna = {'antenna_up': up_values_list, 'antenna_down': down_values_list}
102 tx = {'up': up_txvalues_list, 'down': down_txvalues_list}
102 tx = {'up': up_txvalues_list, 'down': down_txvalues_list}
103 rx = {'up': up_rxvalues_list, 'down': down_rxvalues_list}
103 rx = {'up': up_rxvalues_list, 'down': down_rxvalues_list}
104 ues = {'up': list_uesup, 'down': list_uesdown}
104 ues = {'up': list_uesup, 'down': list_uesdown}
105 name = str(form_data['beam_name'])
105 name = str(form_data['beam_name'])
106
106
107 beam_data = {'name': name, 'antenna': antenna, 'tx': tx, 'rx': rx, 'ues': ues, 'only_rx': only_rx}
107 beam_data = {'name': name, 'antenna': antenna, 'tx': tx, 'rx': rx, 'ues': ues, 'only_rx': only_rx}
108
108
109 return beam_data
109 return beam_data
110
110
111
111
112
112
113 def abs_conf(request, id_conf):
113 def abs_conf(request, id_conf):
114
114
115 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
115 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
116
116
117 beams_dict = ast.literal_eval(conf.beams)
117 beams_dict = ast.literal_eval(conf.beams)
118 beams = []
118 beams = []
119 for beam_id in range(1,len(beams_dict)+1):
119 for beam_id in range(1,len(beams_dict)+1):
120 beam = ABSBeam.objects.get(pk=beams_dict['beam'+str(beam_id)])
120 beam = ABSBeam.objects.get(pk=beams_dict['beam'+str(beam_id)])
121 beams.append(beam)
121 beams.append(beam)
122
122
123 beams_id = ast.literal_eval(conf.beams)
123 beams_id = ast.literal_eval(conf.beams)
124
124
125 ip=conf.device.ip_address
125 ip=conf.device.ip_address
126 port=conf.device.port_address
126 port=conf.device.port_address
127
127
128 kwargs = {}
128 kwargs = {}
129 kwargs['status'] = conf.device.get_status_display()
129 kwargs['status'] = conf.device.get_status_display()
130
130
131
131
132 kwargs['dev_conf'] = conf
132 kwargs['dev_conf'] = conf
133 kwargs['dev_conf_keys'] = ['name',]
133 kwargs['dev_conf_keys'] = ['name',]
134
134
135 kwargs['title'] = 'ABS Configuration'
135 kwargs['title'] = 'ABS Configuration'
136 kwargs['suptitle'] = 'Details'
136 kwargs['suptitle'] = 'Details'
137 kwargs['no_play'] = True
137 kwargs['no_play'] = True
138
138
139 kwargs['button'] = 'Edit Configuration'
139 kwargs['button'] = 'Edit Configuration'
140
140
141 #kwargs['no_play'] = True
141 #kwargs['no_play'] = True
142 kwargs['beams_id'] = beams_id
142 kwargs['beams_id'] = beams_id
143 kwargs['beams'] = beams
143 kwargs['beams'] = beams
144 kwargs['beam_selector'] = 0
144 kwargs['beam_selector'] = 0
145 #kwargs['my_data'] = simplejson.dumps(beams)
145 #kwargs['my_data'] = simplejson.dumps(beams)
146
146
147 kwargs['only_stop'] = True
147 kwargs['only_stop'] = True
148
148
149 ###### SIDEBAR ######
149 ###### SIDEBAR ######
150 kwargs.update(sidebar(conf=conf))
150 kwargs.update(sidebar(conf=conf))
151
151
152 return render(request, 'abs_conf.html', kwargs)
152 return render(request, 'abs_conf.html', kwargs)
153
153
154 def abs_conf_edit(request, id_conf):
154 def abs_conf_edit(request, id_conf):
155
155
156 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
156 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
157 beams_list = ast.literal_eval(conf.beams)
157 beams_list = ast.literal_eval(conf.beams)
158 i = 1
158 i = 1
159 beams = []
159 beams = []
160 for b in beams_list:
160 for b in beams_list:
161 beam = ABSBeam.objects.get(pk=beams_list['beam'+str(i)])
161 beam = ABSBeam.objects.get(pk=beams_list['beam'+str(i)])
162 beams.append(beam)
162 beams.append(beam)
163 i=i+1
163 i=i+1
164
164
165 if request.method=='GET':
165 if request.method=='GET':
166 form = ABSConfigurationForm(instance=conf)
166 form = ABSConfigurationForm(instance=conf)
167
167
168 if request.method=='POST':
168 if request.method=='POST':
169 form = ABSConfigurationForm(request.POST, instance=conf)
169 form = ABSConfigurationForm(request.POST, instance=conf)
170
170
171 if form.is_valid():
171 if form.is_valid():
172 conf = form.save(commit=False)
172 conf = form.save(commit=False)
173 conf.save()
173 conf.save()
174 return redirect('url_abs_conf', id_conf=conf.id)
174 return redirect('url_abs_conf', id_conf=conf.id)
175
175
176 ###### SIDEBAR ######
176 ###### SIDEBAR ######
177 kwargs = {}
177 kwargs = {}
178
178
179 kwargs['dev_conf'] = conf
179 kwargs['dev_conf'] = conf
180 #kwargs['id_dev'] = conf.id
180 #kwargs['id_dev'] = conf.id
181 kwargs['id_conf'] = conf.id
181 kwargs['id_conf'] = conf.id
182 kwargs['form'] = form
182 kwargs['form'] = form
183 kwargs['abs_beams'] = beams
183 kwargs['abs_beams'] = beams
184 kwargs['title'] = 'Device Configuration'
184 kwargs['title'] = 'Device Configuration'
185 kwargs['suptitle'] = 'Edit'
185 kwargs['suptitle'] = 'Edit'
186 kwargs['button'] = 'Save'
186 kwargs['button'] = 'Save'
187
187
188 kwargs['edit'] = True
188 kwargs['edit'] = True
189
189
190 return render(request, 'abs_conf_edit.html', kwargs)
190 return render(request, 'abs_conf_edit.html', kwargs)
191
191
192
192
193 def plot_patterns(request, id_conf):
193 def plot_patterns(request, id_conf):
194
194
195 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
195 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
196 beams_list = ast.literal_eval(conf.beams)
196 beams_list = ast.literal_eval(conf.beams)
197 i = 1
197 i = 1
198 beams = []
198 beams = []
199 for b in beams_list:
199 for b in beams_list:
200 beam = ABSBeam.objects.get(pk=beams_list['beam'+str(i)])
200 beam = ABSBeam.objects.get(pk=beams_list['beam'+str(i)])
201 beams.append(beam)
201 beams.append(beam)
202 i=i+1
202 i=i+1
203
203
204 ###### SIDEBAR ######
204 ###### SIDEBAR ######
205 kwargs = {}
205 kwargs = {}
206
206
207 kwargs['dev_conf'] = conf.device
207 kwargs['dev_conf'] = conf.device
208 kwargs['id_dev'] = conf.device
208 kwargs['id_dev'] = conf.device
209 kwargs['id_conf'] = conf.id
209 kwargs['id_conf'] = conf.id
210 kwargs['abs_beams'] = beams
210 kwargs['abs_beams'] = beams
211 kwargs['title'] = 'ABS Patterns'
211 kwargs['title'] = 'ABS Patterns'
212 kwargs['suptitle'] = conf.name
212 kwargs['suptitle'] = conf.name
213 kwargs['no_sidebar'] = True
213 kwargs['no_sidebar'] = True
214
214
215 return render(request, 'abs_patterns.html', kwargs)
215 return render(request, 'abs_patterns.html', kwargs)
216
216
217 def add_beam(request, id_conf):
217 def add_beam(request, id_conf):
218
218
219 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
219 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
220 confs = Configuration.objects.all()
220 confs = Configuration.objects.all()
221
221
222 if request.method=='GET':
222 if request.method=='GET':
223 #form = ABSBeamEditForm()
223 #form = ABSBeamEditForm()
224 form = ABSBeamAddForm()
224 form = ABSBeamAddForm()
225
225
226 if request.method=='POST':
226 if request.method=='POST':
227 form = ABSBeamAddForm(request.POST)
227 form = ABSBeamAddForm(request.POST)
228
228
229 beam_data = get_values_from_form(request.POST)
229 beam_data = get_values_from_form(request.POST)
230
230
231 new_beam = ABSBeam(
231 new_beam = ABSBeam(
232 name =beam_data['name'],
232 name =beam_data['name'],
233 antenna =json.dumps(beam_data['antenna']),
233 antenna =json.dumps(beam_data['antenna']),
234 abs_conf=conf,
234 abs_conf=conf,
235 tx =json.dumps(beam_data['tx']),
235 tx =json.dumps(beam_data['tx']),
236 rx =json.dumps(beam_data['rx']),
236 rx =json.dumps(beam_data['rx']),
237 ues =json.dumps(beam_data['ues']),
237 ues =json.dumps(beam_data['ues']),
238 only_rx =json.dumps(beam_data['only_rx'])
238 only_rx =json.dumps(beam_data['only_rx'])
239 )
239 )
240 new_beam.save()
240 new_beam.save()
241 #---Update 6bits configuration and add beam to abs configuration beams list.
241 #---Update 6bits configuration and add beam to abs configuration beams list.
242 new_beam.modules_6bits()
242 new_beam.modules_6bits()
243 new_beam.add_beam2list()
243 new_beam.add_beam2list()
244 messages.success(request, 'Beam: "%s" has been added.' % new_beam.name)
244 messages.success(request, 'Beam: "%s" has been added.' % new_beam.name)
245
245
246 return redirect('url_edit_abs_conf', conf.id)
246 return redirect('url_edit_abs_conf', conf.id)
247
247
248 ###### SIDEBAR ######
248 ###### SIDEBAR ######
249 kwargs = {}
249 kwargs = {}
250
250
251 #kwargs['dev_conf'] = conf.device
251 #kwargs['dev_conf'] = conf.device
252 #kwargs['id_dev'] = conf.device
252 #kwargs['id_dev'] = conf.device
253 kwargs['id_conf'] = conf.id
253 kwargs['id_conf'] = conf.id
254 kwargs['form'] = form
254 kwargs['form'] = form
255 kwargs['title'] = 'ABS Beams'
255 kwargs['title'] = 'ABS Beams'
256 kwargs['suptitle'] = 'Add Beam'
256 kwargs['suptitle'] = 'Add Beam'
257 kwargs['button'] = 'Add'
257 kwargs['button'] = 'Add'
258 kwargs['no_sidebar'] = True
258 kwargs['no_sidebar'] = True
259
259
260 #kwargs['previous'] = conf.get_absolute_url_edit()
260 #kwargs['previous'] = conf.get_absolute_url_edit()
261 kwargs['edit'] = True
261 kwargs['edit'] = True
262
262
263 return render(request, 'abs_add_beam.html', kwargs)
263 return render(request, 'abs_add_beam.html', kwargs)
264
264
265
265
266 def edit_beam(request, id_conf, id_beam):
266 def edit_beam(request, id_conf, id_beam):
267
267
268 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
268 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
269 beam = get_object_or_404(ABSBeam, pk=id_beam)
269 beam = get_object_or_404(ABSBeam, pk=id_beam)
270
270
271 if request.method=='GET':
271 if request.method=='GET':
272 form = ABSBeamEditForm(initial={'beam': beam})
272 form = ABSBeamEditForm(initial={'beam': beam})
273
273
274 if request.method=='POST':
274 if request.method=='POST':
275 form = ABSBeamEditForm(request.POST)
275 form = ABSBeamEditForm(request.POST)
276
276
277 beam_data = get_values_from_form(request.POST)
277 beam_data = get_values_from_form(request.POST)
278
278
279 beam.dict_to_parms(beam_data)
279 beam.dict_to_parms(beam_data)
280 beam.save()
280 beam.save()
281
281
282 messages.success(request, 'Beam: "%s" has been updated.' % beam.name)
282 messages.success(request, 'Beam: "%s" has been updated.' % beam.name)
283
283
284 return redirect('url_edit_abs_conf', conf.id)
284 return redirect('url_edit_abs_conf', conf.id)
285
285
286 ###### SIDEBAR ######
286 ###### SIDEBAR ######
287 kwargs = {}
287 kwargs = {}
288
288
289 kwargs['id_conf'] = conf.id
289 kwargs['id_conf'] = conf.id
290 kwargs['form'] = form
290 kwargs['form'] = form
291 kwargs['title'] = 'ABS Beams'
291 kwargs['title'] = 'ABS Beams'
292 kwargs['suptitle'] = 'Edit Beam'
292 kwargs['suptitle'] = 'Edit Beam'
293 kwargs['button'] = 'Save'
293 kwargs['button'] = 'Save'
294 kwargs['no_sidebar'] = True
294 kwargs['no_sidebar'] = True
295
295
296 #kwargs['previous'] = conf.get_absolute_url_edit()
296 #kwargs['previous'] = conf.get_absolute_url_edit()
297 kwargs['edit'] = True
297 kwargs['edit'] = True
298
298
299 return render(request, 'abs_add_beam.html', kwargs)
299 return render(request, 'abs_edit_beam.html', kwargs)
300
300
301
301
302
302
303 def remove_beam(request, id_conf, id_beam):
303 def remove_beam(request, id_conf, id_beam):
304
304
305 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
305 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
306 beam = get_object_or_404(ABSBeam, pk=id_beam)
306 beam = get_object_or_404(ABSBeam, pk=id_beam)
307
307
308 if request.method=='POST':
308 if request.method=='POST':
309 if beam:
309 if beam:
310 try:
310 try:
311 beam.remove_beamfromlist()
311 beam.remove_beamfromlist()
312 beam.delete()
312 beam.delete()
313 messages.success(request, 'Beam: "%s" has been deleted.' % beam)
313 messages.success(request, 'Beam: "%s" has been deleted.' % beam)
314 except:
314 except:
315 messages.error(request, 'Unable to delete beam: "%s".' % beam)
315 messages.error(request, 'Unable to delete beam: "%s".' % beam)
316
316
317 return redirect('url_edit_abs_conf', conf.id)
317 return redirect('url_edit_abs_conf', conf.id)
318
318
319 ###### SIDEBAR ######
319 ###### SIDEBAR ######
320 kwargs = {}
320 kwargs = {}
321
321
322 kwargs['object'] = beam
322 kwargs['object'] = beam
323 kwargs['delete'] = True
323 kwargs['delete'] = True
324 kwargs['title'] = 'Delete'
324 kwargs['title'] = 'Delete'
325 kwargs['suptitle'] = 'Beam'
325 kwargs['suptitle'] = 'Beam'
326 kwargs['previous'] = conf.get_absolute_url_edit()
326 kwargs['previous'] = conf.get_absolute_url_edit()
327 return render(request, 'confirm.html', kwargs)
327 return render(request, 'confirm.html', kwargs)
General Comments 0
You need to be logged in to leave comments. Login now