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