]> git.0d.be Git - panikdb.git/commitdiff
episode: add tags, using the taggit application
authorFrédéric Péters <fpeters@0d.be>
Thu, 15 Aug 2013 15:56:48 +0000 (17:56 +0200)
committerFrédéric Péters <fpeters@0d.be>
Thu, 15 Aug 2013 15:56:48 +0000 (17:56 +0200)
panikdb/emissions/models.py
panikdb/emissions/search_indexes.py
panikdb/emissions/templates/search/indexes/emissions/episode_text.txt
panikdb/settings.py
panikdb/templates/search/search.html
panikdb/urls.py
requirements.txt

index b9464af1876c0ad1eaadb65840e2c92e94f3dc73..57fc69f37457479ec929f903aaacea096543e492 100644 (file)
@@ -7,6 +7,7 @@ from django.core.urlresolvers import reverse
 from django.db import models
 
 from ckeditor.fields import RichTextField
+from taggit.managers import TaggableManager
 
 
 class Category(models.Model):
@@ -69,6 +70,7 @@ class Episode(models.Model):
     slug = models.SlugField()
     description = RichTextField(null=True, blank=True)
     text = RichTextField(null=True)
+    tags = TaggableManager(blank=True)
 
     # XXX: languages (models.ManyToManyField(Language))
 
index abdd129c5fd3b2b9db454863dad675e013542269..d4a43989a4a7175b79d6fe60e6b58e720132fc73 100644 (file)
@@ -15,7 +15,10 @@ class EmissionIndex(indexes.SearchIndex, indexes.Indexable):
 
 class EpisodeIndex(indexes.SearchIndex, indexes.Indexable):
     text = indexes.CharField(document=True, use_template=True)
+    tags = indexes.MultiValueField(faceted=True)
 
     def get_model(self):
         return Episode
 
+    def prepare_tags(self, obj):
+        return [tag.name for tag in obj.tags.all()]
index 5916825b3a537b996b2989a96982596cf51b0efb..47238eb79df7ff34d1cc9817b3336303a9c9ddf5 100644 (file)
@@ -3,3 +3,5 @@
 {{ object.description|striptags }}
 
 {{ object.text|striptags }}
+
+{% for tag in object.tags.all %} {{ tag.name }} {% endfor %}
index fb8ed48823c6e4d2c5a61bc23d2cb8c467a0007d..581cd037aeff1058c0cac966f0d1f209ba512680 100644 (file)
@@ -125,6 +125,7 @@ INSTALLED_APPS = (
     'south',
     'ckeditor',
     'haystack',
+    'taggit',
     'panikdb.emissions',
 )
 
@@ -171,7 +172,7 @@ CKEDITOR_CONFIGS = {
 HAYSTACK_CONNECTIONS = {
     'default': {
         'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
-        'URL': 'http://127.0.0.1:8080/solr'
+        'URL': 'http://127.0.0.1:8983/solr/panik'
     },
 }
 
index 6c5d56a7c00eb528de22defd2c5dbcfa9d3fc82f..d5b10a6223ee6163b45aa48193116153f76c5274 100644 (file)
@@ -18,7 +18,8 @@
     <!-- Begin faceting. -->
 <p>
     {% if facets.fields.categories %}
-      {# Provide only the top 5 authors #}
+    Catégories :
+      {# Provide only the top 5 categories #}
         {% for category in facets.fields.categories|slice:":5" %}
             <span><a href="{{ request.get_full_path }}&amp;selected_facets=categories_exact:{{ category.0|urlencode }}">{{ category.0 }}</a> ({{ category.1 }})</span>
         {% endfor %}
     {% endif %}
 </p>
 
+<p>
+    {% if facets.fields.tags %}
+    Tags :
+      {# Provide only the top 5 tags #}
+        {% for tag in facets.fields.tags|slice:":5" %}
+            <span><a href="{{ request.get_full_path }}&amp;selected_facets=tags_exact:{{ tag.0|urlencode }}">{{ tag.0 }}</a> ({{ tag.1 }})</span>
+        {% endfor %}
+    {% else %}
+        No tags facets.
+    {% endif %}
+</p>
+
+
     <!-- End faceting -->
 
             <h3>Résultats</h3>
index 2c02e2020a451225b67f07fedd953ff7965d3b34..9e6d9d28cfc6a2519a898b66c1383f3e1e5012ad 100644 (file)
@@ -10,7 +10,7 @@ from haystack.views import FacetedSearchView, search_view_factory
 from haystack.forms import FacetedSearchForm
 from haystack.query import SearchQuerySet
 
-sqs = SearchQuerySet().facet('categories')
+sqs = SearchQuerySet().facet('categories').facet('tags')
 
 urlpatterns = patterns('',
     url(r'^$', RedirectView.as_view(url=reverse_lazy('emission-list'))),
index 153baa27e5054f5cac894d7196fe8339c4fbc26a..5c18bb5eb08da3ba575247063ac3c255d1b99da3 100644 (file)
@@ -1,4 +1,5 @@
 Django<1.6
 south>=0.8,<0.9
 django-ckeditor
+django-taggit
 git+https://github.com/toastdriven/django-haystack.git