##// END OF EJS Templates
Task #714: Modulo Web ABS: send beam position function (models, views, urls, abs_conf) ...
Task #714: Modulo Web ABS: send beam position function (models, views, urls, abs_conf) git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@206 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71

File last commit:

r183:f7d08e6ebe60
r183:f7d08e6ebe60
Show More
views.py
393 lines | 11.3 KiB | text/x-python | PythonLexer
Fiorella Quino
Task #714: Modulo web del ABS ...
r166 from django.shortcuts import render_to_response
from django.template import RequestContext
from django.shortcuts import redirect, render, get_object_or_404
from django.contrib import messages
Fiorella Quino
Task #716: Vista ABS (urls.py for plot beams patterns)...
r177 from django.conf import settings
from django.http import HttpResponse
Fiorella Quino
Task #714: Modulo Web ABS: send beam position function (models, views, urls, abs_conf) ...
r183 from django.core.urlresolvers import reverse
Fiorella Quino
Task #716: Vista ABS (urls.py for plot beams patterns)...
r177
from datetime import datetime
from time import sleep
import os
Juan C. Espinoza
Proyecto base en Django (refs #259) ...
r0
Fiorella Quino
Task #714: Modulo web del ABS ...
r166 from apps.main.models import Device, Configuration
from apps.main.views import sidebar
from .models import ABSConfiguration, ABSBeam
from .forms import ABSConfigurationForm, ABSBeamEditForm, ABSBeamAddForm
Fiorella Quino
Task #716: Vista ABS (urls.py for plot beams patterns)...
r177
from .utils.overJroShow import overJroShow
from .utils.OverJRO import OverJRO
Juan C. Espinoza
Proyecto base en Django (refs #259) ...
r0 # Create your views here.
Fiorella Quino
Task #714: Modulo web del ABS ...
r166 import json, ast
def get_values_from_form(form_data):
sublistup = []
sublistdown = []
subtxlistup = []
subtxlistdown = []
subrxlistup = []
subrxlistdown = []
up_values_list = []
down_values_list = []
up_txvalues_list = []
down_txvalues_list = []
up_rxvalues_list = []
down_rxvalues_list = []
values_list = {}
cont = 1
for i in range(1,65):
x = float(form_data['abs_up'+str(i)])
y = float(form_data['abs_down'+str(i)])
sublistup.append(x)
sublistdown.append(y)
if str(i) in form_data.getlist('uptx_checks'):
subtxlistup.append(1)
else:
subtxlistup.append(0)
if str(i) in form_data.getlist('downtx_checks'):
subtxlistdown.append(1)
else:
subtxlistdown.append(0)
if str(i) in form_data.getlist('uprx_checks'):
subrxlistup.append(1)
else:
subrxlistup.append(0)
if str(i) in form_data.getlist('downrx_checks'):
subrxlistdown.append(1)
else:
subrxlistdown.append(0)
cont = cont+1
if cont == 9:
up_values_list.append(sublistup)
down_values_list.append(sublistdown)
sublistup = []
sublistdown = []
up_txvalues_list.append(subtxlistup)
down_txvalues_list.append(subtxlistdown)
subtxlistup = []
subtxlistdown = []
up_rxvalues_list.append(subrxlistup)
down_rxvalues_list.append(subrxlistdown)
subrxlistup = []
subrxlistdown = []
cont = 1
list_uesup = []
list_uesdown = []
for i in range(1,5):
if form_data['ues_up'+str(i)] == '':
list_uesup.append(0.0)
else:
list_uesup.append(float(form_data['ues_up'+str(i)]))
if form_data['ues_down'+str(i)] == '':
list_uesdown.append(0.0)
else:
list_uesdown.append(float(form_data['ues_down'+str(i)]))
onlyrx_list = form_data.getlist('onlyrx')
only_rx = {}
if '1' in onlyrx_list:
only_rx['up'] = True
else:
only_rx['up'] = False
if '2' in onlyrx_list:
only_rx['down'] = True
else:
only_rx['down'] = False
antenna = {'antenna_up': up_values_list, 'antenna_down': down_values_list}
tx = {'up': up_txvalues_list, 'down': down_txvalues_list}
rx = {'up': up_rxvalues_list, 'down': down_rxvalues_list}
ues = {'up': list_uesup, 'down': list_uesdown}
name = str(form_data['beam_name'])
beam_data = {'name': name, 'antenna': antenna, 'tx': tx, 'rx': rx, 'ues': ues, 'only_rx': only_rx}
return beam_data
def abs_conf(request, id_conf):
Fiorella Quino
Task #714: Modulo Web ABS...
r182 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
beams = ABSBeam.objects.filter(abs_conf=conf)
active_beam_id = json.loads(conf.active_beam)
#------------Colors for Active Beam:-------------
modules_status = json.loads(conf.module_status)
color_status = {}
for status in modules_status:
if modules_status[status] == 2: #Running background-color: #ff0000;
color_status[status] = 'bgcolor=#00cc00'
elif modules_status[status] == 1: #Connected background-color: #ee902c;
color_status[status] = 'bgcolor=#ee902c'
else: #Disconnected background-color: #00cc00;
color_status[status] = 'bgcolor=#FF0000'
#------------------------------------------------
Fiorella Quino
Task #714: Modulo web del ABS ...
r166
kwargs = {}
kwargs['status'] = conf.device.get_status_display()
kwargs['dev_conf'] = conf
kwargs['dev_conf_keys'] = ['name',]
kwargs['title'] = 'ABS Configuration'
kwargs['suptitle'] = 'Details'
kwargs['no_play'] = True
kwargs['button'] = 'Edit Configuration'
Fiorella Quino
Task #714: Modulo Web ABS...
r182 #------------------Active Beam-----------------------
try:
active_beam_id = active_beam_id['active_beam']
active_beam = ABSBeam.objects.get(pk=active_beam_id)
kwargs['active_beam'] = active_beam
for beam in beams:
if beam.id == active_beam.id:
beam.color_status=color_status
except:
active_beam = ''
#----------------------------------------------------
Fiorella Quino
Task #714: Modulo web del ABS ...
r166 kwargs['beams'] = beams
Fiorella Quino
Task #714: Modulo Web ABS...
r182 kwargs['modules_status'] = modules_status
kwargs['color_status'] = color_status
Fiorella Quino
Task #714: Modulo web del ABS ...
r166
kwargs['only_stop'] = True
###### SIDEBAR ######
kwargs.update(sidebar(conf=conf))
return render(request, 'abs_conf.html', kwargs)
def abs_conf_edit(request, id_conf):
conf = get_object_or_404(ABSConfiguration, pk=id_conf)
Fiorella Quino
Task #714: Modulo Web ABS...
r182
Fiorella Quino
Task #714: Modulo Web ABS...
r181 beams = ABSBeam.objects.filter(abs_conf=conf)
print beams
Fiorella Quino
Task #714: Modulo web del ABS ...
r166
if request.method=='GET':
form = ABSConfigurationForm(instance=conf)
if request.method=='POST':
form = ABSConfigurationForm(request.POST, instance=conf)
if form.is_valid():
conf = form.save(commit=False)
conf.save()
return redirect('url_abs_conf', id_conf=conf.id)
###### SIDEBAR ######
kwargs = {}
kwargs['dev_conf'] = conf
#kwargs['id_dev'] = conf.id
kwargs['id_conf'] = conf.id
kwargs['form'] = form
kwargs['abs_beams'] = beams
kwargs['title'] = 'Device Configuration'
kwargs['suptitle'] = 'Edit'
kwargs['button'] = 'Save'
kwargs['edit'] = True
return render(request, 'abs_conf_edit.html', kwargs)
Fiorella Quino
Task #714: Modulo Web ABS: send beam position function (models, views, urls, abs_conf) ...
r183 def send_beam(request, id_conf, id_beam):
conf = get_object_or_404(ABSConfiguration, pk=id_conf)
beam = get_object_or_404(ABSBeam, pk=id_beam)
beams_list = ABSBeam.objects.filter(abs_conf=conf)
#To set this beam as an Active Beam
beam.set_activebeam()
#To send beam position to abs-modules
i = 0
for b in beams_list:
if b.id == int(id_beam):
break
else:
i += 1
beam_pos = i + 1 #Estandarizar
print 'Position: ',beam_pos
conf.send_beam_num(beam_pos)
return redirect('url_abs_conf', conf.id)
Fiorella Quino
Task #714: Modulo web del ABS ...
r166
def add_beam(request, id_conf):
conf = get_object_or_404(ABSConfiguration, pk=id_conf)
confs = Configuration.objects.all()
if request.method=='GET':
#form = ABSBeamEditForm()
form = ABSBeamAddForm()
if request.method=='POST':
form = ABSBeamAddForm(request.POST)
beam_data = get_values_from_form(request.POST)
new_beam = ABSBeam(
name =beam_data['name'],
antenna =json.dumps(beam_data['antenna']),
abs_conf=conf,
tx =json.dumps(beam_data['tx']),
rx =json.dumps(beam_data['rx']),
ues =json.dumps(beam_data['ues']),
only_rx =json.dumps(beam_data['only_rx'])
)
new_beam.save()
#---Update 6bits configuration and add beam to abs configuration beams list.
new_beam.modules_6bits()
Fiorella Quino
Task #714: Modulo Web ABS...
r182 #new_beam.add_beam2list()
Fiorella Quino
Task #714: Modulo web del ABS ...
r166 messages.success(request, 'Beam: "%s" has been added.' % new_beam.name)
return redirect('url_edit_abs_conf', conf.id)
###### SIDEBAR ######
kwargs = {}
#kwargs['dev_conf'] = conf.device
#kwargs['id_dev'] = conf.device
kwargs['id_conf'] = conf.id
kwargs['form'] = form
kwargs['title'] = 'ABS Beams'
kwargs['suptitle'] = 'Add Beam'
kwargs['button'] = 'Add'
kwargs['no_sidebar'] = True
#kwargs['previous'] = conf.get_absolute_url_edit()
kwargs['edit'] = True
return render(request, 'abs_add_beam.html', kwargs)
def edit_beam(request, id_conf, id_beam):
conf = get_object_or_404(ABSConfiguration, pk=id_conf)
beam = get_object_or_404(ABSBeam, pk=id_beam)
if request.method=='GET':
form = ABSBeamEditForm(initial={'beam': beam})
if request.method=='POST':
form = ABSBeamEditForm(request.POST)
beam_data = get_values_from_form(request.POST)
beam.dict_to_parms(beam_data)
beam.save()
messages.success(request, 'Beam: "%s" has been updated.' % beam.name)
return redirect('url_edit_abs_conf', conf.id)
###### SIDEBAR ######
kwargs = {}
kwargs['id_conf'] = conf.id
kwargs['form'] = form
kwargs['title'] = 'ABS Beams'
kwargs['suptitle'] = 'Edit Beam'
kwargs['button'] = 'Save'
kwargs['no_sidebar'] = True
#kwargs['previous'] = conf.get_absolute_url_edit()
kwargs['edit'] = True
Fiorella Quino
Task #716: ABS View...
r168 return render(request, 'abs_edit_beam.html', kwargs)
Fiorella Quino
Task #714: Modulo web del ABS ...
r166
def remove_beam(request, id_conf, id_beam):
conf = get_object_or_404(ABSConfiguration, pk=id_conf)
beam = get_object_or_404(ABSBeam, pk=id_beam)
if request.method=='POST':
if beam:
try:
beam.remove_beamfromlist()
beam.delete()
messages.success(request, 'Beam: "%s" has been deleted.' % beam)
except:
messages.error(request, 'Unable to delete beam: "%s".' % beam)
return redirect('url_edit_abs_conf', conf.id)
###### SIDEBAR ######
kwargs = {}
kwargs['object'] = beam
kwargs['delete'] = True
kwargs['title'] = 'Delete'
kwargs['suptitle'] = 'Beam'
kwargs['previous'] = conf.get_absolute_url_edit()
return render(request, 'confirm.html', kwargs)
Fiorella Quino
Task #716: Vista ABS (urls.py for plot beams patterns)...
r177
Juan C. Espinoza
Improve abs pattern views, templates and plots....
r180 def plot_patterns(request, id_conf, id_beam=None):
Fiorella Quino
Task #716: Vista ABS (urls.py for plot beams patterns)...
r177
kwargs = {}
Juan C. Espinoza
Improve abs pattern views, templates and plots....
r180 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
beams = ABSBeam.objects.filter(abs_conf=conf)
if id_beam:
beam = get_object_or_404(ABSBeam, pk=id_beam)
kwargs['beam'] = beam
Fiorella Quino
Task #716: Vista ABS (urls.py for plot beams patterns)...
r177
Juan C. Espinoza
Improve abs pattern views, templates and plots....
r180 ###### SIDEBAR ######
Fiorella Quino
Task #716: Vista ABS (urls.py for plot beams patterns)...
r177
kwargs['dev_conf'] = conf.device
kwargs['id_dev'] = conf.device
kwargs['id_conf'] = conf.id
kwargs['abs_beams'] = beams
kwargs['title'] = 'ABS Patterns'
kwargs['suptitle'] = conf.name
kwargs['no_sidebar'] = True
return render(request, 'abs_patterns.html', kwargs)
Juan C. Espinoza
Improve abs pattern views, templates and plots....
r180 def plot_pattern(request, id_conf, id_beam, antenna):
if antenna=='down':
sleep(3)
conf = get_object_or_404(ABSConfiguration, pk=id_conf)
beam = get_object_or_404(ABSBeam, pk=id_beam)
Fiorella Quino
Task #716: Vista ABS (urls.py for plot beams patterns)...
r177
Juan C. Espinoza
Improve abs pattern views, templates and plots....
r180 name = conf.experiment.name
just_rx = 1 if json.loads(beam.only_rx)[antenna] else 0
phases = json.loads(beam.antenna)['antenna_{}'.format(antenna)]
gain_tx = json.loads(beam.tx)[antenna]
gain_rx = json.loads(beam.rx)[antenna]
ues = json.loads(beam.ues)[antenna]
newOverJro = overJroShow(name)
fig = newOverJro.plotPattern2(datetime.today(), phases, gain_tx, gain_rx, ues, just_rx)
response=HttpResponse(content_type='image/png')
fig.canvas.print_png(response)
Fiorella Quino
Task #716: Vista ABS (urls.py for plot beams patterns)...
r177 return response