From 0e9f806e5e2f298f6d769852dcd4b5f1553ce6f1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Mon, 16 Sep 2013 22:06:03 +0200 Subject: [PATCH] add categories to sound page --- panikweb/paniktags/templatetags/paniktags.py | 16 +++++++++++--- panikweb/search.py | 10 ++++++--- panikweb/urls.py | 3 +-- .../templates/listen/archives.html | 21 ++++++++++++++++++- 4 files changed, 41 insertions(+), 9 deletions(-) diff --git a/panikweb/paniktags/templatetags/paniktags.py b/panikweb/paniktags/templatetags/paniktags.py index f836f10..2527ba1 100644 --- a/panikweb/paniktags/templatetags/paniktags.py +++ b/panikweb/paniktags/templatetags/paniktags.py @@ -2,6 +2,7 @@ import email.utils import datetime import re import time +import urlparse import urllib2 import uuid @@ -175,18 +176,27 @@ def remove_tag_facet(url, facet): @register.filter def remove_category_facet(url, facet): - facet = urllib2.quote(facet.encode('utf-8'), safe='') - return re.sub(r'&page=\d+', '', url.replace('&selected_facets=categories_exact:%s' % facet, '')) - + scheme, netloc, path, query, fragment = list(urlparse.urlsplit(str(url))) + facet = 'categories_exact:%s' % facet.encode('utf-8') + query_string = urlparse.parse_qsl(query) + query_string = [x for x in query_string if not ( + x[0] == 'selected_facets' and x[1] == facet)] + query = '&'.join(['%s=%s' % x for x in query_string]) + url = urlparse.urlunsplit([scheme, netloc, path, query, None]) + return re.sub(r'&page=\d+', '', url) @register.filter def append_tag_facet(url, facet): facet = urllib2.quote(facet.encode('utf-8'), safe='') + if not '?' in url: + url = url + '?' return re.sub(r'&page=\d+', '', url + '&selected_facets=tags_exact:%s' % facet) @register.filter def append_category_facet(url, facet): facet = urllib2.quote(facet.encode('utf-8'), safe='') + if not '?' in url: + url = url + '?' return re.sub(r'&page=\d+', '', url + '&selected_facets=categories_exact:%s' % facet) diff --git a/panikweb/search.py b/panikweb/search.py index d1617e2..573d1b0 100644 --- a/panikweb/search.py +++ b/panikweb/search.py @@ -150,7 +150,7 @@ view = search_view_factory(SearchView, -class ListenArchivesForm(SearchForm): +class ListenArchivesForm(FacetedSearchForm): def no_query_found(self): return self.searchqueryset.all() @@ -159,17 +159,21 @@ class ListenArchivesForm(SearchForm): return sqs.load_all() -class ListenArchivesView(haystack.views.SearchView): +class ListenArchivesView(FacetedSearchView): template = 'listen/archives.html' def __init__(self): - sqs = RelatedSearchQuerySet().filter(django_ct='emissions.soundfile').order_by('-date') + sqs = RelatedSearchQuerySet().models(SoundFile).facet('categories').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'] = [ + x.split(':', 1)[1] for x in self.request.GET.getlist('selected_facets') + if x.startswith('categories_exact')] + context['facets']['fields']['categories'].sort() return context listenArchives = search_view_factory(ListenArchivesView) diff --git a/panikweb/urls.py b/panikweb/urls.py index 64d2780..dc8dd96 100644 --- a/panikweb/urls.py +++ b/panikweb/urls.py @@ -19,8 +19,7 @@ urlpatterns = patterns('', url(r'^emissions/(?P[\w,-]+)/$', 'panikweb.views.emission', name='emission-view'), url(r'^ckeditor/', include('ckeditor.urls')), url(r'^emissions/archives$', 'panikweb.views.emissionsArchives', name='emissionsArchives'), - url(r'^listen/$', 'panikweb.views.listen', name='listen'), - url(r'^listen/archives/$', 'panikweb.search.listenArchives', name='listenArchives'), + url(r'^listen/$', 'panikweb.search.listenArchives', name='listen'), url(r'^news/$', 'panikweb.views.news', name='news'), url(r'^news/archives/$', 'panikweb.views.newsArchives', name='newsArchives'), url(r'^news/(?P[\w,-]+)$', 'panikweb.views.newsitemview', name='news-view'), diff --git a/panikweb_templates/templates/listen/archives.html b/panikweb_templates/templates/listen/archives.html index 68eea80..b65cdc6 100644 --- a/panikweb_templates/templates/listen/archives.html +++ b/panikweb_templates/templates/listen/archives.html @@ -2,12 +2,31 @@ {% load paniktags %} {% block title %}Listen - Archives{% endblock %} {% block nav %} - {% listen_nav with klass="archives" %} + + {% endblock %} {% block main %}
+ {% for category in selected_categories %} + + {% endfor %} {{ form.as_table }}
-- 2.39.2