diff --git a/HISTORY.rst b/HISTORY.rst index 52f019c..4325564 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -17,6 +17,12 @@ History * Enabled cached version of BlogLatestEntriesPlugin. * Added plugins templateset +****************** +0.8.6 (unreleased) +****************** + +* Set the correct language during indexing + ****************** 0.8.5 (2016-06-26) ****************** diff --git a/djangocms_blog/search_indexes.py b/djangocms_blog/search_indexes.py index 2e9c8d0..33ea1b2 100644 --- a/djangocms_blog/search_indexes.py +++ b/djangocms_blog/search_indexes.py @@ -3,6 +3,7 @@ from aldryn_search.helpers import get_plugin_index_data from aldryn_search.utils import get_index_base, strip_tags from django.utils.encoding import force_text from haystack import indexes +from parler.utils.context import switch_language from .models import Post from .settings import get_setting @@ -44,36 +45,37 @@ class PostIndex(get_index_base()): return Post def get_search_data(self, post, language, request): - description = post.get_description() - abstract = strip_tags(post.safe_translation_getter('abstract', default='')) - keywords = post.get_keywords() + with switch_language(post, language): + description = post.get_description() + abstract = strip_tags(post.safe_translation_getter('abstract', default='')) + keywords = post.get_keywords() - text_bits = [] - if abstract: - text_bits.append(abstract) - if description: - text_bits.append(description) - if keywords: - text_bits.append(' '.join(keywords)) - self.prepared_data['keywords'] = ','.join(keywords) - for category in post.categories.all(): - text_bits.append( - force_text(category.safe_translation_getter('name'))) - for tag in post.tags.all(): - text_bits.append(force_text(tag.name)) + text_bits = [] + if abstract: + text_bits.append(abstract) + if description: + text_bits.append(description) + if keywords: + text_bits.append(' '.join(keywords)) + self.prepared_data['keywords'] = ','.join(keywords) + for category in post.categories.all(): + text_bits.append( + force_text(category.safe_translation_getter('name'))) + for tag in post.tags.all(): + text_bits.append(force_text(tag.name)) - if get_setting('USE_PLACEHOLDER'): - plugins = post.content.cmsplugin_set.filter(language=language) - content_bits = [] - for base_plugin in plugins: - content = get_plugin_index_data(base_plugin, request) - content_bits.append(' '.join(content)) - post_text = ' '.join(content_bits) - else: - post_text = post.safe_translation_getter('post_text') - if post_text: - post_text = strip_tags(post_text) - self.prepared_data['post_text'] = post_text - text_bits.append(post_text) + if get_setting('USE_PLACEHOLDER'): + plugins = post.content.cmsplugin_set.filter(language=language) + content_bits = [] + for base_plugin in plugins: + content = get_plugin_index_data(base_plugin, request) + content_bits.append(' '.join(content)) + post_text = ' '.join(content_bits) + else: + post_text = post.safe_translation_getter('post_text') + if post_text: + post_text = strip_tags(post_text) + self.prepared_data['post_text'] = post_text + text_bits.append(post_text) - return ' '.join(text_bits) + return ' '.join(text_bits) diff --git a/tox.ini b/tox.ini index e1f679f..97b7d96 100644 --- a/tox.ini +++ b/tox.ini @@ -8,6 +8,7 @@ deps = django18: django-mptt>=0.8 django18: django-filer<1.3 django18: cmsplugin-filer<1.2 + django18: django-haystack django19: Django>=1.9,<1.10 django19: django-mptt>=0.8 django19: django-filer<1.3