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