views.py
905 lines
| 27.3 KiB
| text/x-python
|
PythonLexer
|
r20 | from django.shortcuts import render, redirect, get_object_or_404, HttpResponse | |
|
r84 | from django.http import HttpResponseRedirect | |
from django.core.urlresolvers import reverse | |||
|
r30 | from django.contrib import messages | |
|
r6 | ||
|
r53 | from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm, LocationForm, UploadFileForm, DownloadFileForm, OperationForm | |
|
r69 | from .forms import OperationSearchForm | |
|
r13 | 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 | |||
|
r84 | from .models import Campaign, Experiment, Device, Configuration, Location, RunningExperiment | |
|
r6 | from apps.cgs.models import CGSConfiguration | |
from apps.jars.models import JARSConfiguration | |||
|
r13 | from apps.usrp.models import USRPConfiguration | |
|
r6 | from apps.abs.models import ABSConfiguration | |
from apps.rc.models import RCConfiguration | |||
from apps.dds.models import DDSConfiguration | |||
|
r0 | ||
# Create your views here. | |||
|
r13 | CONF_FORMS = { | |
'rc': RCConfigurationForm, | |||
'dds': DDSConfigurationForm, | |||
'jars': JARSConfigurationForm, | |||
'cgs': CGSConfigurationForm, | |||
'abs': ABSConfigurationForm, | |||
'usrp': USRPConfigurationForm, | |||
} | |||
CONF_MODELS = { | |||
|
r6 | 'rc': RCConfiguration, | |
'dds': DDSConfiguration, | |||
'jars': JARSConfiguration, | |||
'cgs': CGSConfiguration, | |||
'abs': ABSConfiguration, | |||
|
r13 | 'usrp': USRPConfiguration, | |
|
r6 | } | |
def index(request): | |||
|
r0 | kwargs = {} | |
|
r6 | ||
|
r13 | return render(request, 'index.html', kwargs) | |
|
r41 | def locations(request): | |
locations = Location.objects.all().order_by('name') | |||
keys = ['id', 'name', 'description'] | |||
kwargs = {} | |||
kwargs['location_keys'] = keys[1:] | |||
kwargs['locations'] = locations | |||
kwargs['title'] = 'Location' | |||
kwargs['suptitle'] = 'List' | |||
kwargs['button'] = 'New Location' | |||
return render(request, 'locations.html', kwargs) | |||
def location(request, id_loc): | |||
location = get_object_or_404(Location, pk=id_loc) | |||
kwargs = {} | |||
kwargs['location'] = location | |||
kwargs['location_keys'] = ['name', 'description'] | |||
kwargs['title'] = 'Location' | |||
kwargs['suptitle'] = 'Details' | |||
return render(request, 'location.html', kwargs) | |||
|
r69 | #def location_play(request, id_camp, id_loc): | |
# campaign = get_object_or_404(Campaign, pk=id_camp) | |||
# print campaign | |||
# location = get_object_or_404(Location, pk=id_loc) | |||
# experiments = Experiment.objects.filter(location__pk=location.id).filter(campaign__pk=campaign.id) | |||
# locations = Location.objects.filter(pk=id_loc) | |||
# if request.method=='GET': | |||
# form = OperationForm(initial={'campaign': campaign.id}) | |||
# kwargs = {} | |||
#---Campaign | |||
# kwargs['campaign'] = campaign | |||
# kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description'] | |||
#---Experiment | |||
# keys = ['id', 'name', 'start_time', 'end_time'] | |||
# kwargs['experiment_keys'] = keys[1:] | |||
# kwargs['experiments'] = experiments | |||
#---Radar | |||
# kwargs['location'] = location | |||
#---Else | |||
# kwargs['title'] = 'Campaign' | |||
# kwargs['suptitle'] = campaign.name | |||
# kwargs['form'] = form | |||
# kwargs['button'] = 'Search' | |||
# return render(request, 'operation_play.html', kwargs) | |||
|
r41 | def location_new(request): | |
if request.method == 'GET': | |||
form = LocationForm() | |||
if request.method == 'POST': | |||
form = LocationForm(request.POST) | |||
if form.is_valid(): | |||
form.save() | |||
return redirect('url_locations') | |||
kwargs = {} | |||
kwargs['form'] = form | |||
kwargs['title'] = 'Location' | |||
kwargs['suptitle'] = 'New' | |||
kwargs['button'] = 'Create' | |||
return render(request, 'location_edit.html', kwargs) | |||
def location_edit(request, id_loc): | |||
location = get_object_or_404(Location, pk=id_loc) | |||
if request.method=='GET': | |||
form = LocationForm(instance=location) | |||
if request.method=='POST': | |||
form = LocationForm(request.POST, instance=location) | |||
if form.is_valid(): | |||
form.save() | |||
return redirect('url_locations') | |||
kwargs = {} | |||
kwargs['form'] = form | |||
kwargs['title'] = 'Location' | |||
kwargs['suptitle'] = 'Edit' | |||
kwargs['button'] = 'Update' | |||
return render(request, 'location_edit.html', kwargs) | |||
def location_delete(request, id_loc): | |||
location = get_object_or_404(Location, pk=id_loc) | |||
if request.method=='POST': | |||
if request.user.is_staff: | |||
location.delete() | |||
return redirect('url_locations') | |||
return HttpResponse("Not enough permission to delete this object") | |||
kwargs = {'object':location, 'loc_active':'active', | |||
'url_cancel':'url_location', 'id_item':id_loc} | |||
return render(request, 'item_delete.html', kwargs) | |||
|
r13 | def devices(request): | |
devices = Device.objects.all().order_by('device_type__name') | |||
|
r22 | # keys = ['id', 'device_type__name', 'name', 'ip_address'] | |
|
r41 | keys = ['id', 'name', 'ip_address', 'port_address', 'device_type'] | |
|
r13 | ||
kwargs = {} | |||
kwargs['device_keys'] = keys[1:] | |||
|
r22 | kwargs['devices'] = devices#.values(*keys) | |
|
r13 | kwargs['title'] = 'Device' | |
kwargs['suptitle'] = 'List' | |||
kwargs['button'] = 'New Device' | |||
return render(request, 'devices.html', kwargs) | |||
|
r2 | ||
|
r13 | def device(request, id_dev): | |
|
r20 | device = get_object_or_404(Device, pk=id_dev) | |
|
r13 | ||
|
r2 | kwargs = {} | |
|
r13 | kwargs['device'] = device | |
kwargs['device_keys'] = ['device_type', 'name', 'ip_address', 'port_address', 'description'] | |||
kwargs['title'] = 'Device' | |||
kwargs['suptitle'] = 'Details' | |||
return render(request, 'device.html', kwargs) | |||
|
r19 | def device_new(request): | |
|
r13 | ||
if request.method == 'GET': | |||
form = DeviceForm() | |||
if request.method == 'POST': | |||
form = DeviceForm(request.POST) | |||
|
r6 | ||
|
r13 | if form.is_valid(): | |
form.save() | |||
return redirect('url_devices') | |||
|
r6 | ||
|
r13 | kwargs = {} | |
kwargs['form'] = form | |||
kwargs['title'] = 'Device' | |||
kwargs['suptitle'] = 'New' | |||
kwargs['button'] = 'Create' | |||
|
r6 | ||
|
r13 | return render(request, 'device_edit.html', kwargs) | |
|
r6 | ||
|
r19 | def device_edit(request, id_dev): | |
|
r13 | ||
|
r20 | device = get_object_or_404(Device, pk=id_dev) | |
|
r13 | ||
if request.method=='GET': | |||
form = DeviceForm(instance=device) | |||
|
r6 | if request.method=='POST': | |
|
r13 | form = DeviceForm(request.POST, instance=device) | |
|
r2 | if form.is_valid(): | |
form.save() | |||
|
r13 | return redirect('url_devices') | |
kwargs = {} | |||
kwargs['form'] = form | |||
kwargs['title'] = 'Device' | |||
kwargs['suptitle'] = 'Edit' | |||
kwargs['button'] = 'Update' | |||
return render(request, 'device_edit.html', kwargs) | |||
|
r6 | ||
|
r19 | def device_delete(request, id_dev): | |
|
r18 | ||
|
r20 | device = get_object_or_404(Device, pk=id_dev) | |
|
r18 | ||
if request.method=='POST': | |||
if request.user.is_staff: | |||
device.delete() | |||
return redirect('url_devices') | |||
return HttpResponse("Not enough permission to delete this object") | |||
kwargs = {'object':device, 'dev_active':'active', | |||
'url_cancel':'url_device', 'id_item':id_dev} | |||
return render(request, 'item_delete.html', kwargs) | |||
|
r13 | def campaigns(request): | |
campaigns = Campaign.objects.all().order_by('start_date') | |||
keys = ['id', 'name', 'start_date', 'end_date'] | |||
kwargs = {} | |||
kwargs['campaign_keys'] = keys[1:] | |||
|
r22 | kwargs['campaigns'] = campaigns#.values(*keys) | |
|
r13 | kwargs['title'] = 'Campaign' | |
kwargs['suptitle'] = 'List' | |||
kwargs['button'] = 'New Campaign' | |||
return render(request, 'campaigns.html', kwargs) | |||
def campaign(request, id_camp): | |||
|
r20 | campaign = get_object_or_404(Campaign, pk=id_camp) | |
|
r53 | experiments = Experiment.objects.filter(campaign=campaign) | |
|
r13 | 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:] | |||
|
r53 | kwargs['experiments'] = experiments.values(*keys) | |
|
r13 | ||
kwargs['title'] = 'Campaign' | |||
kwargs['suptitle'] = 'Details' | |||
kwargs['form'] = form | |||
kwargs['button'] = 'Add Experiment' | |||
return render(request, 'campaign.html', kwargs) | |||
|
r19 | def campaign_new(request): | |
|
r13 | ||
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) | |||
|
r19 | def campaign_edit(request, id_camp): | |
|
r13 | ||
|
r20 | campaign = get_object_or_404(Campaign, pk=id_camp) | |
|
r13 | ||
if request.method=='GET': | |||
form = CampaignForm(instance=campaign) | |||
|
r6 | if request.method=='POST': | |
|
r13 | 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) | |||
|
r6 | ||
|
r19 | def campaign_delete(request, id_camp): | |
|
r18 | ||
|
r20 | campaign = get_object_or_404(Campaign, pk=id_camp) | |
|
r18 | ||
if request.method=='POST': | |||
if request.user.is_staff: | |||
campaign.delete() | |||
return redirect('url_campaigns') | |||
return HttpResponse("Not enough permission to delete this object") | |||
kwargs = {'object':campaign, 'camp_active':'active', | |||
'url_cancel':'url_campaign', 'id_item':id_camp} | |||
return render(request, 'item_delete.html', kwargs) | |||
|
r13 | def experiments(request): | |
|
r22 | experiment_list = Experiment.objects.all().order_by('campaign') | |
|
r13 | ||
|
r22 | keys = ['id', 'name', 'start_time', 'end_time', 'campaign'] | |
|
r13 | ||
|
r6 | kwargs = {} | |
|
r13 | ||
kwargs['experiment_keys'] = keys[1:] | |||
|
r22 | kwargs['experiments'] = experiment_list#.values(*keys) | |
|
r13 | ||
kwargs['title'] = 'Experiment' | |||
kwargs['suptitle'] = 'List' | |||
kwargs['button'] = 'New Experiment' | |||
return render(request, 'experiments.html', kwargs) | |||
def experiment(request, id_exp): | |||
|
r20 | experiment = get_object_or_404(Experiment, pk=id_exp) | |
|
r13 | ||
|
r17 | experiments = Experiment.objects.filter(campaign=experiment.campaign) | |
|
r41 | configurations = Configuration.objects.filter(experiment=experiment, type=0) | |
|
r13 | ||
kwargs = {} | |||
|
r53 | exp_keys = ['id', 'campaign', 'location', 'name', 'start_time', 'end_time'] | |
|
r41 | conf_keys = ['id', 'device__name', 'device__device_type', 'device__ip_address', 'device__port_address'] | |
|
r17 | ||
|
r41 | conf_labels = ['id', 'device__name', 'device_type', 'ip_address', 'port_address'] | |
|
r13 | ||
|
r17 | kwargs['experiment_keys'] = exp_keys[1:] | |
|
r13 | kwargs['experiment'] = experiment | |
|
r17 | kwargs['experiments'] = experiments.values(*exp_keys) | |
|
r13 | ||
|
r41 | kwargs['configuration_labels'] = conf_labels[1:] | |
|
r17 | kwargs['configuration_keys'] = conf_keys[1:] | |
|
r41 | kwargs['configurations'] = configurations #.values(*conf_keys) | |
|
r13 | ||
kwargs['title'] = 'Experiment' | |||
kwargs['suptitle'] = 'Details' | |||
|
r45 | kwargs['button'] = 'Add Configuration' | |
|
r13 | ||
return render(request, 'experiment.html', kwargs) | |||
|
r79 | def experiment_new(request, id_camp=None): | |
|
r13 | ||
if request.method == 'GET': | |||
form = ExperimentForm(initial={'campaign':id_camp}) | |||
|
r6 | if request.method == 'POST': | |
|
r13 | form = ExperimentForm(request.POST, initial={'campaign':id_camp}) | |
|
r6 | if form.is_valid(): | |
experiment = form.save() | |||
|
r13 | return redirect('url_experiment', id_exp=experiment.id) | |
kwargs = {} | |||
kwargs['form'] = form | |||
|
r6 | kwargs['title'] = 'Experiment' | |
kwargs['suptitle'] = 'New' | |||
|
r13 | kwargs['button'] = 'Create' | |
return render(request, 'experiment_edit.html', kwargs) | |||
|
r6 | ||
|
r19 | def experiment_edit(request, id_exp): | |
|
r13 | ||
|
r20 | experiment = get_object_or_404(Experiment, pk=id_exp) | |
|
r13 | ||
if request.method == 'GET': | |||
form = ExperimentForm(instance=experiment) | |||
|
r6 | if request.method=='POST': | |
|
r13 | form = ExperimentForm(request.POST, instance=experiment) | |
|
r6 | if form.is_valid(): | |
|
r13 | 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) | |||
|
r2 | ||
|
r19 | def experiment_delete(request, id_exp): | |
|
r18 | ||
|
r20 | experiment = get_object_or_404(Experiment, pk=id_exp) | |
|
r18 | ||
if request.method=='POST': | |||
if request.user.is_staff: | |||
id_camp = experiment.campaign.id | |||
experiment.delete() | |||
return redirect('url_campaign', id_camp=id_camp) | |||
return HttpResponse("Not enough permission to delete this object") | |||
kwargs = {'object':experiment, 'exp_active':'active', | |||
'url_cancel':'url_experiment', 'id_item':id_exp} | |||
return render(request, 'item_delete.html', kwargs) | |||
|
r13 | def dev_confs(request): | |
|
r41 | configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment') | |
|
r13 | ||
|
r22 | # keys = ['id', 'device__device_type__name', 'device__name', 'experiment__campaign__name', 'experiment__name'] | |
|
r13 | ||
|
r30 | keys = ['id', 'device', 'experiment', 'type', 'programmed_date'] | |
|
r22 | ||
|
r13 | kwargs = {} | |
kwargs['configuration_keys'] = keys[1:] | |||
|
r22 | kwargs['configurations'] = configurations#.values(*keys) | |
|
r13 | ||
|
r14 | kwargs['title'] = 'Configuration' | |
|
r13 | kwargs['suptitle'] = 'List' | |
kwargs['button'] = 'New Configuration' | |||
return render(request, 'dev_confs.html', kwargs) | |||
def dev_conf(request, id_conf): | |||
|
r20 | conf = get_object_or_404(Configuration, pk=id_conf) | |
|
r13 | ||
|
r79 | return redirect(conf.get_absolute_url()) | |
|
r13 | ||
|
r79 | ||
def dev_conf_new(request, id_exp=0, id_dev=0): | |||
|
r13 | ||
|
r79 | initial = {} | |
|
r13 | ||
|
r79 | if id_exp==0: | |
initial['experiment'] = id_exp | |||
|
r17 | ||
|
r79 | if id_dev<>0: | |
initial['device'] = id_dev | |||
|
r13 | ||
if request.method == 'GET': | |||
|
r79 | if id_dev==0: | |
form = ConfigurationForm(initial=initial) | |||
else: | |||
device = Device.objects.get(pk=id_dev) | |||
DevConfForm = CONF_FORMS[device.device_type.name] | |||
form = DevConfForm(initial=initial) | |||
|
r13 | ||
|
r6 | if request.method == 'POST': | |
|
r47 | ||
|
r79 | device = Device.objects.get(pk=request.POST['device']) | |
|
r47 | DevConfForm = CONF_FORMS[device.device_type.name] | |
|
r79 | ||
form = DevConfForm(request.POST) | |||
|
r13 | ||
|
r6 | if form.is_valid(): | |
|
r47 | dev_conf = form.save() | |
|
r79 | return redirect('url_dev_confs') | |
|
r13 | ||
kwargs = {} | |||
|
r79 | kwargs['id_exp'] = id_exp | |
|
r6 | kwargs['form'] = form | |
|
r13 | kwargs['title'] = 'Configuration' | |
|
r6 | kwargs['suptitle'] = 'New' | |
|
r13 | kwargs['button'] = 'Create' | |
return render(request, 'dev_conf_edit.html', kwargs) | |||
|
r19 | def dev_conf_edit(request, id_conf): | |
|
r13 | ||
|
r20 | conf = get_object_or_404(Configuration, pk=id_conf) | |
|
r13 | ||
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' | |||
|
r30 | ###### SIDEBAR ###### | |
kwargs.update(sidebar(conf)) | |||
|
r57 | return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs) | |
|
r13 | ||
|
r53 | def dev_conf_start(request, id_conf): | |
conf = get_object_or_404(Configuration, pk=id_conf) | |||
DevConfModel = CONF_MODELS[conf.device.device_type.name] | |||
conf = DevConfModel.objects.get(pk=id_conf) | |||
if conf.start_device(): | |||
messages.success(request, conf.message) | |||
else: | |||
messages.error(request, conf.message) | |||
|
r57 | ||
conf.status_device() | |||
|
r53 | return redirect(conf.get_absolute_url()) | |
def dev_conf_stop(request, id_conf): | |||
|
r30 | ||
conf = get_object_or_404(Configuration, pk=id_conf) | |||
|
r53 | DevConfModel = CONF_MODELS[conf.device.device_type.name] | |
conf = DevConfModel.objects.get(pk=id_conf) | |||
if conf.stop_device(): | |||
messages.success(request, conf.message) | |||
else: | |||
messages.error(request, conf.message) | |||
|
r57 | conf.status_device() | |
|
r53 | return redirect(conf.get_absolute_url()) | |
def dev_conf_status(request, id_conf): | |||
conf = get_object_or_404(Configuration, pk=id_conf) | |||
DevConfModel = CONF_MODELS[conf.device.device_type.name] | |||
conf = DevConfModel.objects.get(pk=id_conf) | |||
if conf.status_device(): | |||
messages.success(request, conf.message) | |||
else: | |||
messages.error(request, conf.message) | |||
|
r30 | ||
|
r53 | return redirect(conf.get_absolute_url()) | |
|
r30 | ||
def dev_conf_write(request, id_conf): | |||
conf = get_object_or_404(Configuration, pk=id_conf) | |||
|
r53 | DevConfModel = CONF_MODELS[conf.device.device_type.name] | |
conf = DevConfModel.objects.get(pk=id_conf) | |||
answer = conf.write_device() | |||
|
r57 | conf.status_device() | |
|
r53 | ||
if answer: | |||
messages.success(request, conf.message) | |||
|
r57 | #Creating a historical configuration | |
|
r53 | conf.pk = None | |
conf.id = None | |||
conf.type = 1 | |||
conf.template = 0 | |||
conf.save() | |||
|
r57 | #Original configuration | |
conf = DevConfModel.objects.get(pk=id_conf) | |||
|
r53 | else: | |
messages.error(request, conf.message) | |||
|
r30 | ||
|
r53 | return redirect(conf.get_absolute_url()) | |
def dev_conf_read(request, id_conf): | |||
conf = get_object_or_404(Configuration, pk=id_conf) | |||
DevConfModel = CONF_MODELS[conf.device.device_type.name] | |||
DevConfForm = CONF_FORMS[conf.device.device_type.name] | |||
conf = DevConfModel.objects.get(pk=id_conf) | |||
if request.method=='GET': | |||
parms = conf.read_device() | |||
|
r57 | conf.status_device() | |
|
r53 | ||
if not parms: | |||
messages.error(request, conf.message) | |||
return redirect(conf.get_absolute_url()) | |||
form = DevConfForm(initial=parms, instance=conf) | |||
if request.method=='POST': | |||
form = DevConfForm(request.POST, instance=conf) | |||
if form.is_valid(): | |||
|
r57 | form.save() | |
return redirect(conf.get_absolute_url()) | |||
|
r53 | ||
messages.error(request, "Parameters could not be saved") | |||
kwargs = {} | |||
kwargs['id_dev'] = conf.id | |||
kwargs['form'] = form | |||
kwargs['title'] = 'Device Configuration' | |||
kwargs['suptitle'] = 'Parameters read from device' | |||
kwargs['button'] = 'Save' | |||
###### SIDEBAR ###### | |||
kwargs.update(sidebar(conf)) | |||
|
r57 | return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs) | |
|
r30 | ||
def dev_conf_import(request, id_conf): | |||
conf = get_object_or_404(Configuration, pk=id_conf) | |||
|
r53 | DevConfModel = CONF_MODELS[conf.device.device_type.name] | |
DevConfForm = CONF_FORMS[conf.device.device_type.name] | |||
|
r30 | ||
|
r53 | conf = DevConfModel.objects.get(pk=id_conf) | |
if request.method == 'GET': | |||
file_form = UploadFileForm() | |||
if request.method == 'POST': | |||
file_form = UploadFileForm(request.POST, request.FILES) | |||
if file_form.is_valid(): | |||
parms = conf.import_from_file(request.FILES['file']) | |||
if parms: | |||
messages.success(request, "Parameters imported from: '%s'." %request.FILES['file'].name) | |||
|
r57 | print parms | |
|
r53 | form = DevConfForm(initial=parms, instance=conf) | |
kwargs = {} | |||
kwargs['id_dev'] = conf.id | |||
kwargs['form'] = form | |||
kwargs['title'] = 'Device Configuration' | |||
kwargs['suptitle'] = 'Parameters imported' | |||
kwargs['button'] = 'Save' | |||
kwargs['action'] = conf.get_absolute_url_edit() | |||
kwargs['previous'] = conf.get_absolute_url() | |||
###### SIDEBAR ###### | |||
kwargs.update(sidebar(conf)) | |||
|
r79 | return render(request, '%s_conf_edit.html' % conf.device.device_type.name, kwargs) | |
|
r53 | ||
messages.error(request, "Could not import parameters from file") | |||
kwargs = {} | |||
kwargs['id_dev'] = conf.id | |||
kwargs['title'] = 'Device Configuration' | |||
kwargs['form'] = file_form | |||
kwargs['suptitle'] = 'Importing file' | |||
kwargs['button'] = 'Import' | |||
kwargs.update(sidebar(conf)) | |||
return render(request, 'dev_conf_import.html', kwargs) | |||
|
r30 | ||
def dev_conf_export(request, id_conf): | |||
conf = get_object_or_404(Configuration, pk=id_conf) | |||
|
r53 | DevConfModel = CONF_MODELS[conf.device.device_type.name] | |
conf = DevConfModel.objects.get(pk=id_conf) | |||
if request.method == 'GET': | |||
|
r57 | file_form = DownloadFileForm(conf.device.device_type.name) | |
|
r53 | ||
if request.method == 'POST': | |||
|
r57 | file_form = DownloadFileForm(conf.device.device_type.name, request.POST) | |
|
r53 | ||
if file_form.is_valid(): | |||
|
r57 | fields = conf.export_to_file(format = file_form.cleaned_data['format']) | |
|
r53 | ||
response = HttpResponse(content_type=fields['content_type']) | |||
response['Content-Disposition'] = 'attachment; filename="%s"' %fields['filename'] | |||
response.write(fields['content']) | |||
return response | |||
messages.error(request, "Could not export parameters") | |||
kwargs = {} | |||
kwargs['id_dev'] = conf.id | |||
kwargs['title'] = 'Device Configuration' | |||
kwargs['form'] = file_form | |||
kwargs['suptitle'] = 'Exporting file' | |||
kwargs['button'] = 'Export' | |||
|
r30 | ||
|
r53 | return render(request, 'dev_conf_export.html', kwargs) | |
|
r30 | ||
|
r19 | def dev_conf_delete(request, id_conf): | |
|
r18 | ||
|
r20 | conf = get_object_or_404(Configuration, pk=id_conf) | |
|
r18 | ||
if request.method=='POST': | |||
if request.user.is_staff: | |||
id_exp = conf.experiment.id | |||
conf.delete() | |||
return redirect('url_experiment', id_exp=id_exp) | |||
return HttpResponse("Not enough permission to delete this object") | |||
kwargs = {'object':conf, 'conf_active':'active', | |||
'url_cancel':'url_dev_conf', 'id_item':id_conf} | |||
|
r30 | ###### SIDEBAR ###### | |
kwargs.update(sidebar(conf)) | |||
|
r25 | return render(request, 'item_delete.html', kwargs) | |
def sidebar(conf): | |||
kwargs = {} | |||
|
r26 | ||
|
r79 | if conf.experiment: | |
experiments = Experiment.objects.filter(campaign=conf.experiment.campaign) | |||
configurations = Configuration.objects.filter(experiment=conf.experiment, type=0) | |||
exp_keys = ['id', 'campaign', 'name', 'start_time', 'end_time'] | |||
kwargs['experiment_keys'] = exp_keys[1:] | |||
kwargs['experiments'] = experiments.values(*exp_keys) | |||
conf_keys = ['id', 'device'] | |||
kwargs['configuration_keys'] = conf_keys[1:] | |||
kwargs['configurations'] = configurations #.values(*conf_keys) | |||
|
r25 | ||
|
r46 | return kwargs | |
|
r50 | def operation(request, id_camp=None): | |
|
r53 | if not id_camp: | |
campaigns = Campaign.objects.all().order_by('-start_date') | |||
if not campaigns: | |||
|
r76 | kwargs = {} | |
|
r75 | kwargs['title'] = 'No Campaigns' | |
kwargs['suptitle'] = 'Empty' | |||
|
r77 | return render(request, 'operation.html', kwargs) | |
|
r50 | ||
|
r53 | id_camp = campaigns[0].id | |
campaign = get_object_or_404(Campaign, pk = id_camp) | |||
|
r50 | if request.method=='GET': | |
|
r69 | form = OperationForm(initial={'campaign': campaign.id}, length = 5) | |
|
r50 | ||
|
r53 | if request.method=='POST': | |
|
r69 | form = OperationForm(request.POST, initial={'campaign':campaign.id}, length = 5) | |
|
r53 | ||
|
r50 | if form.is_valid(): | |
return redirect('url_operation', id_camp=campaign.id) | |||
|
r81 | #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct() | |
|
r69 | experiments = Experiment.objects.filter(campaign__pk=campaign.id) | |
|
r84 | for exs in experiments: | |
exs.get_status() | |||
|
r81 | locations= Location.objects.filter(experiment=experiments).distinct() | |
|
r69 | #experiments = [Experiment.objects.filter(location__pk=location.id).filter(campaign__pk=campaign.id) for location in locations] | |
|
r50 | kwargs = {} | |
#---Campaign | |||
kwargs['campaign'] = campaign | |||
kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description'] | |||
|
r69 | #---Experiment | |
|
r81 | keys = ['id', 'name', 'start_time', 'end_time', 'status'] | |
|
r50 | kwargs['experiment_keys'] = keys[1:] | |
kwargs['experiments'] = experiments | |||
#---Radar | |||
|
r53 | kwargs['locations'] = locations | |
|
r50 | #---Else | |
|
r53 | kwargs['title'] = 'Campaign' | |
|
r50 | kwargs['suptitle'] = campaign.name | |
kwargs['form'] = form | |||
|
r69 | kwargs['button'] = 'Search' | |
|
r71 | kwargs['details'] = True | |
|
r69 | kwargs['search_button'] = True | |
return render(request, 'operation.html', kwargs) | |||
|
r84 | def operation_search(request, id_camp=None): | |
|
r69 | ||
if not id_camp: | |||
campaigns = Campaign.objects.all().order_by('-start_date') | |||
if not campaigns: | |||
return render(request, 'operation.html', {}) | |||
id_camp = campaigns[0].id | |||
|
r84 | campaign = get_object_or_404(Campaign, pk = id_camp) | |
|
r69 | ||
|
r84 | if request.method=='GET': | |
|
r69 | form = OperationSearchForm(initial={'campaign': campaign.id}) | |
if request.method=='POST': | |||
form = OperationSearchForm(request.POST, initial={'campaign':campaign.id}) | |||
if form.is_valid(): | |||
|
r84 | return redirect('url_operation', id_camp=campaign.id) | |
|
r69 | ||
|
r84 | #locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct() | |
experiments = Experiment.objects.filter(campaign__pk=campaign.id) | |||
for exs in experiments: | |||
exs.get_status() | |||
locations= Location.objects.filter(experiment=experiments).distinct() | |||
form = OperationSearchForm(initial={'campaign': campaign.id}) | |||
kwargs = {} | |||
#---Campaign | |||
kwargs['campaign'] = campaign | |||
kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description'] | |||
#---Experiment | |||
keys = ['id', 'name', 'start_time', 'end_time', 'status'] | |||
kwargs['experiment_keys'] = keys[1:] | |||
kwargs['experiments'] = experiments | |||
#---Radar | |||
kwargs['locations'] = locations | |||
#---Else | |||
kwargs['title'] = 'Campaign' | |||
kwargs['suptitle'] = campaign.name | |||
kwargs['form'] = form | |||
kwargs['button'] = 'Select' | |||
kwargs['details'] = True | |||
kwargs['search_button'] = False | |||
return render(request, 'operation.html', kwargs) | |||
def radar_play(request, id_camp, id_radar): | |||
|
r50 | ||
|
r84 | route = request.META['HTTP_REFERER'] | |
route = str(route) | |||
if 'search' in route: | |||
return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp])) | |||
else: | |||
return HttpResponseRedirect(reverse('url_operation', args=[id_camp])) | |||
def radar_stop(request, id_camp, id_radar): | |||
route = request.META['HTTP_REFERER'] | |||
route = str(route) | |||
if 'search' in route: | |||
return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp])) | |||
else: | |||
return HttpResponseRedirect(reverse('url_operation', args=[id_camp])) |