from django.shortcuts import redirect, render_to_response from django.template import RequestContext from .forms import NewExperimentForm, NewDeviceForm, DeviceTypeForm from .models import Experiment, Device, Configuration from apps.cgs.models import CGSConfiguration from apps.jars.models import JARSConfiguration #from apps.usrp.models import USRPConfiguration from apps.abs.models import ABSConfiguration from apps.rc.models import RCConfiguration from apps.dds.models import DDSConfiguration # Create your views here. MODELS = { 'rc': RCConfiguration, 'dds': DDSConfiguration, 'jars': JARSConfiguration, 'cgs': CGSConfiguration, 'abs': ABSConfiguration, } def index(request): kwargs = {} return render_to_response("index.html", kwargs, context_instance=RequestContext(request)) def experiment(request, id_exp=0, id_dev_type=0): kwargs = {} if id_exp: experiment = Experiment.objects.get(pk=id_exp) devices = Device.objects.filter(configuration__experiment=experiment) kwargs['experiment'] = experiment kwargs['experiment_keys'] = ['name', 'alias', 'start_date', 'end_date'] form = NewExperimentForm(instance=experiment) if id_dev_type: subform = DeviceTypeForm(initial={'device_type':id_dev_type}) kwargs['keys'] = ['model', 'ip_address', 'status'] keys = ['id']+kwargs['keys'] kwargs['items'] = Device.objects.filter(device_type=id_dev_type).values(*keys) else: subform = DeviceTypeForm() kwargs['form'] = form kwargs['subform'] = subform kwargs['device_keys'] = ['device_type__name', 'model', 'ip_address', 'status'] kwargs['devices'] = devices.values('device_type__name', 'model', 'ip_address', 'status', 'device_type__alias', 'configuration__id') kwargs['suptitle'] = 'Detail' else: experiments = Experiment.objects.all().order_by('start_date') kwargs['keys'] = ['name', 'start_date', 'end_date'] keys = ['id']+kwargs['keys'] kwargs['items'] = experiments.values(*keys) kwargs['suptitle'] = 'List' kwargs['button'] = 'Add Experiment' kwargs['id_dev_type'] = id_dev_type kwargs['id_exp'] = id_exp return render_to_response("experiment.html", kwargs, context_instance=RequestContext(request)) def edit_experiment(request, id_exp): if request.method=='POST': experiment = Experiment.objects.get(pk=id_exp) form = NewExperimentForm(request.POST, instance=experiment) if form.is_valid(): form.save() return redirect('experiment', id_exp=id_exp) def experiment_add_device(request, id_exp): if request.method=='POST': experiment = Experiment.objects.get(pk=id_exp) device = Device.objects.get(pk=request.POST['device']) model = MODELS[device.device_type.alias] conf = model(experiment=experiment, device=device) conf.save() return redirect('experiment', id_exp=id_exp) def add_experiment(request): kwargs = {} if request.method == 'POST': form = NewExperimentForm(request.POST) if form.is_valid(): experiment = form.save() return redirect('experiment', id_exp=experiment.id) else: form = NewExperimentForm() kwargs['form_new'] = form kwargs['title'] = 'Experiment' kwargs['suptitle'] = 'New' kwargs['id_exp'] = 0 return render_to_response("experiment.html", kwargs, context_instance=RequestContext(request)) def device(request, id_dev=0): kwargs = {} if id_dev: device = Device.objects.get(pk=id_dev) kwargs['form'] = NewDeviceForm(instance=device) kwargs['action'] = 'edit/' kwargs['button'] = 'Update' kwargs['suptitle'] = 'Detail' else: devices = Device.objects.all() kwargs['keys'] = ['device_type__name', 'model', 'serial', 'ip_address', 'status'] keys = ['id']+kwargs['keys'] kwargs['items'] = devices.values(*keys) kwargs['suptitle'] = 'List' kwargs['button'] = 'Add Device' return render_to_response("device.html", kwargs, context_instance=RequestContext(request)) def edit_device(request, id_dev): if request.method=='POST': device = Device.objects.get(pk=id_dev) form = NewDeviceForm(request.POST, instance=device) if form.is_valid(): form.save() return redirect('devices') def add_device(request): kwargs = {} if request.method == 'POST': form = NewDeviceForm(request.POST) if form.is_valid(): form.save() return redirect('devices') else: form = NewDeviceForm() kwargs['form'] = form kwargs['button'] = 'Create' kwargs['suptitle'] = 'New' return render_to_response("device.html", kwargs, context_instance=RequestContext(request))