diff options
author | Adolfo Fitoria <adolfo.fitoria@gmail.com> | 2012-06-21 15:45:21 -0600 |
---|---|---|
committer | Adolfo Fitoria <adolfo.fitoria@gmail.com> | 2012-06-21 15:45:21 -0600 |
commit | f1eda1494b753b052c82811419aff8380520ec85 (patch) | |
tree | e2f9abb90036563f384efd329392a8788bf637bb /askbot/search | |
parent | 3c9079c6255dbc83bd205e5f0147d330ee0f97e0 (diff) | |
download | askbot-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__.py | 83 |
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 |