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 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 = {} kwargs['status'] = conf.device.get_status_display() #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'] = ['name', 'freq0', 'freq1', 'freq2', 'freq3'] kwargs['title'] = 'CGS Configuration' kwargs['suptitle'] = 'Details' kwargs['button'] = 'Edit Configuration' kwargs['no_play'] = True ###### SIDEBAR ###### kwargs.update(sidebar(conf=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' 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)