summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdolfo Fitoria <adolfo.fitoria@gmail.com>2013-05-23 19:01:54 -0600
committerAdolfo Fitoria <adolfo.fitoria@gmail.com>2013-05-23 19:01:54 -0600
commit758a5f81665b8df622355dfa23a74d03aebd707c (patch)
tree84ed68374003132ecc97aa1e3ab65a2d5540e03f
parente8cd15bd48920705e3b5e71fdccbfa55176ce76d (diff)
downloadaskbot-758a5f81665b8df622355dfa23a74d03aebd707c.tar.gz
askbot-758a5f81665b8df622355dfa23a74d03aebd707c.tar.bz2
askbot-758a5f81665b8df622355dfa23a74d03aebd707c.zip
added askbot_rebuild_index command, need more testing and debuggin
-rw-r--r--askbot/management/commands/askbot_rebuild_index.py26
-rw-r--r--askbot/search/haystack/__init__.py21
-rw-r--r--askbot/search/haystack/routers.py7
3 files changed, 43 insertions, 11 deletions
diff --git a/askbot/management/commands/askbot_rebuild_index.py b/askbot/management/commands/askbot_rebuild_index.py
new file mode 100644
index 00000000..204f3b56
--- /dev/null
+++ b/askbot/management/commands/askbot_rebuild_index.py
@@ -0,0 +1,26 @@
+from optparse import make_option
+
+from django.core.management import call_command
+from django.utils.translation import activate as activate_language
+from django.core.management.base import BaseCommand
+from django.conf import settings
+
+try:
+ from haystack.management.commands.clear_index import Command as ClearCommand
+ from haystack.management.commands.update_index import Command as UpdateCommand
+ haystack_option_list = [option for option in UpdateCommand.base_options if option.get_opt_string() != '--verbosity'] + \
+ [option for option in ClearCommand.base_options if not option.get_opt_string() in ['--using', '--verbosity']]
+except ImportError:
+ haystack_option_list = []
+
+class Command(BaseCommand):
+ help = "Completely rebuilds the search index by removing the old data and then updating."
+ base_options = [make_option("-l", "--language", action="store", type="string", dest="language",
+ help='Language to user, in language code format'),]
+ option_list = list(BaseCommand.option_list) + haystack_option_list + base_options
+
+ def handle(self, **options):
+ lang_code = options.get('language', settings.LANGUAGE_CODE.lower())
+ activate_language(lang_code)
+ options['using'] = ['default_%s' % lang_code[:2],]
+ call_command('rebuild_index', **options)
diff --git a/askbot/search/haystack/__init__.py b/askbot/search/haystack/__init__.py
index aab0966c..f2905233 100644
--- a/askbot/search/haystack/__init__.py
+++ b/askbot/search/haystack/__init__.py
@@ -15,7 +15,12 @@ class ThreadIndex(indexes.SearchIndex, indexes.Indexable):
return Thread
def index_queryset(self, using=None):
- return self.get_model().objects.filter(posts__deleted=False)
+ if getattr(settings, 'ASKBOT_MULTILINGUAL', True):
+ lang_code = get_language()[:2]
+ return self.get_model().objects.filter(language_code=lang_code,
+ posts__deleted=False)
+ else:
+ return self.get_model().objects.filter(posts__deleted=False)
def prepare_tags(self, obj):
return [tag.name for tag in obj.tags.all()]
@@ -30,7 +35,12 @@ class PostIndex(indexes.SearchIndex, indexes.Indexable):
return Post
def index_queryset(self, using=None):
- return self.get_model().objects.filter(deleted=False)
+ if getattr(settings, 'ASKBOT_MULTILINGUAL', True):
+ lang_code = get_language()[:2]
+ return self.get_model().objects.filter(language_code=lang_code,
+ deleted=False)
+ else:
+ return self.get_model().objects.filter(deleted=False)
class UserIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
@@ -90,9 +100,4 @@ class AskbotSearchQuerySet(SearchQuerySet):
if model_klass == User:
return model_klass.objects.filter(id__in=set(id_list))
else:
- if getattr(settings, 'ASKBOT_MULTILINGUAL', True):
- language_code = get_language()
- return model_klass.objects.filter(id__in=set(id_list),
- language_code=language_code)
- else:
- return model_klass.objects.filter(id__in=set(id_list))
+ return model_klass.objects.filter(id__in=set(id_list))
diff --git a/askbot/search/haystack/routers.py b/askbot/search/haystack/routers.py
index f015d954..7b7e0a4b 100644
--- a/askbot/search/haystack/routers.py
+++ b/askbot/search/haystack/routers.py
@@ -1,5 +1,4 @@
from django.utils.translation import get_language
-from django.conf import settings
from haystack.routers import BaseRouter
from haystack.constants import DEFAULT_ALIAS
@@ -7,13 +6,15 @@ from haystack.constants import DEFAULT_ALIAS
class LanguageRouter(BaseRouter):
def for_read(self, **hints):
+ from django.conf import settings
if getattr(settings, 'ASKBOT_MULTILINGUAL'):
- return 'default_' + get_language()
+ return 'default_' + get_language()[:2]
else:
return DEFAULT_ALIAS
def for_write(self, **hints):
+ from django.conf import settings
if getattr(settings, 'ASKBOT_MULTILINGUAL'):
- return 'default_' + get_language()
+ return 'default_' + get_language()[:2]
else:
return DEFAULT_ALIAS