##// END OF EJS Templates
Requests requirement has been added....
Requests requirement has been added. git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@65 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71

File last commit:

r25:f193286b21f7
r44:8f3c97753337
Show More
views.py
200 lines | 6.2 KiB | text/x-python | PythonLexer
import json
from django.contrib import messages
from django.shortcuts import render, redirect, get_object_or_404, HttpResponse
from apps.main.models import Configuration, Experiment
from apps.main.views import sidebar
from .models import RCConfiguration, RCLine, RCLineType
from .forms import RCConfigurationForm, RCLineForm, RCLineViewForm, RCLineEditForm
def conf(request, id):
conf = get_object_or_404(RCConfiguration, pk=id)
lines = RCLine.objects.filter(rc_configuration=conf).order_by('channel')
for line in lines:
line.form = RCLineViewForm(extra_fields=json.loads(line.params))
kwargs = {}
kwargs['dev_conf'] = conf
kwargs['rc_lines'] = lines
kwargs['dev_conf_keys'] = ['clock', 'ipp', 'ntx','clock_divider']
kwargs['title'] = 'RC Configuration'
kwargs['suptitle'] = 'Details'
kwargs['button'] = 'Edit Configuration'
###### SIDEBAR ######
kwargs.update(sidebar(conf))
return render(request, 'rc_conf.html', kwargs)
def conf_edit(request, id):
conf = get_object_or_404(RCConfiguration, pk=id)
if request.method=='GET':
form = RCConfigurationForm(instance=conf)
if request.method=='POST':
form = RCConfigurationForm(request.POST, instance=conf)
if form.is_valid():
form.save()
return redirect('url_dev_conf', id=id)
kwargs = {}
kwargs['dev_conf'] = conf
kwargs['form'] = form
kwargs['title'] = 'Device Configuration'
kwargs['suptitle'] = 'Edit'
kwargs['button'] = 'Update'
kwargs['previous'] = conf.get_absolute_url()
kwargs.update(sidebar(conf))
return render(request, 'rc_conf_edit.html', kwargs)
def add_line(request, conf_id, line_type_id=None):
conf = get_object_or_404(RCConfiguration, pk=conf_id)
if request.method=='GET':
if line_type_id:
line_type = get_object_or_404(RCLineType, pk=line_type_id)
form = RCLineForm(initial={'rc_configuration':conf_id, 'line_type': line_type_id},
extra_fields=json.loads(line_type.params))
else:
form = RCLineForm(initial={'rc_configuration':conf_id})
if request.method=='POST':
line_type = get_object_or_404(RCLineType, pk=line_type_id)
form = RCLineForm(request.POST, extra_fields=json.loads(line_type.params))
if form.is_valid():
form.save()
return redirect(conf.get_absolute_url())
kwargs = {}
kwargs['form'] = form
kwargs['title'] = 'RC Configuration'
kwargs['suptitle'] = 'Add Line'
kwargs['button'] = 'Add'
kwargs['previous'] = conf.get_absolute_url()
kwargs['dev_conf'] = conf
kwargs.update(sidebar(conf))
return render(request, 'rc_add_line.html', kwargs)
def remove_line(request, conf_id, line_id):
conf = get_object_or_404(RCConfiguration, pk=conf_id)
line = get_object_or_404(RCLine, pk=line_id)
if request.method == 'POST':
if line:
try:
channel = line.channel
line.delete()
for ch in range(channel+1, RCLine.objects.filter(rc_configuration=conf).count()+1):
l = RCLine.objects.get(rc_configuration=conf, channel=ch)
l.channel = l.channel-1
l.save()
messages.success(request, 'Line: "%s" has been deleted.' % line)
except:
messages.error(request, 'Unable to delete line: "%s".' % line)
return redirect(conf.get_absolute_url())
kwargs = {}
kwargs['object'] = line
kwargs['delete_view'] = True
kwargs['title'] = 'Confirm delete'
kwargs['previous'] = conf.get_absolute_url()
return render(request, 'confirm.html', kwargs)
def edit_lines(request, conf_id):
conf = get_object_or_404(RCConfiguration, pk=conf_id)
if request.method=='GET':
lines = RCLine.objects.filter(rc_configuration=conf).order_by('channel')
for line in lines:
line_type = get_object_or_404(RCLineType, pk=line.line_type.id)
extra_fields = json.loads(line_type.params)
for item in extra_fields:
params = json.loads(line.params)
item['value'] = params[item['name']]
line.form = RCLineEditForm(initial={'rc_configuration':conf_id, 'line_type': line.line_type.id, 'line': line.id},
extra_fields=extra_fields)
elif request.method=='POST':
data = {}
for label,value in request.POST.items():
if '|' not in label:
continue
id, name = label.split('|')
if id in data:
data[id][name]=value
else:
data[id] = {name:value}
for id, params in data.items():
line = RCLine.objects.get(pk=id)
line.params = json.dumps(params)
line.save()
return redirect(conf.get_absolute_url())
kwargs = {}
kwargs['dev_conf'] = conf
kwargs['rc_lines'] = lines
kwargs['edit'] = True
kwargs['title'] = 'RC Configuration'
kwargs['suptitle'] = 'Edit Lines'
kwargs['button'] = 'Update'
kwargs['previous'] = conf.get_absolute_url()
kwargs.update(sidebar(conf))
return render(request, 'rc_edit_lines.html', kwargs)
def update_lines(request, conf_id):
conf = get_object_or_404(RCConfiguration, pk=conf_id)
if request.method=='POST':
ch = 0
for item in request.POST['items'].split('&'):
line = RCLine.objects.get(pk=item.split('=')[-1])
line.channel = ch
line.save()
ch += 1
lines = RCLine.objects.filter(rc_configuration=conf).order_by('channel')
for line in lines:
line.form = RCLineViewForm(extra_fields=json.loads(line.params))
html = render(request, 'rc_lines.html', {'rc_lines':lines})
data = {'html': html.content}
return HttpResponse(json.dumps(data), content_type="application/json")
return redirect(conf.get_absolute_url())