diff options
-rw-r--r-- | askbot/models/__init__.py | 3 | ||||
-rw-r--r-- | askbot/search/haystack/__init__.py | 31 | ||||
-rw-r--r-- | askbot/search_indexes.py | 4 | ||||
-rw-r--r-- | askbot/startup_procedures.py | 6 |
4 files changed, 23 insertions, 21 deletions
diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py index 7f27e130..325f06d6 100644 --- a/askbot/models/__init__.py +++ b/askbot/models/__init__.py @@ -70,9 +70,6 @@ from askbot import mail from django import VERSION -if django_settings.ENABLE_HAYSTACK_SEARCH: - from askbot.search import haystack as askbot_haystack - #stores the 1.X version not the security release numbers DJANGO_VERSION = VERSION[:2] diff --git a/askbot/search/haystack/__init__.py b/askbot/search/haystack/__init__.py index 1852d30c..e4563fa2 100644 --- a/askbot/search/haystack/__init__.py +++ b/askbot/search/haystack/__init__.py @@ -1,40 +1,45 @@ from django.conf import settings from django.utils.translation import get_language -from haystack import indexes, site +from haystack import indexes from haystack.query import SearchQuerySet from askbot.models import Post, Thread, User -class ThreadIndex(indexes.SearchIndex): +class ThreadIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) title = indexes.CharField() tags = indexes.MultiValueField() - def index_queryset(self): - return Thread.objects.filter(posts__deleted=False) + def get_model(self): + return Thread + + def index_queryset(self, using=None): + return self.get_model().objects.filter(posts__deleted=False) def prepare_tags(self, obj): return [tag.name for tag in obj.tags.all()] -class PostIndex(indexes.SearchIndex): +class PostIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) post_text = indexes.CharField(model_attr='text') author = indexes.CharField() thread_id = indexes.IntegerField(model_attr='thread__pk') - def index_queryset(self): - return Post.objects.filter(deleted=False) + def get_model(self): + return Post + + def index_queryset(self, using=None): + return self.get_model().objects.filter(deleted=False) -class UserIndex(indexes.SearchIndex): +class UserIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) - def index_queryset(self): - return User.objects.all() + def get_model(self): + return User -site.register(Thread, ThreadIndex) -site.register(Post, PostIndex) -site.register(User, UserIndex) + def index_queryset(self, using=None): + return self.get_model().objects.all() class AskbotSearchQuerySet(SearchQuerySet): diff --git a/askbot/search_indexes.py b/askbot/search_indexes.py new file mode 100644 index 00000000..a5b9c253 --- /dev/null +++ b/askbot/search_indexes.py @@ -0,0 +1,4 @@ +from django.conf import settings + +if getattr(settings, 'ENABLE_HAYSTACK_SEARCH'): + from askbot.search.haystack import * diff --git a/askbot/startup_procedures.py b/askbot/startup_procedures.py index a9c58cb5..8f4ea2ac 100644 --- a/askbot/startup_procedures.py +++ b/askbot/startup_procedures.py @@ -925,7 +925,7 @@ def run_startup_tests(): test_compressor() test_custom_user_profile_tab() test_group_messaging() - test_haystack() + #test_haystack() test_jinja2() test_longerusername() test_new_skins() @@ -971,10 +971,6 @@ def run_startup_tests(): 'value': True, 'message': 'Please add: RECAPTCHA_USE_SSL = True' }, - 'HAYSTACK_SITECONF': { - 'value': 'askbot.search.haystack', - 'message': 'Please add: HAYSTACK_SITECONF = "askbot.search.haystack"' - } }) settings_tester.run() if 'manage.py test' in ' '.join(sys.argv): |