src/iconolab/search_indexes/forms.py
changeset 124 e5267573edd8
parent 116 1e2caa72bf2f
child 148 5d2cd51c6951
--- a/src/iconolab/search_indexes/forms.py	Fri Aug 12 16:12:40 2016 +0200
+++ b/src/iconolab/search_indexes/forms.py	Wed Aug 17 18:36:44 2016 +0200
@@ -5,42 +5,45 @@
 
 
 
-#def get_available_choices():
-
-def get_selected_model(type):
-	
-	available_models = {
-		'image': Image,
-		'annotation': Annotation
-	}
-
-	return available_models[type]
-
-
 class IconolabSearchForm(SearchForm):
 
-	realm = forms.ChoiceField(required=False, choices=(("image","Image"), ("annotation","Annotation")) )
+	model_type = forms.ChoiceField(required=False, choices=(("images","Image"), ("annotations","Annotation")) )
 	
 	def __init__(self, *args, **kwargs):
-		
+		self.collection_name = kwargs.pop("collection_name")
+		selected_model_type =  kwargs.pop("model_type", None)
+
+		if selected_model_type is not None: 
+			data = kwargs.get("data", None)
+			if data:
+				data = data.copy()
+				data["model_type"] = selected_model_type
+				kwargs['data'] = data
+
 		super(IconolabSearchForm, self).__init__(*args, **kwargs)
+	
+	def no_query_found(self):
+		print("inside no_query_found")
+		return self.searchqueryset.all()
 
-	def get_realm_queryset(self, qs, realm):
+	def get_model_type_queryset(self, qs, model_type):
 		
-		if realm == 'image':
+		if model_type == 'images':
 			qs = qs.models(Image).load_all_queryset(Image, Image.objects.select_related('item', 'item__metadatas'))
-		if realm == 'annotation':
+		if model_type == 'annotations':
 			qs = qs.models(Annotation).load_all_queryset(Annotation, Annotation.objects.select_related('image', 'stats', 'current_revision', 'author'))
+		
+		if self.collection_name is not None:
+			qs = qs.filter(collection = self.collection_name)
+
 		return qs
 
 	def search(self):
-		
-		selected_realm = self.cleaned_data.get("realm")
-		selected_model = get_selected_model(selected_realm)
+		selected_type = self.cleaned_data.get("model_type")
 		#load all if q empty
 		qs = super(IconolabSearchForm, self).search()
 		if qs.count() == 0:
 			return qs
 		else:
-			qs = self.get_realm_queryset(qs, selected_realm).load_all()
+			qs = self.get_model_type_queryset(qs, selected_type).load_all()
 		return qs
\ No newline at end of file