|
|
|
|
|
import json
|
|
|
|
|
|
from django.contrib import messages
|
|
|
from django.utils.safestring import mark_safe
|
|
|
from django.shortcuts import render, redirect, get_object_or_404, HttpResponse
|
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
|
|
from apps.main.models import Experiment, Device
|
|
|
from apps.main.views import sidebar
|
|
|
|
|
|
from .models import GeneratorConfiguration
|
|
|
from .forms import GeneratorConfigurationForm, GeneratorImportForm
|
|
|
|
|
|
|
|
|
def conf(request, conf_id):
|
|
|
|
|
|
conf = get_object_or_404(GeneratorConfiguration, pk=conf_id)
|
|
|
|
|
|
kwargs = {}
|
|
|
kwargs['dev_conf'] = conf
|
|
|
kwargs['dev_conf_keys'] = ['periode', 'delay', 'width', 'selector']
|
|
|
|
|
|
kwargs['title'] = 'Configuration'
|
|
|
kwargs['suptitle'] = 'Detail'
|
|
|
|
|
|
kwargs['button'] = 'Edit Configuration'
|
|
|
|
|
|
conf.status_device()
|
|
|
|
|
|
###### SIDEBAR ######
|
|
|
kwargs.update(sidebar(conf=conf))
|
|
|
|
|
|
return render(request, 'generator_conf.html', kwargs)
|
|
|
|
|
|
@login_required
|
|
|
def conf_edit(request, conf_id):
|
|
|
|
|
|
conf = get_object_or_404(GeneratorConfiguration, pk=conf_id)
|
|
|
print(conf)
|
|
|
#print("fin de carga de params")
|
|
|
if request.method=='GET':
|
|
|
print("GET case")
|
|
|
form = GeneratorConfigurationForm(instance=conf)
|
|
|
print(form)
|
|
|
|
|
|
elif request.method=='POST':
|
|
|
#print("ingreso a post conf edit")
|
|
|
line_data = {}
|
|
|
conf_data = {}
|
|
|
clock_data = {}
|
|
|
extras = []
|
|
|
print("Inicio impresion POST#####")
|
|
|
print(request.POST.items)
|
|
|
print("Fin impresion de POST items#####")
|
|
|
#classified post fields
|
|
|
for label,value in request.POST.items():
|
|
|
if label=='csrfmiddlewaretoken':
|
|
|
continue
|
|
|
|
|
|
if label.count('|')==0:
|
|
|
if label in ('mode', 'multiplier', 'divisor', 'reference', 'frequency'):
|
|
|
clock_data[label] = value
|
|
|
else:
|
|
|
conf_data[label] = value
|
|
|
continue
|
|
|
|
|
|
elif label.split('|')[0]!='-1':
|
|
|
extras.append(label)
|
|
|
continue
|
|
|
|
|
|
#print(label)
|
|
|
x, pk, name = label.split('|')
|
|
|
|
|
|
if name=='codes':
|
|
|
value = [s for s in value.split('\r\n') if s]
|
|
|
|
|
|
if pk in line_data:
|
|
|
line_data[pk][name] = value
|
|
|
else:
|
|
|
line_data[pk] = {name:value}
|
|
|
#print(line_data[pk])
|
|
|
#update conf
|
|
|
|
|
|
form = GeneratorConfigurationForm(conf_data, instance=conf)
|
|
|
|
|
|
#print(request.POST.items())
|
|
|
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
|
|
|
|
messages.success(request, 'Generator configuration successfully updated')
|
|
|
|
|
|
return redirect(conf.get_absolute_url())
|
|
|
|
|
|
kwargs = {}
|
|
|
kwargs['dev_conf'] = conf
|
|
|
kwargs['form'] = form
|
|
|
kwargs['edit'] = True
|
|
|
|
|
|
kwargs['title'] = 'Generator Configuration'
|
|
|
kwargs['suptitle'] = 'Edit'
|
|
|
kwargs['button'] = 'Update'
|
|
|
|
|
|
print(kwargs)
|
|
|
print(form)
|
|
|
return render(request, 'generator_conf_edit.html', kwargs)
|
|
|
|
|
|
def import_file(request, conf_id):
|
|
|
|
|
|
conf = get_object_or_404(GeneratorConfiguration, pk=conf_id)
|
|
|
if request.method=='POST':
|
|
|
form = GeneratorImportForm(request.POST, request.FILES)
|
|
|
if form.is_valid():
|
|
|
try:
|
|
|
data = conf.import_from_file(request.FILES['file_name'])
|
|
|
conf.dict_to_parms(data)
|
|
|
messages.success(request, 'Configuration "%s" loaded succesfully' % request.FILES['file_name'])
|
|
|
return redirect(conf.get_absolute_url_edit())
|
|
|
|
|
|
except Exception as e:
|
|
|
messages.error(request, 'Error parsing file: "%s" - %s' % (request.FILES['file_name'], repr(e)))
|
|
|
else:
|
|
|
messages.warning(request, 'Your current configuration will be replaced')
|
|
|
form = GeneratorImportForm()
|
|
|
|
|
|
kwargs = {}
|
|
|
kwargs['form'] = form
|
|
|
kwargs['title'] = 'Generator Configuration'
|
|
|
kwargs['suptitle'] = 'Import file'
|
|
|
kwargs['button'] = 'Upload'
|
|
|
kwargs['previous'] = conf.get_absolute_url()
|
|
|
|
|
|
return render(request, 'generator_import.html', kwargs)
|
|
|
|
|
|
def conf_raw(request, conf_id):
|
|
|
conf = get_object_or_404(GeneratorConfiguration, pk=conf_id)
|
|
|
raw = conf.write_device(raw=True)
|
|
|
return HttpResponse(raw, content_type='application/json')
|