##// END OF EJS Templates
Improve abs pattern views, templates and plots....
Improve abs pattern views, templates and plots. git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@203 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71

File last commit:

r180:d4783015f56a
r180:d4783015f56a
Show More
views.py
365 lines | 10.0 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
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):
conf = get_object_or_404(ABSConfiguration, pk=id_conf)
beams_dict = ast.literal_eval(conf.beams)
beams = []
for beam_id in range(1,len(beams_dict)+1):
beam = ABSBeam.objects.get(pk=beams_dict['beam'+str(beam_id)])
beams.append(beam)
beams_id = ast.literal_eval(conf.beams)
ip=conf.device.ip_address
port=conf.device.port_address
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'
#kwargs['no_play'] = True
kwargs['beams_id'] = beams_id
kwargs['beams'] = beams
kwargs['beam_selector'] = 0
#kwargs['my_data'] = simplejson.dumps(beams)
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)
beams_list = ast.literal_eval(conf.beams)
i = 1
beams = []
for b in beams_list:
beam = ABSBeam.objects.get(pk=beams_list['beam'+str(i)])
beams.append(beam)
i=i+1
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)
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()
new_beam.add_beam2list()
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