diff --git a/apps/cgs/models.py b/apps/cgs/models.py index 61b2463..664512b 100644 --- a/apps/cgs/models.py +++ b/apps/cgs/models.py @@ -20,6 +20,10 @@ class CGSConfiguration(Configuration): #clk_in = models.PositiveIntegerField(default=10e6) #mult = models.PositiveIntegerField(default=40) #div = models.PositiveIntegerField(default=1) + + def verify_frequencies(self): + + return True class Meta: diff --git a/apps/cgs/templates/cgs_conf.html b/apps/cgs/templates/cgs_conf.html index 6a4530c..99944d7 100644 --- a/apps/cgs/templates/cgs_conf.html +++ b/apps/cgs/templates/cgs_conf.html @@ -1,11 +1 @@ -{% extends "dev_conf.html" %} - -{% block extra-js%} - -{% endblock %} \ No newline at end of file +{% extends "dev_conf.html" %} \ No newline at end of file diff --git a/apps/cgs/templates/cgs_conf_edit.html b/apps/cgs/templates/cgs_conf_edit.html index 029ea49..ae0e31c 100644 --- a/apps/cgs/templates/cgs_conf_edit.html +++ b/apps/cgs/templates/cgs_conf_edit.html @@ -1 +1,83 @@ -{% extends "dev_conf_edit.html" %} \ No newline at end of file +{% extends "dev_conf_edit.html" %} +{% load bootstrap3 %} +{% load static %} +{% load main_tags %} + +{% block extra-js%} + + +{% endblock %} \ No newline at end of file diff --git a/apps/cgs/urls.py b/apps/cgs/urls.py index 80fd729..0e94589 100644 --- a/apps/cgs/urls.py +++ b/apps/cgs/urls.py @@ -1,12 +1,14 @@ from django.conf.urls import url urlpatterns = ( - #url(r'^configuration/$', 'apps.cgs.views.configurate_frequencies', name='new_device'), -# url(r'^(?P-?\d+)/$', 'apps.cgs.views.configurate_frequencies', name='new_device'), - url(r'^(?P-?\d+)/$', 'apps.main.views.dev_conf', name='url_cgs_conf'), - url(r'^(?P-?\d+)/edit/$', 'apps.main.views.dev_conf_edit', name='url_edit_cgs_conf'), - url(r'^(?P-?\d+)/write/$', 'apps.main.views.dev_conf_write', name='url_write_cgs_conf'), - url(r'^(?P-?\d+)/read/$', 'apps.main.views.dev_conf_read', name='url_read_cgs_conf'), + url(r'^(?P-?\d+)/$', 'apps.cgs.views.cgs_conf', name='url_cgs_conf'), + url(r'^(?P-?\d+)/edit/$', 'apps.cgs.views.cgs_conf_edit', name='url_edit_cgs_conf'), + #url(r'^(?P-?\d+)/(?P-?\d+)/$', 'apps.cgs.views.cgs_conf', name='url_cgs_conf'), + url(r'^(?P-?\d+)/edit/$', 'apps.cgs.views.cgs_conf_edit', name='url_edit_cgs_conf'), + url(r'^(?P-?\d+)/write/$', 'apps.cgs.views.cgs_conf_write', name='url_write_cgs_conf'), + url(r'^(?P-?\d+)/read/$', 'apps.cgs.views.cgs_conf_read', name='url_read_cgs_conf'), + #url(r'^(?P-?\d+)/write/$', 'apps.main.views.dev_conf_write', name='url_write_cgs_conf'), + #url(r'^(?P-?\d+)/read/$', 'apps.main.views.dev_conf_read', name='url_read_cgs_conf'), url(r'^(?P-?\d+)/import/$', 'apps.main.views.dev_conf_import', name='url_import_cgs_conf'), url(r'^(?P-?\d+)/export/$', 'apps.main.views.dev_conf_export', name='url_export_cgs_conf'), ) diff --git a/apps/cgs/views.py b/apps/cgs/views.py index ce05a42..10bd4a8 100644 --- a/apps/cgs/views.py +++ b/apps/cgs/views.py @@ -1,14 +1,22 @@ 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 # 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['dev_conf'] = conf kwargs['dev_conf_keys'] = ['experiment', 'device', @@ -21,17 +29,7 @@ def cgs_conf(request, id_conf): kwargs['button'] = 'Edit Configuration' ###### SIDEBAR ###### - experiments = Experiment.objects.filter(campaign=conf.experiment.campaign) - configurations = Configuration.objects.filter(experiment=conf.experiment) - - exp_keys = ['id', 'campaign', 'name', 'start_time', 'end_time'] - conf_keys = ['id', 'device__name', 'device__device_type__name', 'device__ip_address'] - - kwargs['experiment_keys'] = exp_keys[1:] - kwargs['experiments'] = experiments.values(*exp_keys) - - kwargs['configuration_keys'] = conf_keys[1:] - kwargs['configurations'] = configurations.values(*conf_keys) + kwargs.update(sidebar(conf)) return render(request, 'cgs_conf.html', kwargs) @@ -46,13 +44,117 @@ def cgs_conf_edit(request, id_conf): form = CGSConfigurationForm(request.POST, instance=conf) if form.is_valid(): - form.save() - return redirect('url_cgs_conf', id_conf=id_conf) + 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'] = 'Update' + 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 + + post_data = {"f0":f0, "f1":f1, "f2":f2, "f3":f3} + route = "http://" + str(ip) + ":" + str(port) + "/frequencies/" + r = requests.post(route, post_data) + print r.url + print r.text + + + + + 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] + #"icon" could be: "alert" or "okay" + if "okay" in icon: + messages.success(request, status) + else: + messages.error(request, status) + #Get Frequencies + frequencies = requests.get('http://10.10.10.175:8080/frequencies/') + 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, + } + + form = CGSConfigurationForm(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) \ No newline at end of file