]> git.0d.be Git - panikweb.git/commitdiff
display tags in episode view
authorFrédéric Péters <fpeters@0d.be>
Mon, 16 Sep 2013 19:09:42 +0000 (21:09 +0200)
committerFrédéric Péters <fpeters@0d.be>
Mon, 16 Sep 2013 19:09:42 +0000 (21:09 +0200)
panikweb/search.py
panikweb_templates/templates/episodes/detail.html
panikweb_templates/templates/search/search.html

index 39f33712f715f51b3fb17ef8a25fb67d802e0e08..d1617e230b6ab07d569419ef9830438549a38d1d 100644 (file)
@@ -116,6 +116,20 @@ from haystack.views import search_view_factory, FacetedSearchView
 from haystack.forms import FacetedSearchForm, SearchForm
 
 
 from haystack.forms import FacetedSearchForm, SearchForm
 
 
+class GlobalSearchForm(FacetedSearchForm):
+    def no_query_found(self):
+        sqs = super(GlobalSearchForm, self).no_query_found()
+        if self.selected_facets:
+            sqs = self.searchqueryset.all()
+            for facet in self.selected_facets:
+                if ":" not in facet:
+                    continue
+                field, value = facet.split(":", 1)
+                if value:
+                    sqs = sqs.narrow(u'%s:"%s"' % (field, sqs.query.clean(value)))
+        return sqs
+
+
 class SearchView(FacetedSearchView):
     def extra_context(self):
         context = super(SearchView, self).extra_context()
 class SearchView(FacetedSearchView):
     def extra_context(self):
         context = super(SearchView, self).extra_context()
@@ -131,7 +145,7 @@ class SearchView(FacetedSearchView):
 sqs = SearchQuerySet().models(Emission, Episode, NewsItem).facet('categories').facet('tags')
 
 view = search_view_factory(SearchView,
 sqs = SearchQuerySet().models(Emission, Episode, NewsItem).facet('categories').facet('tags')
 
 view = search_view_factory(SearchView,
-        form_class=FacetedSearchForm,
+        form_class=GlobalSearchForm,
         searchqueryset=sqs)
 
 
         searchqueryset=sqs)
 
 
index bd01733ba05d371a1e682068888e406fa0599141..73d7d6c9e0c3d92bea3dd4b7099bf5dd054a8226 100644 (file)
                            {% if episode.redif %}<dt>Redifusion</dt><dd>{{ redif }}</dd>{% endif %}
                        </dl>
                        {% endif %}
                            {% if episode.redif %}<dt>Redifusion</dt><dd>{{ redif }}</dd>{% endif %}
                        </dl>
                        {% endif %}
-                       {% if episode.tagList %}
+                       {% if episode.tags.all %}
                        <ul class="custom inline">
                        <ul class="custom inline">
-                               {% for tag in episode.tagList %}
-                                       <li><button class="tag">{{ tag }}</button></li>
+                               {% for tag in episode.tags.all %}
+                               <li><a class="tag" href="{% url 'search' %}?&selected_facets=tags_exact:{{tag.slug}}">{{ tag }}</a></li>
                                {% endfor %}
                        </ul>
                        {% endif %}
                                {% endfor %}
                        </ul>
                        {% endif %}
index b3339d66bcb3b081d3df77ea88b924bf372dee7a..5c939b8611a7f6af7a17c22cc808460558ba512a 100644 (file)
@@ -8,7 +8,7 @@
     <form method="get" action="." class="big center" id="search-form">
             {{ form.as_table }}<button class="icon-search"></button>
     </form>
     <form method="get" action="." class="big center" id="search-form">
             {{ form.as_table }}<button class="icon-search"></button>
     </form>
-       {% if query %}
+       {% if query or selected_tags %}
                <nav>
                    {% if facets.fields.categories %}
                    <ul class="custom padded">
                <nav>
                    {% if facets.fields.categories %}
                    <ul class="custom padded">
@@ -52,7 +52,7 @@
 
 
 {% block main %}
 
 
 {% block main %}
-       {% if query %}
+       {% if query or selected_tags %}
 <div class="wrapper">
        <div class="marged">
                {% if not page.object_list %}
 <div class="wrapper">
        <div class="marged">
                {% if not page.object_list %}