From 1262807e73eef5d51fd91efad0ec45dcc1b20f16 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 3 Oct 2013 18:27:52 +0200 Subject: [PATCH] sounds: add a facet for tags --- panikweb/paniktags/templatetags/paniktags.py | 11 ++++++-- panikweb/search.py | 5 +++- .../templates/listen/archives.html | 28 ++++++++++++++++--- 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/panikweb/paniktags/templatetags/paniktags.py b/panikweb/paniktags/templatetags/paniktags.py index 4136b2d..54c5e68 100644 --- a/panikweb/paniktags/templatetags/paniktags.py +++ b/panikweb/paniktags/templatetags/paniktags.py @@ -214,8 +214,15 @@ def replace ( string, args ): @register.filter def remove_tag_facet(url, facet): - facet = urllib2.quote(facet.encode('utf-8'), safe='') - return re.sub(r'&page=\d+', '', url.replace('&selected_facets=tags_exact:%s' % facet, '')) + scheme, netloc, path, query, fragment = list(urlparse.urlsplit(str(url))) + facet = 'tags_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 remove_category_facet(url, facet): diff --git a/panikweb/search.py b/panikweb/search.py index 573d1b0..de6ab24 100644 --- a/panikweb/search.py +++ b/panikweb/search.py @@ -163,7 +163,7 @@ class ListenArchivesView(FacetedSearchView): template = 'listen/archives.html' def __init__(self): - sqs = RelatedSearchQuerySet().models(SoundFile).facet('categories').order_by('-date') + sqs = RelatedSearchQuerySet().models(SoundFile).facet('categories').facet('tags').order_by('-date') super(ListenArchivesView, self).__init__(searchqueryset=sqs, form_class=ListenArchivesForm, results_per_page=20) @@ -173,6 +173,9 @@ class ListenArchivesView(FacetedSearchView): 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')] context['facets']['fields']['categories'].sort() return context diff --git a/panikweb_templates/templates/listen/archives.html b/panikweb_templates/templates/listen/archives.html index 9532f8c..49fe2ba 100644 --- a/panikweb_templates/templates/listen/archives.html +++ b/panikweb_templates/templates/listen/archives.html @@ -11,12 +11,10 @@ pri, ei viris quaestio concludaturque qui, cu copiosae senserit quo. Cu dictas officiis has, hinc libris aliquam pro te.

+ {% if facets.fields.categories %} + {% endif %} + + {% if facets.fields.tags %} + + {% endif %} {% endblock %} @@ -39,6 +56,9 @@ officiis has, hinc libris aliquam pro te. {% for category in selected_categories %} {% endfor %} + {% for tag in selected_tags %} + + {% endfor %} {{ form.as_table }} -- 2.39.2