views.py
961 lines
| 29.6 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 | |||
|
r85 | from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm, LocationForm, UploadFileForm, DownloadFileForm, OperationForm, NewForm | ||
|
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 | |||
|
r85 | kwargs = {} | ||
|
r13 | if request.method == 'GET': | ||
|
r85 | |||
if 'template' in request.GET: | ||||
if request.GET['template']=='0': | ||||
form = NewForm(initial={'create_from':2}, | ||||
template_choices=Campaign.objects.filter(template=True).values_list('id', 'name')) | ||||
else: | ||||
kwargs['button'] = 'Create' | ||||
kwargs['experiments'] = Configuration.objects.filter(experiment=request.GET['template']) | ||||
kwargs['experiment_keys'] = ['name', 'start_time', 'end_time'] | ||||
form = CampaignForm(instance=Campaign.objects.get(pk=request.GET['template']), | ||||
initial={'template':False}) | ||||
elif 'blank' in request.GET: | ||||
kwargs['button'] = 'Create' | ||||
form = CampaignForm() | ||||
else: | ||||
form = NewForm() | ||||
|
r13 | |||
if request.method == 'POST': | ||||
|
r85 | kwargs['button'] = 'Create' | ||
post = request.POST.copy() | ||||
experiments = [] | ||||
for id_exp in post.getlist('experiments'): | ||||
exp = Experiment.objects.get(pk=id_exp) | ||||
new_exp = exp.clone(template=False) | ||||
experiments.append(new_exp) | ||||
post.setlist('experiments', []) | ||||
form = CampaignForm(post) | ||||
|
r13 | |||
if form.is_valid(): | ||||
campaign = form.save() | ||||
|
r85 | for exp in experiments: | ||
campaign.experiments.add(exp) | ||||
campaign.save() | ||||
|
r13 | return redirect('url_campaign', id_camp=campaign.id) | ||
kwargs['form'] = form | ||||
kwargs['title'] = 'Campaign' | ||||
kwargs['suptitle'] = 'New' | ||||
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: | ||||
|
r85 | |||
for exp in campaign.experiments.all(): | ||||
for conf in Configuration.objects.filter(experiment=exp): | ||||
conf.delete() | ||||
exp.delete() | ||||
|
r18 | campaign.delete() | ||
|
r85 | |||
|
r18 | 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): | ||
|
r85 | experiment_list = Experiment.objects.all() | ||
|
r13 | |||
|
r85 | keys = ['id', 'name', 'start_time', 'end_time'] | ||
|
r13 | |||
|
r6 | kwargs = {} | ||
|
r13 | |||
kwargs['experiment_keys'] = keys[1:] | ||||
|
r85 | kwargs['experiments'] = experiment_list | ||
|
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 | |||
|
r41 | configurations = Configuration.objects.filter(experiment=experiment, type=0) | ||
|
r13 | |||
kwargs = {} | ||||
|
r85 | exp_keys = ['id', '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 | ||
|
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 | |||
|
r85 | ###### SIDEBAR ###### | ||
kwargs.update(sidebar(experiment=experiment)) | ||||
|
r13 | return render(request, 'experiment.html', kwargs) | ||
|
r85 | |||
|
r79 | def experiment_new(request, id_camp=None): | ||
|
r13 | |||
|
r85 | kwargs = {} | ||
|
r13 | if request.method == 'GET': | ||
|
r85 | if 'template' in request.GET: | ||
if request.GET['template']=='0': | ||||
form = NewForm(initial={'create_from':2}, | ||||
template_choices=Experiment.objects.filter(template=True).values_list('id', 'name')) | ||||
else: | ||||
kwargs['button'] = 'Create' | ||||
kwargs['configurations'] = Configuration.objects.filter(experiment=request.GET['template']) | ||||
kwargs['configuration_keys'] = ['name', 'device__name', 'device__ip_address', 'device__port_address'] | ||||
form = ExperimentForm(instance=Experiment.objects.get(pk=request.GET['template']), | ||||
initial={'template':False}) | ||||
elif 'blank' in request.GET: | ||||
kwargs['button'] = 'Create' | ||||
form = ExperimentForm() | ||||
else: | ||||
form = NewForm() | ||||
|
r13 | |||
|
r6 | if request.method == 'POST': | ||
|
r85 | form = ExperimentForm(request.POST) | ||
|
r6 | if form.is_valid(): | ||
experiment = form.save() | ||||
|
r85 | |||
if 'template' in request.GET: | ||||
configurations = Configuration.objects.filter(experiment=request.GET['template'], type=0) | ||||
for conf in configurations: | ||||
conf.clone(experiment=experiment, template=False) | ||||
|
r13 | return redirect('url_experiment', id_exp=experiment.id) | ||
|
r85 | |||
|
r13 | kwargs['form'] = form | ||
|
r6 | kwargs['title'] = 'Experiment' | ||
kwargs['suptitle'] = 'New' | ||||
|
r13 | |||
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: | ||||
experiment.delete() | ||||
|
r85 | return redirect('url_experiments') | ||
|
r18 | |||
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 | |||
|
r85 | if id_exp<>0: | ||
|
r79 | 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 ###### | ||
|
r85 | kwargs.update(sidebar(conf=conf)) | ||
|
r30 | |||
|
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) | ||||
|
r85 | #Creating a historical configuration | ||
conf.clone(type=0, template=False) | ||||
|
r53 | |||
|
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 ###### | ||||
|
r85 | kwargs.update(sidebar(conf=conf)) | ||
|
r53 | |||
|
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] | ||
|
r85 | DevConfForm = CONF_FORMS[conf.device.device_type.name] | ||
|
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) | ||||
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 ###### | ||||
|
r85 | kwargs.update(sidebar(conf=conf)) | ||
|
r53 | |||
|
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' | ||||
|
r85 | kwargs.update(sidebar(conf=conf)) | ||
|
r53 | |||
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} | ||||
|
r25 | return render(request, 'item_delete.html', kwargs) | ||
|
r85 | |||
def sidebar(**kwargs): | ||||
|
r25 | |||
|
r85 | side_data = {} | ||
conf = kwargs.get('conf', None) | ||||
experiment = kwargs.get('experiment', None) | ||||
|
r26 | |||
|
r85 | if not experiment: | ||
experiment = conf.experiment | ||||
if experiment: | ||||
side_data['experiment'] = experiment | ||||
campaign = experiment.campaign_set.all() | ||||
if campaign: | ||||
side_data['campaign'] = campaign[0] | ||||
experiments = campaign[0].experiments.all() | ||||
else: | ||||
experiments = [experiment] | ||||
configurations = experiment.configuration_set.filter(type=0) | ||||
side_data['side_experiments'] = experiments | ||||
side_data['side_configurations'] = configurations | ||||
|
r25 | |||
|
r85 | return side_data | ||
|
r46 | |||
|
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): | ||||
|
r85 | |||
|
r84 | route = request.META['HTTP_REFERER'] | ||
route = str(route) | ||||
if 'search' in route: | ||||
return HttpResponseRedirect(reverse('url_operation_search', args=[id_camp])) | ||||
else: | ||||
|
r85 | return HttpResponseRedirect(reverse('url_operation', args=[id_camp])) | ||