##// END OF EJS Templates
git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@72 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71
git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@72 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71

File last commit:

r43:7e99c5f033ee
r51:884ae042d9ee
Show More
views.py
321 lines | 10.0 KiB | text/x-python | PythonLexer
from django.shortcuts import redirect, render, get_object_or_404
from django.contrib import messages
from django.http import HttpResponse
from apps.main.models import Experiment, Configuration
from .models import CGSConfiguration
from .forms import CGSConfigurationForm, UploadFileForm
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():
if conf.freq0 == None: conf.freq0 = 0
if conf.freq1 == None: conf.freq1 = 0
if conf.freq2 == None: conf.freq2 = 0
if conf.freq3 == None: conf.freq3 = 0
conf = form.save(commit=False)
if conf.verify_frequencies():
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
f0 = conf.freq0
f1 = conf.freq1
f2 = conf.freq2
f3 = 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_import(request, id_conf):
conf = get_object_or_404(CGSConfiguration, pk=id_conf)
if request.method == 'POST':
file_form = UploadFileForm(request.POST, request.FILES)
if file_form.is_valid():
try:
if conf.update_from_file(request.FILES['file']):
try:
conf.full_clean()
except ValidationError as e:
messages.error(request, e)
else:
conf.save()
messages.success(request, "Parameters imported from file: '%s'." %request.FILES['file'].name)
#messages.warning(request,"")
return redirect('url_cgs_conf', id_conf=conf.id)
except:
messages.error(request, "No JSON object could be decoded.")
messages.error(request, "Could not import parameters from file")
else:
file_form = UploadFileForm(initial={'title': '.json'})
kwargs = {}
kwargs['id_dev'] = conf.id
kwargs['title'] = 'Device Configuration'
kwargs['form'] = file_form
kwargs['suptitle'] = 'Importing file'
kwargs['button'] = 'Import'
kwargs.update(sidebar(conf))
return render(request, 'cgs_conf_import.html', kwargs)
def handle_uploaded_file(f):
data = {'freq0' : 62500000,
'freq1' : 62500000,
'freq2' : 62500000,
'freq3' : 62500000,
}
return data
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=='GET':
data = {"Frequencies": [
["freq0", conf.freq0],
["freq1", conf.freq1],
["freq2", conf.freq2],
["freq3", conf.freq3]
]}
json_data = json.dumps(data)
conf.parameters = json_data
response = HttpResponse(conf.parameters, content_type="application/json")
response['Content-Disposition'] = 'attachment; filename="data.json"'
return response
kwargs = {}
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)