summaryrefslogtreecommitdiffstats
path: root/askbot/search
diff options
context:
space:
mode:
authorAdolfo Fitoria <adolfo.fitoria@gmail.com>2012-06-21 15:45:21 -0600
committerAdolfo Fitoria <adolfo.fitoria@gmail.com>2012-06-21 15:45:21 -0600
commitf1eda1494b753b052c82811419aff8380520ec85 (patch)
treee2f9abb90036563f384efd329392a8788bf637bb /askbot/search
parent3c9079c6255dbc83bd205e5f0147d330ee0f97e0 (diff)
downloadaskbot-f1eda1494b753b052c82811419aff8380520ec85.tar.gz
askbot-f1eda1494b753b052c82811419aff8380520ec85.tar.bz2
askbot-f1eda1494b753b052c82811419aff8380520ec85.zip
added tests for haystack
Diffstat (limited to 'askbot/search')
-rw-r--r--askbot/search/haystack/__init__.py83
1 files changed, 42 insertions, 41 deletions
diff --git a/askbot/search/haystack/__init__.py b/askbot/search/haystack/__init__.py
index 7927aa87..71f04d00 100644
--- a/askbot/search/haystack/__init__.py
+++ b/askbot/search/haystack/__init__.py
@@ -1,58 +1,59 @@
try:
from haystack import indexes, site
from haystack.query import SearchQuerySet
-except ImportError:
- pass
+ from askbot.models import Post, Thread, User
-from askbot.models import Post, Thread, User
-class ThreadIndex(indexes.SearchIndex):
- text = indexes.CharField(document=True, use_template=True)
- title = indexes.CharField(model_attr='title')
- post_text = indexes.CharField(model_attr='posts__text__search')
+ class ThreadIndex(indexes.SearchIndex):
+ text = indexes.CharField(document=True, use_template=True)
+ title = indexes.CharField(model_attr='title')
+ post_text = indexes.CharField(model_attr='posts__text__search')
- def index_queryset(self):
- return Thread.objects.filter(posts__deleted=False)
+ def index_queryset(self):
+ return Thread.objects.filter(posts__deleted=False)
- def prepare(self, obj):
- self.prepared_data = super(ThreadIndex, self).prepare(object)
+ def prepare(self, obj):
+ self.prepared_data = super(ThreadIndex, self).prepare(object)
- self.prepared_data['tags'] = [tag.name for tag in objects.tags.all()]
+ self.prepared_data['tags'] = [tag.name for tag in objects.tags.all()]
-class PostIndex(indexes.SearchIndex):
- text = indexes.CharField(document=True, use_template=True)
- post_text = indexes.CharField(model_attr='text')
- author = indexes.CharField(model_attr='user')
- thread_id = indexes.CharField(model_attr='thread')
+ class PostIndex(indexes.SearchIndex):
+ text = indexes.CharField(document=True, use_template=True)
+ post_text = indexes.CharField(model_attr='text')
+ author = indexes.CharField(model_attr='user')
+ thread_id = indexes.CharField(model_attr='thread')
- def index_queryset(self):
- return Post.objects.filter(deleted=False)
+ def index_queryset(self):
+ return Post.objects.filter(deleted=False)
-class UserIndex(indexes.SearchIndex):
- text = indexes.CharField(document=True, use_template=True)
+ class UserIndex(indexes.SearchIndex):
+ text = indexes.CharField(document=True, use_template=True)
- def index_queryset(self):
- return User.objects.all()
+ def index_queryset(self):
+ return User.objects.all()
-site.register(Post, PostIndex)
-site.register(Thread, ThreadIndex)
-site.register(User, UserIndex)
+ site.register(Post, PostIndex)
+ site.register(Thread, ThreadIndex)
+ site.register(User, UserIndex)
-class AskbotSearchQuerySet(SearchQuerySet):
+ class AskbotSearchQuerySet(SearchQuerySet):
- def get_django_queryset(self, model_klass=Thread):
- '''dirty hack because models() method from the
- SearchQuerySet does not work </3'''
- id_list = []
- for r in self:
- if r.model_name in ['thread','post'] \
- and model_klass._meta.object_name.lower() == 'thread':
- if getattr(r, 'thread_id'):
- id_list.append(r.thread_id)
- else:
+ def get_django_queryset(self, model_klass=Thread):
+ '''dirty hack because models() method from the
+ SearchQuerySet does not work </3'''
+ id_list = []
+ for r in self:
+ if r.model_name in ['thread','post'] \
+ and model_klass._meta.object_name.lower() == 'thread':
+ if getattr(r, 'thread_id'):
+ id_list.append(r.thread_id)
+ else:
+ id_list.append(r.pk)
+ elif r.model_name == model_klass._meta.object_name.lower():
+ #FIXME: add a highlight here?
id_list.append(r.pk)
- elif r.model_name == model_klass._meta.object_name.lower():
- #FIXME: add a highlight here?
- id_list.append(r.pk)
- return model_klass.objects.filter(id__in=set(id_list))
+ return model_klass.objects.filter(id__in=set(id_list))
+
+except:
+ pass