views.py
100 lines
| 3.1 KiB
| text/x-python
|
PythonLexer
r348 | |||
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 | |||
r373 | |||
if conf.enable_2: | |||
kwargs['dev_conf_keys'] = ['delay', 'periode_1', 'width_1', 'ntx_1', 'periode_2', 'width_2', 'ntx_2', 'selector'] | |||
else: | |||
kwargs['dev_conf_keys'] = ['delay', 'periode_1', 'width_1', 'ntx_1', 'selector'] | |||
r348 | |||
kwargs['title'] = 'Configuration' | |||
kwargs['suptitle'] = 'Detail' | |||
kwargs['button'] = 'Edit Configuration' | |||
r350 | |||
conf.status_device() | |||
r348 | ###### 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) | |||
r368 | |||
r348 | if request.method=='GET': | ||
r368 | |||
r348 | form = GeneratorConfigurationForm(instance=conf) | ||
r368 | |||
r348 | elif request.method=='POST': | ||
r373 | form = GeneratorConfigurationForm(request.POST, instance=conf) | ||
r348 | |||
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' | |||
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') |