diff --git a/apps/main/forms.py b/apps/main/forms.py index 23c643d..84e388f 100644 --- a/apps/main/forms.py +++ b/apps/main/forms.py @@ -101,6 +101,26 @@ class DownloadFileForm(forms.Form): class OperationForm(forms.Form): # today = datetime.today() - # -----Campaigns from this month------ - campaign = forms.ChoiceField(choices=Campaign.objects.all().order_by('-start_date').values_list('id', 'name')[:5], label="Campaign") + # -----Campaigns from this month------[:5] + campaign = forms.ChoiceField(label="Campaign") + + def __init__(self, *args, **kwargs): + + if 'length' not in kwargs.keys(): + length = None + else: + length = kwargs['length'] + + kwargs.pop('length') + + super(OperationForm, self).__init__(*args, **kwargs) + self.fields['campaign'].choices=Campaign.objects.all().order_by('-start_date').values_list('id', 'name')[:length] + +class OperationSearchForm(forms.Form): + # -----ALL Campaigns------ + campaign = forms.ChoiceField(label="Campaign") + + def __init__(self, *args, **kwargs): + super(OperationSearchForm, self).__init__(*args, **kwargs) + self.fields['campaign'].choices=Campaign.objects.all().order_by('-start_date').values_list('id', 'name') \ No newline at end of file diff --git a/apps/main/templates/operation.html b/apps/main/templates/operation.html index 7eb63fb..1026e92 100644 --- a/apps/main/templates/operation.html +++ b/apps/main/templates/operation.html @@ -18,7 +18,10 @@ {% bootstrap_form form layout='horizontal' size='medium' %}

+ + {% if search_button == True %} + {% endif %}

@@ -105,6 +108,7 @@ document.location = $(this).data("href"); }); + {% if search_button == True %} $(document).ready(function() { $("#id_campaign").change(function() { var id_camp = document.getElementById("id_campaign").value; @@ -112,6 +116,15 @@ document.location = "{% url 'url_operation'%}"+String(id_camp); }); }); + {% else %} + $(document).ready(function() { + $("#id_campaign").change(function() { + var id_camp = document.getElementById("id_campaign").value; + //alert(id_camp); + document.location = "{% url 'url_operation_search'%}"+String(id_camp); + }); + }); + {% endif %} $("#button-1").click(function() { document.location = "{% url 'url_operation_search' %}"; diff --git a/apps/main/urls.py b/apps/main/urls.py index e5462a8..7944d25 100644 --- a/apps/main/urls.py +++ b/apps/main/urls.py @@ -40,6 +40,8 @@ urlpatterns = ( url(r'^dev_conf/(?P-?\d+)/status/$', 'apps.main.views.dev_conf_status', name='url_status_dev_conf'), url(r'^operation/$', 'apps.main.views.operation', name='url_operation'), + url(r'^operation/search/$', 'apps.main.views.operation_search', name='url_operation_search'), + url(r'^operation/search/(?P-?\d+)/$', 'apps.main.views.operation_search', name='url_operation_search'), url(r'^operation/(?P-?\d+)/$', 'apps.main.views.operation', name='url_operation'), ) diff --git a/apps/main/views.py b/apps/main/views.py index e685a10..dde1a0c 100644 --- a/apps/main/views.py +++ b/apps/main/views.py @@ -2,6 +2,7 @@ from django.shortcuts import render, redirect, get_object_or_404, HttpResponse from django.contrib import messages from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm, LocationForm, UploadFileForm, DownloadFileForm, OperationForm +from .forms import OperationSearchForm from apps.cgs.forms import CGSConfigurationForm from apps.jars.forms import JARSConfigurationForm from apps.usrp.forms import USRPConfigurationForm @@ -9,7 +10,7 @@ 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, Location +from .models import Campaign, Experiment, Device, Configuration, Location, RunningExperiment from apps.cgs.models import CGSConfiguration from apps.jars.models import JARSConfiguration from apps.usrp.models import USRPConfiguration @@ -70,6 +71,35 @@ def location(request, id_loc): return render(request, 'location.html', kwargs) +#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) + def location_new(request): if request.method == 'GET': @@ -774,23 +804,21 @@ def operation(request, id_camp=None): campaign = get_object_or_404(Campaign, pk = id_camp) if request.method=='GET': - form = OperationForm(initial={'campaign': id_camp}) + form = OperationForm(initial={'campaign': campaign.id}, length = 5) if request.method=='POST': - form = OperationForm(request.POST, initial={'campaign':campaign.id}) + form = OperationForm(request.POST, initial={'campaign':campaign.id}, length = 5) if form.is_valid(): return redirect('url_operation', id_camp=campaign.id) - - locations = Location.objects.filter(experiment__campaign__pk = campaign.id) - experiments = Experiment.objects.filter(campaign=campaign) - experiments = [Experiment.objects.filter(location__pk=location.id) for location in locations] - + locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct() + experiments = Experiment.objects.filter(campaign__pk=campaign.id) + #experiments = [Experiment.objects.filter(location__pk=location.id).filter(campaign__pk=campaign.id) for location in locations] kwargs = {} #---Campaign kwargs['campaign'] = campaign kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description'] - #---Experimet + #---Experiment keys = ['id', 'name', 'start_time', 'end_time'] kwargs['experiment_keys'] = keys[1:] kwargs['experiments'] = experiments @@ -800,6 +828,60 @@ def operation(request, id_camp=None): kwargs['title'] = 'Campaign' kwargs['suptitle'] = campaign.name kwargs['form'] = form - kwargs['button'] = 'Apply' + kwargs['button'] = 'Search' + kwargs['search_button'] = True + + return render(request, 'operation.html', kwargs) + +def operation_search(request, id_camp=None, location_play = None): + + + if not id_camp: + campaigns = Campaign.objects.all().order_by('-start_date') + form = OperationSearchForm() + + if not campaigns: + return render(request, 'operation.html', {}) + + id_camp = campaigns[0].id + campaign = get_object_or_404(Campaign, pk = id_camp) + + kwargs = {} + kwargs['title'] = 'All Campaigns' + kwargs['form'] = form + return render(request, 'operation.html', kwargs) + + else: + campaign = get_object_or_404(Campaign, pk = id_camp) + locations = Location.objects.filter(experiment__campaign__pk = campaign.id).distinct() + experiments = Experiment.objects.filter(campaign__pk=campaign.id) + #experiments = [Experiment.objects.filter(location__pk=location.id).filter(campaign__pk=campaign.id) for location in locations] + 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'] + 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 + + + if request.method=='POST': + form = OperationSearchForm(request.POST, initial={'campaign':campaign.id}) + + if form.is_valid(): + return redirect('operation.html', id_camp=campaign.id) + return render(request, 'operation.html', kwargs) \ No newline at end of file