]> git.0d.be Git - panikweb.git/blobdiff - panikweb/search.py
templates: strip label of embed dialog
[panikweb.git] / panikweb / search.py
index 573d1b0a487a9e718a3a5f0273b59bebdb694b4b..10091bc62f66ef246a71f57405cec3f7b255df82 100644 (file)
@@ -6,7 +6,9 @@ from haystack.backends import EmptyResults
 
 from pysolr import SolrError
 
+from django import forms
 from django.conf import settings
+from django.utils.translation import ugettext_lazy as _
 
 from emissions.models import Emission, Episode, NewsItem, SoundFile
 
@@ -74,7 +76,7 @@ class CustomSolrSearchBackend(haystack.backends.solr_backend.SolrSearchBackend):
             limit_to_registered_models = getattr(settings, 'HAYSTACK_LIMIT_TO_REGISTERED_MODELS', True)
 
         if models and len(models):
-            model_choices = sorted(['%s.%s' % (model._meta.app_label, model._meta.module_name) for model in models])
+            model_choices = sorted(['%s.%s' % (model._meta.app_label, model._meta.model_name) for model in models])
         elif limit_to_registered_models:
             # Using narrow queries, limit the results to only models handled
             # with the current routers.
@@ -133,13 +135,21 @@ class GlobalSearchForm(FacetedSearchForm):
 class SearchView(FacetedSearchView):
     def extra_context(self):
         context = super(SearchView, self).extra_context()
-        context['sectionName'] = 'Search'
+        if self.request.GET.getlist('selected_facets'):
+            context['facets_qs'] = '&selected_facets=' + '&'.join(self.request.GET.getlist('selected_facets'))
         context['selected_categories'] = [
                 x.split(':', 1)[1] for x in self.request.GET.getlist('selected_facets')
                 if x.startswith('categories_exact')]
         context['selected_tags'] = [
                 x.split(':', 1)[1] for x in self.request.GET.getlist('selected_facets')
                 if x.startswith('tags_exact')]
+        if 'categories' in context['facets'].get('fields', []):
+            context['facets']['fields']['categories'] = [x for x in
+                    context['facets']['fields']['categories'] if x[1] > 0]
+            context['facets']['fields']['categories'].sort()
+        if 'tags' in context['facets'].get('fields', []):
+            context['facets']['fields']['tags'] = [x for x in
+                    context['facets']['fields']['tags'] if x[1] > 0]
         return context
 
 sqs = SearchQuerySet().models(Emission, Episode, NewsItem).facet('categories').facet('tags')
@@ -151,6 +161,8 @@ view = search_view_factory(SearchView,
 
 
 class ListenArchivesForm(FacetedSearchForm):
+    q = forms.CharField(required=False, label='')
+
     def no_query_found(self):
         return self.searchqueryset.all()
 
@@ -163,17 +175,68 @@ class ListenArchivesView(FacetedSearchView):
     template = 'listen/archives.html'
 
     def __init__(self):
-        sqs = RelatedSearchQuerySet().models(SoundFile).facet('categories').order_by('-date')
+        sqs = RelatedSearchQuerySet().models(SoundFile).facet('format').facet('tags').order_by('-date')
         super(ListenArchivesView, self).__init__(searchqueryset=sqs,
                 form_class=ListenArchivesForm, results_per_page=20)
 
     def extra_context(self):
         context = super(ListenArchivesView, self).extra_context()
-        context['sectionName'] = "Listen"
-        context['selected_categories'] = [
+        if self.request.GET.getlist('selected_facets'):
+            context['facets_qs'] = '&selected_facets=' + '&'.join(self.request.GET.getlist('selected_facets'))
+        context['selected_format'] = [
                 x.split(':', 1)[1] for x in self.request.GET.getlist('selected_facets')
-                if x.startswith('categories_exact')]
-        context['facets']['fields']['categories'].sort()
+                if x.startswith('format_exact')]
+        context['selected_tags'] = [
+                x.split(':', 1)[1] for x in self.request.GET.getlist('selected_facets')
+                if x.startswith('tags_exact')]
+        if 'format' in context['facets'].get('fields', []):
+            context['facets']['fields']['format'] = [x for x in
+                    context['facets']['fields']['format'] if x[1] > 0]
+            context['facets']['fields']['format'].sort()
+        if 'tags' in context['facets'].get('fields', []):
+            context['facets']['fields']['tags'] = [x for x in
+                    context['facets']['fields']['tags'] if x[1] > 0]
         return context
 
 listenArchives = search_view_factory(ListenArchivesView)
+
+
+class NewsArchivesForm(FacetedSearchForm):
+    q = forms.CharField(required=False, label='')
+
+    def no_query_found(self):
+        return self.searchqueryset.all()
+
+    def search(self):
+        sqs = super(NewsArchivesForm, self).search()
+        return sqs.load_all()
+
+
+class NewsArchivesView(FacetedSearchView):
+    template = 'news/archives.html'
+
+    def __init__(self):
+        sqs = RelatedSearchQuerySet().models(NewsItem).facet('news_categories').facet('tags').order_by('-date')
+        super(NewsArchivesView, self).__init__(searchqueryset=sqs,
+                form_class=NewsArchivesForm, results_per_page=20)
+
+    def extra_context(self):
+        context = super(NewsArchivesView, self).extra_context()
+        if self.request.GET.getlist('selected_facets'):
+            context['facets_qs'] = '&selected_facets=' + '&'.join(self.request.GET.getlist('selected_facets'))
+        context['selected_news_categories'] = [
+                x.split(':', 1)[1] for x in self.request.GET.getlist('selected_facets')
+                if x.startswith('news_categories_exact')]
+        context['selected_tags'] = [
+                x.split(':', 1)[1] for x in self.request.GET.getlist('selected_facets')
+                if x.startswith('tags_exact')]
+        if 'news_categories' in context['facets'].get('fields', []):
+            context['facets']['fields']['news_categories'] = [x for x in
+                    context['facets']['fields']['news_categories'] if x[1] > 0]
+            context['facets']['fields']['news_categories'].sort()
+        if 'tags' in context['facets'].get('fields', []):
+            context['facets']['fields']['tags'] = [x for x in
+                    context['facets']['fields']['tags'] if x[1] > 0]
+        return context
+
+newsArchives = search_view_factory(NewsArchivesView)