|
|
from django.shortcuts import redirect, render, get_object_or_404
|
|
|
from django.contrib import messages
|
|
|
|
|
|
from apps.main.models import Experiment, Configuration
|
|
|
from .models import CGSConfiguration
|
|
|
|
|
|
from .forms import CGSConfigurationForm
|
|
|
from apps.main.views import sidebar
|
|
|
|
|
|
import requests
|
|
|
import json
|
|
|
#from __builtin__ import None
|
|
|
# Create your views here.
|
|
|
|
|
|
def cgs_conf(request, id_conf):
|
|
|
|
|
|
conf = get_object_or_404(CGSConfiguration, pk=id_conf)
|
|
|
|
|
|
ip=conf.device.ip_address
|
|
|
port=conf.device.port_address
|
|
|
|
|
|
kwargs = {}
|
|
|
|
|
|
if request.method=='GET':
|
|
|
#r: response = icon, status
|
|
|
try:
|
|
|
route = "http://" + str(ip) + ":" + str(port) + "/status/ad9548"
|
|
|
r = requests.get(route)
|
|
|
response = str(r.text)
|
|
|
response = response.split(";")
|
|
|
icon = response[0]
|
|
|
status = response[-1]
|
|
|
#print r.text
|
|
|
#"icon" could be: "alert" or "okay"
|
|
|
# Si hay alerta pero esta conectado
|
|
|
if "alert" in icon:
|
|
|
if "Starting Up" in status: #No Esta conectado
|
|
|
kwargs['connected'] = False
|
|
|
else:
|
|
|
kwargs['connected'] = True
|
|
|
elif "okay" in icon:
|
|
|
kwargs['connected'] = True
|
|
|
else:
|
|
|
kwargs['connected'] = False
|
|
|
|
|
|
except:
|
|
|
kwargs['connected'] = False
|
|
|
status = "The Device is not connected."
|
|
|
|
|
|
if not kwargs['connected']:
|
|
|
messages.error(request, message=status)
|
|
|
|
|
|
kwargs['dev_conf'] = conf
|
|
|
kwargs['dev_conf_keys'] = ['experiment', 'device',
|
|
|
'freq0', 'freq1',
|
|
|
'freq2', 'freq3']
|
|
|
|
|
|
kwargs['title'] = 'CGS Configuration'
|
|
|
kwargs['suptitle'] = 'Details'
|
|
|
|
|
|
kwargs['button'] = 'Edit Configuration'
|
|
|
|
|
|
###### SIDEBAR ######
|
|
|
kwargs.update(sidebar(conf))
|
|
|
|
|
|
return render(request, 'cgs_conf.html', kwargs)
|
|
|
|
|
|
def cgs_conf_edit(request, id_conf):
|
|
|
|
|
|
conf = get_object_or_404(CGSConfiguration, pk=id_conf)
|
|
|
|
|
|
if request.method=='GET':
|
|
|
form = CGSConfigurationForm(instance=conf)
|
|
|
|
|
|
if request.method=='POST':
|
|
|
form = CGSConfigurationForm(request.POST, instance=conf)
|
|
|
|
|
|
if form.is_valid():
|
|
|
conf = form.save(commit=False)
|
|
|
|
|
|
if conf.verify_frequencies():
|
|
|
|
|
|
if conf.freq0 == None: conf.freq0 = 0
|
|
|
if conf.freq1 == None: conf.freq0 = 0
|
|
|
if conf.freq2 == None: conf.freq0 = 0
|
|
|
if conf.freq3 == None: conf.freq0 = 0
|
|
|
|
|
|
|
|
|
data = {'f0': str(conf.freq0), 'f1': str(conf.freq1),
|
|
|
'f2': str(conf.freq2), 'f3': str(conf.freq3)}
|
|
|
json_data = json.dumps(data)
|
|
|
conf.parameters = json_data
|
|
|
|
|
|
conf.save()
|
|
|
return redirect('url_cgs_conf', id_conf=conf.id)
|
|
|
|
|
|
##ERRORS
|
|
|
|
|
|
kwargs = {}
|
|
|
kwargs['id_dev'] = conf.id
|
|
|
kwargs['form'] = form
|
|
|
kwargs['title'] = 'Device Configuration'
|
|
|
kwargs['suptitle'] = 'Edit'
|
|
|
kwargs['button'] = 'Save'
|
|
|
|
|
|
|
|
|
###### SIDEBAR ######
|
|
|
kwargs.update(sidebar(conf))
|
|
|
|
|
|
return render(request, 'cgs_conf_edit.html', kwargs)
|
|
|
|
|
|
def cgs_conf_write(request, id_conf):
|
|
|
|
|
|
conf = get_object_or_404(CGSConfiguration, pk=id_conf)
|
|
|
ip=conf.device.ip_address
|
|
|
port=conf.device.port_address
|
|
|
|
|
|
#Frequencies from form
|
|
|
if conf.freq0 == None: conf.freq0 = 0
|
|
|
if conf.freq1 == None: conf.freq0 = 0
|
|
|
if conf.freq2 == None: conf.freq0 = 0
|
|
|
if conf.freq3 == None: conf.freq0 = 0
|
|
|
f0 = int(conf.freq0)
|
|
|
f1 = int(conf.freq1)
|
|
|
f2 = int(conf.freq2)
|
|
|
f3 = int(conf.freq3)
|
|
|
|
|
|
try:
|
|
|
post_data = {"f0":f0, "f1":f1, "f2":f2, "f3":f3}
|
|
|
route = "http://" + str(ip) + ":" + str(port) + "/frequencies/"
|
|
|
r = requests.post(route, post_data)
|
|
|
text = r.text
|
|
|
text = text.split(',')
|
|
|
|
|
|
try:
|
|
|
if len(text)>1:
|
|
|
title = text[0]
|
|
|
status = text[1]
|
|
|
status_ok = r.status_code
|
|
|
if title == "okay":
|
|
|
messages.success(request, status)
|
|
|
else:
|
|
|
messages.error(request, status)
|
|
|
|
|
|
else:
|
|
|
title = text[0]
|
|
|
messages.error(request, title)
|
|
|
|
|
|
except:
|
|
|
messages.error(request, "An hardware error was found.")
|
|
|
|
|
|
except:
|
|
|
messages.error(request, "Could not write parameters.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return redirect('url_cgs_conf', id_conf=conf.id)
|
|
|
|
|
|
def cgs_conf_read(request, id_conf):
|
|
|
|
|
|
conf = get_object_or_404(CGSConfiguration, pk=id_conf)
|
|
|
|
|
|
ip=conf.device.ip_address
|
|
|
port=conf.device.port_address
|
|
|
|
|
|
if request.method=='POST':
|
|
|
form = CGSConfigurationForm(request.POST, instance=conf)
|
|
|
|
|
|
if form.is_valid():
|
|
|
cgs_model = form.save(commit=False)
|
|
|
|
|
|
if cgs_model.verify_frequencies():
|
|
|
|
|
|
cgs_model.save()
|
|
|
return redirect('url_cgs_conf', id_conf=conf.id)
|
|
|
|
|
|
messages.error(request, "Parameters could not be saved. Invalid parameters")
|
|
|
|
|
|
data = {}
|
|
|
|
|
|
|
|
|
if request.method=='GET':
|
|
|
#r: response = icon, status
|
|
|
route = "http://" + str(ip) + ":" + str(port) + "/status/ad9548"
|
|
|
try:
|
|
|
r = requests.get(route)
|
|
|
response = str(r.text)
|
|
|
response = response.split(";")
|
|
|
icon = response[0]
|
|
|
status = response[-1]
|
|
|
print r.text
|
|
|
#"icon" could be: "alert" or "okay"
|
|
|
if "okay" in icon:
|
|
|
messages.success(request, status)
|
|
|
else:
|
|
|
messages.error(request, status)
|
|
|
#Get Frequencies
|
|
|
route = "http://" + str(ip) + ":" + str(port) + "/frequencies/"
|
|
|
#frequencies = requests.get('http://10.10.10.175:8080/frequencies/')
|
|
|
frequencies = requests.get(route)
|
|
|
frequencies = frequencies.json()
|
|
|
frequencies = frequencies.get("Frecuencias")
|
|
|
f0 = frequencies.get("f0")
|
|
|
f1 = frequencies.get("f1")
|
|
|
f2 = frequencies.get("f2")
|
|
|
f3 = frequencies.get("f3")
|
|
|
print f0,f1,f2,f3
|
|
|
|
|
|
|
|
|
if not response:
|
|
|
messages.error(request, "Could not read parameters from Device")
|
|
|
return redirect('url_cgs_conf', id_conf=conf.id)
|
|
|
|
|
|
data = {'experiment' : conf.experiment.id,
|
|
|
'device' : conf.device.id,
|
|
|
'freq0' : f0,
|
|
|
'freq1' : f1,
|
|
|
'freq2' : f2,
|
|
|
'freq3' : f3,
|
|
|
}
|
|
|
except:
|
|
|
messages.error(request, "Could not read parameters from Device")
|
|
|
data = {'experiment' : conf.experiment.id,
|
|
|
'device' : conf.device.id,
|
|
|
'freq0' : None,
|
|
|
'freq1' : None,
|
|
|
'freq2' : None,
|
|
|
'freq3' : None,
|
|
|
}
|
|
|
return redirect('url_cgs_conf', id_conf=conf.id)
|
|
|
|
|
|
form = CGSConfigurationForm(initial = data)
|
|
|
|
|
|
kwargs = {}
|
|
|
kwargs['id_dev'] = conf.id
|
|
|
kwargs['form'] = form
|
|
|
kwargs['title'] = 'Device Configuration'
|
|
|
kwargs['suptitle'] = 'Parameters read from device'
|
|
|
kwargs['button'] = 'Save'
|
|
|
|
|
|
###### SIDEBAR ######
|
|
|
kwargs.update(sidebar(conf))
|
|
|
|
|
|
return render(request, 'cgs_conf_edit.html', kwargs)
|
|
|
|
|
|
def cgs_conf_export(request, id_conf):
|
|
|
|
|
|
conf = get_object_or_404(CGSConfiguration, pk=id_conf)
|
|
|
ip=conf.device.ip_address
|
|
|
port=conf.device.port_address
|
|
|
|
|
|
if request.method=='POST':
|
|
|
return HttpResponse(conf.parameters, content_type="application/json")
|
|
|
|
|
|
return render(request, 'cgs_conf.html')
|
|
|
#return redirect(conf.get_absolute_url())
|
|
|
|
|
|
|