from django.shortcuts import render, redirect from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm from apps.cgs.forms import CGSConfigurationForm from apps.jars.forms import JARSConfigurationForm from apps.usrp.forms import USRPConfigurationForm from apps.abs.forms import ABSConfigurationForm from apps.rc.forms import RCConfigurationForm from apps.dds.forms import DDSConfigurationForm from .models import Campaign, 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. CONF_FORMS = { 'rc': RCConfigurationForm, 'dds': DDSConfigurationForm, 'jars': JARSConfigurationForm, 'cgs': CGSConfigurationForm, 'abs': ABSConfigurationForm, 'usrp': USRPConfigurationForm, } CONF_MODELS = { 'rc': RCConfiguration, 'dds': DDSConfiguration, 'jars': JARSConfiguration, 'cgs': CGSConfiguration, 'abs': ABSConfiguration, 'usrp': USRPConfiguration, } def index(request): kwargs = {} return render(request, 'index.html', kwargs) def devices(request): devices = Device.objects.all().order_by('device_type__name') keys = ['id', 'device_type__name', 'name', 'ip_address'] kwargs = {} kwargs['device_keys'] = keys[1:] kwargs['devices'] = devices.values(*keys) kwargs['title'] = 'Device' kwargs['suptitle'] = 'List' kwargs['button'] = 'New Device' return render(request, 'devices.html', kwargs) def device(request, id_dev): device = Device.objects.get(pk=id_dev) # form = DeviceForm(instance=device) kwargs = {} kwargs['device'] = device kwargs['device_keys'] = ['device_type', 'name', 'ip_address', 'port_address', 'description'] kwargs['title'] = 'Device' kwargs['suptitle'] = 'Details' # kwargs['form'] = form kwargs['button'] = 'Add Device' return render(request, 'device.html', kwargs) def add_device(request): if request.method == 'GET': form = DeviceForm() if request.method == 'POST': form = DeviceForm(request.POST) if form.is_valid(): form.save() return redirect('url_devices') kwargs = {} kwargs['form'] = form kwargs['title'] = 'Device' kwargs['suptitle'] = 'New' kwargs['button'] = 'Create' return render(request, 'device_edit.html', kwargs) def edit_device(request, id_dev): device = Device.objects.get(pk=id_dev) if request.method=='GET': form = DeviceForm(instance=device) if request.method=='POST': form = DeviceForm(request.POST, instance=device) if form.is_valid(): form.save() return redirect('url_devices') kwargs = {} kwargs['form'] = form kwargs['title'] = 'Device' kwargs['suptitle'] = 'Edit' kwargs['button'] = 'Update' return render(request, 'device_edit.html', kwargs) def campaigns(request): campaigns = Campaign.objects.all().order_by('start_date') keys = ['id', 'name', 'start_date', 'end_date'] kwargs = {} kwargs['campaign_keys'] = keys[1:] kwargs['campaigns'] = campaigns.values(*keys) kwargs['title'] = 'Campaign' kwargs['suptitle'] = 'List' kwargs['button'] = 'New Campaign' return render(request, 'campaigns.html', kwargs) def campaign(request, id_camp): campaign = Campaign.objects.get(pk=id_camp) experiments = Experiment.objects.filter(campaign=campaign) form = CampaignForm(instance=campaign) kwargs = {} kwargs['campaign'] = campaign kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description'] keys = ['id', 'name', 'start_time', 'end_time'] kwargs['experiment_keys'] = keys[1:] kwargs['experiments'] = experiments.values(*keys) kwargs['title'] = 'Campaign' kwargs['suptitle'] = 'Details' kwargs['form'] = form kwargs['button'] = 'Add Experiment' return render(request, 'campaign.html', kwargs) def add_campaign(request): if request.method == 'GET': form = CampaignForm() if request.method == 'POST': form = CampaignForm(request.POST) if form.is_valid(): campaign = form.save() return redirect('url_campaign', id_camp=campaign.id) kwargs = {} kwargs['form'] = form kwargs['title'] = 'Campaign' kwargs['suptitle'] = 'New' kwargs['button'] = 'Create' return render(request, 'campaign_edit.html', kwargs) def edit_campaign(request, id_camp): campaign = Campaign.objects.get(pk=id_camp) if request.method=='GET': form = CampaignForm(instance=campaign) if request.method=='POST': form = CampaignForm(request.POST, instance=campaign) if form.is_valid(): form.save() return redirect('url_campaign', id_camp=id_camp) kwargs = {} kwargs['form'] = form kwargs['title'] = 'Campaign' kwargs['suptitle'] = 'Edit' kwargs['button'] = 'Update' return render(request, 'campaign_edit.html', kwargs) def experiments(request): campaigns = Experiment.objects.all().order_by('start_time') keys = ['id', 'campaign__name', 'name', 'start_time', 'end_time'] kwargs = {} kwargs['experiment_keys'] = keys[1:] kwargs['experiments'] = campaigns.values(*keys) kwargs['title'] = 'Experiment' kwargs['suptitle'] = 'List' kwargs['button'] = 'New Experiment' return render(request, 'experiments.html', kwargs) def experiment(request, id_exp): experiment = Experiment.objects.get(pk=id_exp) campaign = Campaign.objects.get(pk = experiment.campaign.id) configurations = Configuration.objects.filter(experiment=experiment) # form = ExperimentForm(instance=experiment) kwargs = {} kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description'] kwargs['campaign'] = campaign kwargs['experiment_keys'] = ['campaign', 'name', 'start_time', 'end_time'] kwargs['experiment'] = experiment keys = ['id', 'device__name', 'device__device_type__name', 'device__ip_address'] kwargs['configuration_keys'] = keys[1:] kwargs['configurations'] = configurations.values(*keys) kwargs['title'] = 'Experiment' kwargs['suptitle'] = 'Details' # kwargs['form'] = form kwargs['button'] = 'Add Device' return render(request, 'experiment.html', kwargs) def add_experiment(request, id_camp=0): if request.method == 'GET': form = ExperimentForm(initial={'campaign':id_camp}) if request.method == 'POST': form = ExperimentForm(request.POST, initial={'campaign':id_camp}) if form.is_valid(): experiment = form.save() return redirect('url_experiment', id_exp=experiment.id) kwargs = {} kwargs['form'] = form kwargs['title'] = 'Experiment' kwargs['suptitle'] = 'New' kwargs['button'] = 'Create' return render(request, 'experiment_edit.html', kwargs) def edit_experiment(request, id_exp): experiment = Experiment.objects.get(pk=id_exp) if request.method == 'GET': form = ExperimentForm(instance=experiment) if request.method=='POST': form = ExperimentForm(request.POST, instance=experiment) if form.is_valid(): experiment = form.save() return redirect('url_experiment', id_exp=experiment.id) kwargs = {} kwargs['form'] = form kwargs['title'] = 'Experiment' kwargs['suptitle'] = 'Edit' kwargs['button'] = 'Update' return render(request, 'experiment_edit.html', kwargs) def dev_confs(request): configurations = Configuration.objects.all().order_by('device__device_type') keys = ['id', 'device__device_type__name', 'device__name', 'experiment__campaign__name', 'experiment__name'] kwargs = {} kwargs['configuration_keys'] = keys[1:] kwargs['configurations'] = configurations.values(*keys) kwargs['title'] = 'Configurations' kwargs['suptitle'] = 'List' kwargs['button'] = 'New Configuration' return render(request, 'dev_confs.html', kwargs) def dev_conf(request, id_conf): conf = Configuration.objects.get(pk=id_conf) DevConfModel = CONF_MODELS[conf.device.device_type.name] dev_conf = DevConfModel.objects.get(pk=id_conf) kwargs = {} kwargs['dev_conf'] = dev_conf kwargs['dev_conf_keys'] = ['experiment', 'device'] kwargs['title'] = 'Configuration' kwargs['suptitle'] = 'Details' kwargs['button'] = 'Edit Configuration' return render(request, 'dev_conf.html', kwargs) def add_dev_conf(request, id_exp=0): if request.method == 'GET': form = ConfigurationForm(initial={'experiment':id_exp}) if request.method == 'POST': form = ConfigurationForm(request.POST) if form.is_valid(): experiment = Experiment.objects.get(pk=request.POST['experiment']) device = Device.objects.get(pk=request.POST['device']) exp_devices = Device.objects.filter(configuration__experiment=experiment) if device.id not in exp_devices.values('id',): DevConfModel = CONF_MODELS[device.device_type.name] conf = DevConfModel(experiment=experiment, device=device) conf.save() return redirect('url_experiment', id_exp=experiment.id) kwargs = {} kwargs['form'] = form kwargs['title'] = 'Configuration' kwargs['suptitle'] = 'New' kwargs['button'] = 'Create' return render(request, 'dev_conf_edit.html', kwargs) def edit_dev_conf(request, id_conf): conf = Configuration.objects.get(pk=id_conf) DevConfModel = CONF_MODELS[conf.device.device_type.name] DevConfForm = CONF_FORMS[conf.device.device_type.name] dev_conf = DevConfModel.objects.get(pk=id_conf) if request.method=='GET': form = DevConfForm(instance=dev_conf) if request.method=='POST': form = DevConfForm(request.POST, instance=dev_conf) if form.is_valid(): form.save() return redirect('url_dev_conf', id_conf=id_conf) kwargs = {} kwargs['form'] = form kwargs['title'] = 'Device Configuration' kwargs['suptitle'] = 'Edit' kwargs['button'] = 'Update' return render(request, 'dev_conf_edit.html', kwargs) # def experiment(request, id_exp=0, id_dev_type=0): # kwargs = {} # if id_exp: # experiment = Experiment.objects.get(pk=id_exp) # devices = Configuration.objects.filter(configuration__experiment=experiment) # kwargs['experiment'] = experiment # kwargs['experiment_keys'] = ['campaign', 'name', 'start_time', 'end_time'] # # form = ExperimentForm(instance=experiment) # # if id_dev_type: # subform = DeviceTypeForm(initial={'device_type':id_dev_type}) # kwargs['keys'] = ['ip_address'] # 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', 'ip_address'] # kwargs['devices'] = devices.values('device_type__name', 'ip_address', 'configuration__id') # kwargs['suptitle'] = 'Detail' # else: # experiments = Experiment.objects.all().order_by('start_time') # kwargs['keys'] = ['name', 'start_time', 'end_time'] # 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 = ExperimentForm(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) # # exp_devices = Device.objects.filter(configuration__experiment=experiment) # # device = Device.objects.get(pk=request.POST['device']) # # if device.id in exp_devices.values('id',): # return redirect('experiment', id_exp=id_exp) # # 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 = ExperimentForm(request.POST) # if form.is_valid(): # experiment = form.save() # return redirect('experiment', id_exp=experiment.id) # else: # form = ExperimentForm() # 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'] = DeviceForm(instance=device) # kwargs['action'] = 'edit/' # kwargs['button'] = 'Update' # kwargs['suptitle'] = 'Detail' # else: # devices = Device.objects.all() # kwargs['keys'] = ['device_type__name', 'ip_address'] # 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 = DeviceForm(request.POST, instance=device) # if form.is_valid(): # form.save() # return redirect('devices') # # def add_device(request): # kwargs = {} # if request.method == 'POST': # form = DeviceForm(request.POST) # if form.is_valid(): # form.save() # return redirect('devices') # else: # form = DeviceForm() # kwargs['form'] = form # kwargs['button'] = 'Create' # kwargs['suptitle'] = 'New' # return render_to_response("device.html", kwargs, context_instance=RequestContext(request))