views.py
198 lines
| 5.8 KiB
| text/x-python
|
PythonLexer
|
r27 | from django.shortcuts import redirect, render, get_object_or_404 | |
|
r31 | from django.contrib import messages | |
|
r4 | ||
|
r27 | from apps.main.models import Experiment, Configuration | |
|
r6 | from .models import CGSConfiguration | |
|
r31 | ||
|
r27 | from .forms import CGSConfigurationForm | |
|
r31 | from apps.main.views import sidebar | |
import requests | |||
|
r0 | # Create your views here. | |
|
r4 | ||
|
r27 | def cgs_conf(request, id_conf): | |
conf = get_object_or_404(CGSConfiguration, pk=id_conf) | |||
|
r31 | ip=conf.device.ip_address | |
port=conf.device.port_address | |||
|
r27 | kwargs = {} | |
|
r36 | ||
if request.method=='GET': | |||
#r: response = icon, status | |||
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" | |||
if "okay" in icon or "alert" in icon: | |||
kwargs['connected'] = True | |||
if not kwargs['connected']: | |||
messages.error(request, message=status) | |||
|
r27 | 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 ###### | |||
|
r31 | kwargs.update(sidebar(conf)) | |
|
r27 | ||
return render(request, 'cgs_conf.html', kwargs) | |||
|
r4 | ||
|
r27 | 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) | |||
|
r8 | if form.is_valid(): | |
|
r31 | conf = form.save(commit=False) | |
if conf.verify_frequencies(): | |||
conf.save() | |||
return redirect('url_cgs_conf', id_conf=conf.id) | |||
##ERRORS | |||
|
r27 | ||
kwargs = {} | |||
|
r31 | kwargs['id_dev'] = conf.id | |
|
r27 | kwargs['form'] = form | |
kwargs['title'] = 'Device Configuration' | |||
kwargs['suptitle'] = 'Edit' | |||
|
r31 | 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 | |||
|
r35 | f0 = int(conf.freq0) | |
f1 = int(conf.freq1) | |||
f2 = int(conf.freq2) | |||
f3 = int(conf.freq3) | |||
|
r31 | post_data = {"f0":f0, "f1":f1, "f2":f2, "f3":f3} | |
route = "http://" + str(ip) + ":" + str(port) + "/frequencies/" | |||
|
r35 | r = requests.post(route, post_data) | |
text = r.text | |||
text = text.split(',') | |||
try: | |||
title = text[0] | |||
status = text[1] | |||
status_ok = r.status_code | |||
if status_ok == 200 or title == "okay": | |||
messages.success(request, status) | |||
else: | |||
messages.error(request, status) | |||
except: | |||
messages.error(request, "An hardware error was found") | |||
|
r31 | ||
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" | |||
r = requests.get(route) | |||
response = str(r.text) | |||
response = response.split(";") | |||
icon = response[0] | |||
status = response[-1] | |||
|
r35 | print r.text | |
|
r31 | #"icon" could be: "alert" or "okay" | |
if "okay" in icon: | |||
messages.success(request, status) | |||
else: | |||
messages.error(request, status) | |||
#Get Frequencies | |||
|
r34 | route = "http://" + str(ip) + ":" + str(port) + "/frequencies/" | |
#frequencies = requests.get('http://10.10.10.175:8080/frequencies/') | |||
frequencies = requests.get(route) | |||
|
r31 | 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 | |||
|
r35 | ||
|
r31 | ||
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, | |||
} | |||
|
r33 | form = CGSConfigurationForm(initial = data) | |
|
r31 | ||
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)) | |||
|
r27 | ||
|
r34 | 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 | |||
# return render(request, 'cgs_conf_export.html', kwargs) |