From 98e5431a147cd50eea99c115e968df31683d66f5 Mon Sep 17 00:00:00 2001
From: Brian Moe <lars@moe.phys.uwm.edu>
Date: Tue, 17 Nov 2009 17:13:30 -0600
Subject: [PATCH] Rudimentary search on event label.

---
 gracedb/forms.py             | 8 +++++++-
 gracedb/views.py             | 4 ++++
 templates/gracedb/query.html | 6 +++---
 3 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/gracedb/forms.py b/gracedb/forms.py
index e0c4f3059..65a958dd2 100644
--- a/gracedb/forms.py
+++ b/gracedb/forms.py
@@ -1,6 +1,6 @@
 
 from django import forms
-from models import Event, User, Group
+from models import Event, User, Group, Label
 
 class CreateEventForm(forms.Form):
     groupChoices = [("","")]+[(g.name, g.name) for g in Group.objects.all()]
@@ -12,11 +12,16 @@ class CreateEventForm(forms.Form):
 
 class EventSearchForm(forms.Form):
     groupChoices = [("","")]+[(g.name, g.name) for g in Group.objects.all()]
+
     typeChoices= [("","")]+list(Event.ANALYSIS_TYPE_CHOICES)
+
     submitterIds = Event.objects.values_list('submitter',flat=True).distinct()
     submitterList = User.objects.filter(id__in=submitterIds).order_by('name')
     submitterChoices = [("","")]+ [ (u.id, u.name) for u in submitterList]
 
+    labelChoices = [ ("hi%d"%n,"bye%d"%n) for n in [1,2,3]]
+    labelChoices = [ (label.id, label.name) for label in Label.objects.all() ]
+
     graceidStart = forms.CharField(required=False)
     graceidEnd = forms.CharField(required=False)
     group = forms.ChoiceField(choices=groupChoices, required=False)
@@ -25,3 +30,4 @@ class EventSearchForm(forms.Form):
     gpsEnd = forms.IntegerField(min_value=0, required=False, label="GPS End")
     submitter = forms.ChoiceField(choices=submitterChoices, required=False)
 
+    labels = forms.MultipleChoiceField(choices=labelChoices, required=False)
diff --git a/gracedb/views.py b/gracedb/views.py
index 88c50d523..27b6fac37 100644
--- a/gracedb/views.py
+++ b/gracedb/views.py
@@ -355,6 +355,7 @@ def search(request):
             submitter = form.cleaned_data['submitter']
             groupname = form.cleaned_data['group']
             typename = form.cleaned_data['type']
+            labels = form.cleaned_data['labels']
             gpsStart =  form.cleaned_data['gpsStart']
             gpsEnd =  form.cleaned_data['gpsEnd']
 
@@ -399,6 +400,9 @@ def search(request):
             if typename:
                 objects = objects.filter(analysisType=typename)
 
+            if labels:
+                objects = objects.filter(labels__in=labels)
+
             return object_list(request, objects, extra_context={'title':"Query Results"})
 
 
diff --git a/templates/gracedb/query.html b/templates/gracedb/query.html
index 6f859dab5..71bbf971e 100644
--- a/templates/gracedb/query.html
+++ b/templates/gracedb/query.html
@@ -1,7 +1,7 @@
 {% extends "base.html" %}
 
-{% block title %}Query{% endblock %}
-{% block heading %}Query{% endblock %}
+{% block title %}Search{% endblock %}
+{% block heading %}Search{% endblock %}
 {% block pageid %}search{% endblock %}
 
 {% block content %}
@@ -12,5 +12,5 @@
 <tr><td></td><td><input type="Submit"/></td></tr>
 </table>
 </form>
-    
+
 {% endblock %}
-- 
GitLab