--- 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