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 = {} 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'] = ['experiment', 'device', '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)