search: index links from "list of links" cells (#59025)
This commit is contained in:
parent
52a05d380b
commit
ee5a7f91e0
|
@ -1557,7 +1557,6 @@ class LinkListCell(CellBase):
|
|||
default_template_name = 'combo/link-list-cell.html'
|
||||
manager_form_template = 'combo/manager/link-list-cell-form.html'
|
||||
children_placeholder_prefix = '_linkslist:'
|
||||
exclude_from_search = True
|
||||
|
||||
invalid_reason_codes = {
|
||||
'data_link_invalid': _('Invalid link'),
|
||||
|
@ -1649,6 +1648,13 @@ class LinkListCell(CellBase):
|
|||
return
|
||||
self.mark_as_valid()
|
||||
|
||||
def render_for_search(self):
|
||||
return ''
|
||||
|
||||
def get_external_links_data(self):
|
||||
for link in self.get_items():
|
||||
yield from link.get_external_links_data()
|
||||
|
||||
|
||||
@register_cell_class
|
||||
class FeedCell(CellBase):
|
||||
|
|
|
@ -20,7 +20,7 @@ from requests.models import Response
|
|||
from combo.apps.search.engines import engines
|
||||
from combo.apps.search.models import IndexedCell, SearchCell
|
||||
from combo.apps.search.utils import index_site, search_site
|
||||
from combo.data.models import JsonCell, LinkCell, MenuCell, Page, PageSnapshot, TextCell
|
||||
from combo.data.models import JsonCell, LinkCell, LinkListCell, MenuCell, Page, PageSnapshot, TextCell
|
||||
|
||||
from .test_manager import login
|
||||
|
||||
|
@ -535,6 +535,46 @@ def test_search_external_links(app):
|
|||
assert len(hits) == 1
|
||||
|
||||
|
||||
def test_search_external_links_in_list_of_links(app):
|
||||
page = Page(title='example page', slug='example-page')
|
||||
page.save()
|
||||
|
||||
cell = SearchCell(page=page, placeholder='content', _search_services={'data': ['_text']}, order=0)
|
||||
cell.save()
|
||||
|
||||
index_site()
|
||||
request = RequestFactory().get('/')
|
||||
request.user = AnonymousUser()
|
||||
hits = search_site(request, 'foobar')
|
||||
assert len(hits) == 0
|
||||
|
||||
cell = LinkListCell.objects.create(order=0, page=page, placeholder='content')
|
||||
LinkCell.objects.create(
|
||||
page=page,
|
||||
placeholder=cell.link_placeholder,
|
||||
title='foobar example',
|
||||
url='http://example.net',
|
||||
order=0,
|
||||
)
|
||||
LinkCell.objects.create(
|
||||
page=page,
|
||||
placeholder=cell.link_placeholder,
|
||||
title='Example 2 Site',
|
||||
url='http://example.org/',
|
||||
order=1,
|
||||
)
|
||||
|
||||
index_site()
|
||||
|
||||
hits = search_site(request, 'foobar')
|
||||
assert len(hits) == 1
|
||||
assert hits[0]['text'] == 'foobar example'
|
||||
assert hits[0]['url'] == 'http://example.net'
|
||||
|
||||
hits = search_site(request, 'example')
|
||||
assert len(hits) == 2
|
||||
|
||||
|
||||
def test_manager_search_cell(settings, app, admin_user):
|
||||
page = Page.objects.create(title='One', slug='one', template_name='standard')
|
||||
cell = SearchCell.objects.create(page=page, placeholder='content', order=0)
|
||||
|
@ -1370,7 +1410,7 @@ def test_index_site_num_queries(settings, app):
|
|||
assert IndexedCell.objects.count() == 50
|
||||
with CaptureQueriesContext(connection) as ctx:
|
||||
index_site()
|
||||
assert len(ctx.captured_queries) == 222
|
||||
assert len(ctx.captured_queries) == 223
|
||||
|
||||
SearchCell.objects.create(
|
||||
page=page, placeholder='content', order=0, _search_services={'data': ['search1']}
|
||||
|
|
Loading…
Reference in New Issue