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
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.
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')
class ListenArchivesForm(FacetedSearchForm):
+ q = forms.CharField(required=False, label='')
+
def no_query_found(self):
return self.searchqueryset.all()
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)