##// END OF EJS Templates
Update abs operations
Update abs operations

File last commit:

r313:9bf21dca53e0
r313:9bf21dca53e0
Show More
views.py
415 lines | 12.2 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
Update abs operations
r313 from django.views.decorators.csrf import csrf_exempt
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
Fix abs plotting patterns
r309 import io
Juan C. Espinoza
Proyecto base en Django (refs #259) ...
r0
Fiorella Quino
Task #769: Implementacion Scheduler para ABS, Task #717: Implementacion de start_device() y stop_device()...
r205 from apps.main.models import Device, Configuration, Experiment
Fiorella Quino
Task #714: Modulo web del ABS ...
r166 from apps.main.views import sidebar
from .models import ABSConfiguration, ABSBeam
Fiorella Quino
Task #716: Vista ABS: import function...
r190 from .forms import ABSConfigurationForm, ABSBeamEditForm, ABSBeamAddForm, ABSImportForm
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
Juan C. Espinoza
Review & fix ABS module
r307 def abs_conf(request, id_conf):
Fiorella Quino
Task #714: Modulo web del ABS ...
r166
Juan C. Espinoza
Review & fix ABS module
r307 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
beams = ABSBeam.objects.filter(abs_conf=conf)
Fiorella Quino
Task #714: Modulo Web ABS...
r182 #------------Colors for Active Beam:-------------
Juan C. Espinoza
Review & fix ABS module
r307 all_status = {}
Fiorella Quino
Task #715: API ABS, "/status" route and function was developed in Restful Server....
r203 module_messages = json.loads(conf.module_messages)
Fiorella Quino
Task #714: Modulo Web ABS...
r182
color_status = {}
Juan C. Espinoza
Review & fix ABS module
r307 for i, status in enumerate(conf.module_status):
if status == '3': #Running background-color: #00cc00;
all_status['{}'.format(i+1)] = 2
color_status['{}'.format(i+1)] = 'class=text-success'#'bgcolor=#00cc00'
elif status == '1': #Connected background-color: #ee902c;
all_status['{}'.format(i+1)] = 1
color_status['{}'.format(i+1)] = 'class=text-warning'#'bgcolor=#ee902c'
else: #Disconnected background-color: #ff0000;
all_status['{}'.format(i+1)] = 0
color_status['{}'.format(i+1)] = 'class=text-danger'#'bgcolor=#FF0000'
Fiorella Quino
Task #714: Modulo Web ABS...
r182 #------------------------------------------------
Fiorella Quino
Task #714: Modulo web del ABS ...
r166
kwargs = {}
Fiorella Quino
Task #714: Modulo ABS...
r199 kwargs['connected_modules'] = str(conf.connected_modules())+'/64'
Fiorella Quino
Task #714: Modulo web del ABS ...
r166 kwargs['dev_conf'] = conf
Juan C. Espinoza
Review & fix ABS module
r307
Fiorella Quino
Task #716: Vista ABS, change_beam button is disabled if operation_mode is automatic, main abs view show current active beam...
r206 if conf.operation_mode == 0:
kwargs['dev_conf_keys'] = ['name', 'operation_mode']
else:
kwargs['dev_conf_keys'] = ['name', 'operation_mode', 'operation_value']
Fiorella Quino
Task #714: Modulo web del ABS ...
r166
kwargs['title'] = 'ABS Configuration'
kwargs['suptitle'] = 'Details'
kwargs['button'] = 'Edit Configuration'
Juan C. Espinoza
Review & fix ABS module
r307
if conf.active_beam != 0:
kwargs['active_beam'] = int(conf.active_beam)
kwargs['beams'] = beams
kwargs['modules_status'] = all_status
Fiorella Quino
Task #714: Modulo Web ABS...
r182 kwargs['color_status'] = color_status
Fiorella Quino
Task #715: API ABS, "/status" route and function was developed in Restful Server....
r203 kwargs['module_messages'] = module_messages
Fiorella Quino
Task #714: Modulo web del ABS ...
r166 ###### SIDEBAR ######
kwargs.update(sidebar(conf=conf))
return render(request, 'abs_conf.html', kwargs)
Fiorella Quino
Task #961: Actualizar status de modulos ABS con subproceso...
r258
Fiorella Quino
Task #714: Modulo web del ABS ...
r166 def abs_conf_edit(request, id_conf):
conf = get_object_or_404(ABSConfiguration, pk=id_conf)
Fiorella Quino
Task #716: Vista ABS: import function...
r190
Fiorella Quino
Task #714: Modulo Web ABS...
r181 beams = ABSBeam.objects.filter(abs_conf=conf)
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)
Update abs operations
r313 @csrf_exempt
def abs_conf_alert(request):
if request.method == 'POST':
print request.POST
return HttpResponse(json.dumps({'result':1}), content_type='application/json')
else:
return redirect('index')
Fiorella Quino
Task #714: Modulo web del ABS ...
r166
Fiorella Quino
Task #716: Vista ABS: import function...
r190 def import_file(request, id_conf):
conf = get_object_or_404(ABSConfiguration, pk=id_conf)
if request.method=='POST':
form = ABSImportForm(request.POST, request.FILES)
if form.is_valid():
try:
parms = conf.import_from_file(request.FILES['file_name'])
if parms:
conf.update_from_file(parms)
messages.success(request, 'Configuration "%s" loaded succesfully' % request.FILES['file_name'])
return redirect(conf.get_absolute_url_edit())
except Exception as e:
messages.error(request, 'Error parsing file: "%s" - %s' % (request.FILES['file_name'], e))
else:
messages.warning(request, 'Your current configuration will be replaced')
form = ABSImportForm()
kwargs = {}
kwargs['form'] = form
kwargs['title'] = 'ABS Configuration'
kwargs['suptitle'] = 'Import file'
kwargs['button'] = 'Upload'
kwargs['previous'] = conf.get_absolute_url()
return render(request, 'abs_import.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)
Juan C. Espinoza
Review & fix ABS module
r307 conf.active_beam = id_beam
Fiorella Quino
Task #714: Modulo Web ABS: send beam position function (models, views, urls, abs_conf) ...
r183 i = 0
for b in beams_list:
if b.id == int(id_beam):
break
else:
i += 1
beam_pos = i + 1 #Estandarizar
Fiorella Quino
to select Network Interface and to test with TIVA...
r278 print '%s Position: %s' % (beam.name, str(beam_pos))
Juan C. Espinoza
Review & fix ABS module
r307 conf.send_beam(beam_pos)
Fiorella Quino
Task #714: Modulo Web ABS: send beam position function (models, views, urls, abs_conf) ...
r183
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 = ABSBeamAddForm()
if request.method=='POST':
form = ABSBeamAddForm(request.POST)
beam_data = get_values_from_form(request.POST)
new_beam = ABSBeam(
Juan C. Espinoza
Review & fix ABS module
r307 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'])
Fiorella Quino
Task #714: Modulo web del ABS ...
r166 )
new_beam.save()
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.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)
Fiorella Quino
Task #716: Vista ABS: import function...
r190
Juan C. Espinoza
Improve abs pattern views, templates and plots....
r180 if id_beam:
beam = get_object_or_404(ABSBeam, pk=id_beam)
Juan C. Espinoza
Fix abs plotting patterns
r309 kwargs['beam'] = beam
Fiorella Quino
Task #716: Vista ABS: import function...
r190
###### 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):
Fiorella Quino
Task #716: Vista ABS: import function...
r190
Juan C. Espinoza
Improve abs pattern views, templates and plots....
r180 if antenna=='down':
sleep(3)
Fiorella Quino
Task #716: Vista ABS: import function...
r190
Juan C. Espinoza
Improve abs pattern views, templates and plots....
r180 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
beam = get_object_or_404(ABSBeam, pk=id_beam)
Fiorella Quino
Task #716: Vista ABS: import function...
r190 just_rx = 1 if json.loads(beam.only_rx)[antenna] else 0
Juan C. Espinoza
Improve abs pattern views, templates and plots....
r180 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]
Juan C. Espinoza
Fix abs plotting patterns
r309 newOverJro = overJroShow(beam.name)
Fiorella Quino
Task #716: Vista ABS: import function...
r190 fig = newOverJro.plotPattern2(datetime.today(), phases, gain_tx, gain_rx, ues, just_rx)
Juan C. Espinoza
Fix abs plotting patterns
r309 buf = io.BytesIO()
fig.savefig(buf, format='png')
response = HttpResponse(buf.getvalue(), content_type='image/png')
Fiorella Quino
Task #716: Vista ABS (urls.py for plot beams patterns)...
r177 return response
Update abs operations
r313