# HG changeset patch # User Brian Neal # Date 1275858348 0 # Node ID a5fcf3d1b663a843d1d25fe7b3f3b1bef7e4d779 # Parent 8d13baeaa5c1ecd380f50a95904a5f2afff2ef48 For #51; add forums to Haystack search. diff -r 8d13baeaa5c1 -r a5fcf3d1b663 gpp/forums/models.py --- 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.""" diff -r 8d13baeaa5c1 -r a5fcf3d1b663 gpp/forums/search_indexes.py --- /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) diff -r 8d13baeaa5c1 -r a5fcf3d1b663 gpp/templates/search/indexes/forums/post_text.txt --- /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 }} diff -r 8d13baeaa5c1 -r a5fcf3d1b663 gpp/templates/search/search.html --- 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 @@
{% for result in page.object_list %}
- {{ result.verbose_name }}: {{ result.object.search_title }} • ({{ result.score }}) + {{ result.verbose_name }}: {{ result.object.search_title }} ({{ result.score }})
{% highlight result.object.search_summary with query css_class "highlight" max_length 200 %}