changeset 222:a5fcf3d1b663

For #51; add forums to Haystack search.
author Brian Neal <bgneal@gmail.com>
date Sun, 06 Jun 2010 21:05:48 +0000
parents 8d13baeaa5c1
children cd4124b19196
files gpp/forums/models.py gpp/forums/search_indexes.py gpp/templates/search/indexes/forums/post_text.txt gpp/templates/search/search.html
diffstat 4 files changed, 29 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/gpp/forums/models.py	Sun Jun 06 20:19:10 2010 +0000
+++ b/gpp/forums/models.py	Sun Jun 06 21:05:48 2010 +0000
@@ -281,6 +281,12 @@
         """Call this function to indicate the post has been edited."""
         self.update_date = datetime.datetime.now()
 
+    def search_title(self):
+        return u"%s by %s" % (self.topic.name, self.user.username)
+
+    def search_summary(self):
+        return self.body
+
 
 class FlaggedPost(models.Model):
     """This model represents a user flagging a post as inappropriate."""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gpp/forums/search_indexes.py	Sun Jun 06 21:05:48 2010 +0000
@@ -0,0 +1,18 @@
+"""Haystack search index for the weblinks application."""
+from haystack.indexes import *
+from haystack import site
+
+from forums.models import Forum, Post
+
+
+class PostIndex(SearchIndex):
+    text = CharField(document=True, use_template=True)
+    author = CharField(model_attr='user')
+    pub_date = DateTimeField(model_attr='creation_date')
+
+    def get_queryset(self):
+        return Post.objects.filter(
+                topic__forum__in=Forum.objects.public_forums())
+
+
+site.register(Post, PostIndex)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gpp/templates/search/indexes/forums/post_text.txt	Sun Jun 06 21:05:48 2010 +0000
@@ -0,0 +1,4 @@
+{{ object.topic.name }}
+{{ object.user.username }}
+{{ object.user.get_full_name }}
+{{ object.body }}
--- a/gpp/templates/search/search.html	Sun Jun 06 20:19:10 2010 +0000
+++ b/gpp/templates/search/search.html	Sun Jun 06 21:05:48 2010 +0000
@@ -19,7 +19,7 @@
       <dl>
       {% for result in page.object_list %}
          <dt>
-         {{ result.verbose_name }}: <a href="{{ result.object.get_absolute_url }}">{{ result.object.search_title }}</a> &bull; ({{ result.score }})
+         {{ result.verbose_name }}: <a href="{{ result.object.get_absolute_url }}">{{ result.object.search_title }}</a> ({{ result.score }})
          </dt>
          <dd>
             {% highlight result.object.search_summary with query css_class "highlight" max_length 200 %}