Mercurial > public > sg101
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> • ({{ 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 %}