Update index and settings
This commit is contained in:
parent
2d1eb62964
commit
a02a3d1c3c
4 changed files with 68 additions and 4 deletions
|
@ -89,7 +89,10 @@ HELPER_SETTINGS = dict(
|
||||||
'easy_thumbnails.processors.filters',
|
'easy_thumbnails.processors.filters',
|
||||||
),
|
),
|
||||||
FILE_UPLOAD_TEMP_DIR=mkdtemp(),
|
FILE_UPLOAD_TEMP_DIR=mkdtemp(),
|
||||||
SITE_ID=1
|
SITE_ID=1,
|
||||||
|
HAYSTACK_CONNECTIONS = {
|
||||||
|
"default": {}
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -4,6 +4,8 @@ from django.utils.encoding import force_text
|
||||||
from aldryn_search.helpers import get_plugin_index_data
|
from aldryn_search.helpers import get_plugin_index_data
|
||||||
from aldryn_search.utils import get_index_base, strip_tags
|
from aldryn_search.utils import get_index_base, strip_tags
|
||||||
|
|
||||||
|
from haystack import indexes
|
||||||
|
|
||||||
from .models import Post
|
from .models import Post
|
||||||
from .settings import get_setting
|
from .settings import get_setting
|
||||||
|
|
||||||
|
@ -13,11 +15,21 @@ class PostIndex(get_index_base()):
|
||||||
|
|
||||||
index_title = True
|
index_title = True
|
||||||
|
|
||||||
|
author = indexes.CharField(indexed=True)
|
||||||
|
#category_ids = indexes.MultiValueField(null=True)
|
||||||
|
#category_titles = indexes.MultiValueField(null=True)
|
||||||
|
|
||||||
|
def get_author(self, post):
|
||||||
|
return post.get_author()
|
||||||
|
|
||||||
def get_title(self, post):
|
def get_title(self, post):
|
||||||
return post.safe_translation_getter('title')
|
return post.safe_translation_getter('title')
|
||||||
|
|
||||||
def get_description(self, post):
|
def get_description(self, post):
|
||||||
return post.safe_translation_getter('abstract')
|
return post.get_description()
|
||||||
|
|
||||||
|
def prepare_pub_date(self, post):
|
||||||
|
return post.date_published.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
|
||||||
def index_queryset(self, using=None):
|
def index_queryset(self, using=None):
|
||||||
self._get_backend(using)
|
self._get_backend(using)
|
||||||
|
@ -36,8 +48,10 @@ class PostIndex(get_index_base()):
|
||||||
return Post
|
return Post
|
||||||
|
|
||||||
def get_search_data(self, post, language, request):
|
def get_search_data(self, post, language, request):
|
||||||
description = post.safe_translation_getter('abstract')
|
abstract = post.safe_translation_getter('abstract')
|
||||||
text_bits = [strip_tags(description)]
|
text_bits = [strip_tags(abstract)]
|
||||||
|
text_bits.append(post.get_description())
|
||||||
|
text_bits.append(get_keywords)
|
||||||
for category in post.categories.all():
|
for category in post.categories.all():
|
||||||
text_bits.append(
|
text_bits.append(
|
||||||
force_text(category.safe_translation_getter('name')))
|
force_text(category.safe_translation_getter('name')))
|
||||||
|
|
|
@ -7,6 +7,8 @@ from cmsplugin_filer_image.models import ThumbnailOption
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.sites.models import Site
|
from django.contrib.sites.models import Site
|
||||||
from djangocms_helper.base_test import BaseTestCase
|
from djangocms_helper.base_test import BaseTestCase
|
||||||
|
from haystack import connections
|
||||||
|
from haystack.constants import DEFAULT_ALIAS
|
||||||
from parler.utils.context import smart_override
|
from parler.utils.context import smart_override
|
||||||
|
|
||||||
from djangocms_blog.cms_appconfig import BlogConfig
|
from djangocms_blog.cms_appconfig import BlogConfig
|
||||||
|
@ -183,3 +185,9 @@ class BaseTest(BaseTestCase):
|
||||||
post1.save()
|
post1.save()
|
||||||
posts.append(post1)
|
posts.append(post1)
|
||||||
return posts
|
return posts
|
||||||
|
|
||||||
|
def get_post_index(self):
|
||||||
|
search_conn = connections[DEFAULT_ALIAS]
|
||||||
|
unified_index = search_conn.get_unified_index()
|
||||||
|
index = unified_index.get_index(Post)
|
||||||
|
return index
|
||||||
|
|
39
tests/test_search.py
Normal file
39
tests/test_search.py
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import absolute_import, print_function, unicode_literals
|
||||||
|
|
||||||
|
from djangocms_blog.search_indexes import PostIndex
|
||||||
|
from . import BaseTest
|
||||||
|
|
||||||
|
from haystack.constants import DEFAULT_ALIAS
|
||||||
|
|
||||||
|
|
||||||
|
class PluginIndexingTests(BaseTest):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.index = PostIndex()
|
||||||
|
|
||||||
|
def test_blog_post_is_indexed_using_prepare(self):
|
||||||
|
"""This tests the indexing path way used by update_index mgmt command"""
|
||||||
|
post = self._get_post(self._post_data[0]['en'])
|
||||||
|
post = self._get_post(self._post_data[0]['it'], post, 'it')
|
||||||
|
index = self.get_post_index()
|
||||||
|
index.index_queryset(DEFAULT_ALIAS) # initialises index._backend_alias
|
||||||
|
indexed = index.prepare(post)
|
||||||
|
print(indexed)
|
||||||
|
self.assertEqual('First post', indexed['title'])
|
||||||
|
self.assertEqual('This is the description', indexed['description'])
|
||||||
|
self.assertEqual('First post first line This is the description category 1', indexed['text'])
|
||||||
|
self.assertEqual('/en/page-two/2015/10/15/first-post/', indexed['url'])
|
||||||
|
|
||||||
|
def test_blog_post_is_indexed_using_update_object(self):
|
||||||
|
"""This tests the indexing path way used by the RealTimeSignalProcessor"""
|
||||||
|
post = self._get_post(self._post_data[0]['en'])
|
||||||
|
post = self._get_post(self._post_data[0]['it'], post, 'it')
|
||||||
|
index = self.get_post_index()
|
||||||
|
index.update_object(post, using=DEFAULT_ALIAS)
|
||||||
|
indexed = index.prepared_data
|
||||||
|
self.assertEqual('First post', indexed['title'])
|
||||||
|
self.assertEqual('This is the description', indexed['description'])
|
||||||
|
self.assertEqual('First post first line This is the description category 1', indexed['text'])
|
||||||
|
self.assertEqual('/en/page-two/2015/10/15/first-post/', indexed['url'])
|
||||||
|
|
Loading…
Reference in a new issue