##// END OF EJS Templates
new structure and views.py (pedestal) update
new structure and views.py (pedestal) update

File last commit:

r366:bdf15dfd5ebe
r366:bdf15dfd5ebe
Show More
views.py
139 lines | 4.3 KiB | text/x-python | PythonLexer
import json
from django.contrib import messages
from django.utils.safestring import mark_safe
from django.shortcuts import render, redirect, get_object_or_404, HttpResponse
from django.contrib.auth.decorators import login_required
from apps.main.models import Experiment, Device
from apps.main.views import sidebar
from .models import USRPRXConfiguration
from .forms import USRPRXConfigurationForm, USRPRXImportForm
def conf(request, conf_id):
conf = get_object_or_404(USRPRXConfiguration, pk=conf_id)
kwargs = {}
kwargs['dev_conf'] = conf
kwargs['dev_conf_keys'] = ['ip_address', 'daughterboard', 'antenna', 'samplerate', 'frequency', 'datadir', 'clocksource', 'timesource', 'clockrate']
kwargs['title'] = 'Configuration'
kwargs['suptitle'] = 'Detail'
kwargs['button'] = 'Edit Configuration'
conf.status_device()
###### SIDEBAR ######
kwargs.update(sidebar(conf=conf))
return render(request, 'usrp_rx_conf.html', kwargs)
@login_required
def conf_edit(request, conf_id):
print(conf_id)
conf = get_object_or_404(USRPRXConfiguration, pk=conf_id)
print(conf)
#print("fin de carga de params")
if request.method=='GET':
print("GET case")
form = USRPRXConfigurationForm(instance=conf)
print(form)
elif request.method=='POST':
print("ingreso a post conf edit")
line_data = {}
conf_data = {}
clock_data = {}
extras = []
print("Inicio impresion POST#####")
print(request.POST.items)
print("Fin impresion de POST items#####")
#classified post fields
for label,value in request.POST.items():
if label=='csrfmiddlewaretoken':
continue
if label.count('|')==0:
if label in ('mode', 'multiplier', 'divisor', 'reference'):
clock_data[label] = value
else:
conf_data[label] = value
continue
elif label.split('|')[0]!='-1':
extras.append(label)
continue
#print(label)
x, pk, name = label.split('|')
if name=='codes':
value = [s for s in value.split('\r\n') if s]
if pk in line_data:
line_data[pk][name] = value
else:
line_data[pk] = {name:value}
#print(line_data[pk])
#update conf
form = USRPRXConfigurationForm(conf_data, instance=conf)
#print(request.POST.items())
if form.is_valid():
form.save()
messages.success(request, 'USRP Rx configuration successfully updated')
return redirect(conf.get_absolute_url())
kwargs = {}
kwargs['dev_conf'] = conf
kwargs['form'] = form
kwargs['edit'] = True
kwargs['title'] = 'USRP Rx Configuration'
kwargs['suptitle'] = 'Edit'
kwargs['button'] = 'Update'
print(kwargs)
print(form)
return render(request, 'usrp_rx_conf_edit.html', kwargs)
def import_file(request, conf_id):
conf = get_object_or_404(USRPRXConfiguration, pk=conf_id)
if request.method=='POST':
form = USRPRXImportForm(request.POST, request.FILES)
if form.is_valid():
try:
data = conf.import_from_file(request.FILES['file_name'])
conf.dict_to_parms(data)
conf.update_pulses()
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'], repr(e)))
else:
messages.warning(request, 'Your current configuration will be replaced')
form = USRPRXImportForm()
kwargs = {}
kwargs['form'] = form
kwargs['title'] = 'USRP Rx Configuration'
kwargs['suptitle'] = 'Import file'
kwargs['button'] = 'Upload'
kwargs['previous'] = conf.get_absolute_url()
return render(request, 'usrp_rx_import.html', kwargs)
def conf_raw(request, conf_id):
conf = get_object_or_404(USRPRXConfiguration, pk=conf_id)
raw = conf.write_device(raw=True)
return HttpResponse(raw, content_type='application/json')