kopia lustrzana https://github.com/wagtail/wagtail
				
				
				
			Renamed wagtail.wagtailsearch to wagtail.search
Conflicts: docs/advanced_topics/settings.rst docs/getting_started/integrating_into_django.rst docs/getting_started/tutorial.rst docs/topics/pages.rst docs/topics/search/searching.rst tox.ini wagtail/admin/tests/test_pages_views.py wagtail/admin/views/mixins.py wagtail/api/v2/filters.py wagtail/contrib/wagtailsearchpromotions/forms.py wagtail/contrib/wagtailsearchpromotions/views.py wagtail/documents/models.py wagtail/documents/views/chooser.py wagtail/documents/views/documents.py wagtail/documents/views/multiple.py wagtail/images/migrations/0001_initial.py wagtail/images/models.py wagtail/images/views/chooser.py wagtail/images/views/images.py wagtail/images/views/multiple.py wagtail/project_template/project_name/settings/base.py wagtail/project_template/search/views.py wagtail/search/tests/test_frontend.py wagtail/search/tests/test_index_functions.py wagtail/search/views/frontend.py wagtail/search/views/queries.py wagtail/search/wagtail_hooks.py wagtail/tests/demosite/models.py wagtail/tests/modeladmintest/models.py wagtail/tests/non_root_urls.py wagtail/tests/settings.py wagtail/tests/snippets/models.py wagtail/tests/testapp/migrations/0001_initial.py wagtail/tests/testapp/migrations/0020_customdocument.py wagtail/tests/testapp/models.py wagtail/tests/urls.py wagtail/wagtailsnippets/views/chooser.py wagtail/wagtailsnippets/views/snippets.pypull/4068/head
							rodzic
							
								
									bf0f3e02ba
								
							
						
					
					
						commit
						19730bea53
					
				| 
						 | 
				
			
			@ -38,8 +38,8 @@ source_lang = en
 | 
			
		|||
type = PO
 | 
			
		||||
 | 
			
		||||
[wagtail.wagtailsearch]
 | 
			
		||||
file_filter = wagtail/wagtailsearch/locale/<lang>/LC_MESSAGES/django.po
 | 
			
		||||
source_file = wagtail/wagtailsearch/locale/en/LC_MESSAGES/django.po
 | 
			
		||||
file_filter = wagtail/search/locale/<lang>/LC_MESSAGES/django.po
 | 
			
		||||
source_file = wagtail/search/locale/en/LC_MESSAGES/django.po
 | 
			
		||||
source_lang = en
 | 
			
		||||
type = PO
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,7 +68,7 @@ Apps (``settings.py``)
 | 
			
		|||
    'wagtail.wagtailsnippets',
 | 
			
		||||
    'wagtail.documents',
 | 
			
		||||
    'wagtail.images',
 | 
			
		||||
    'wagtail.wagtailsearch',
 | 
			
		||||
    'wagtail.search',
 | 
			
		||||
    'wagtail.admin',
 | 
			
		||||
    'wagtail.core',
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -179,7 +179,7 @@ Search
 | 
			
		|||
 | 
			
		||||
  WAGTAILSEARCH_BACKENDS = {
 | 
			
		||||
      'default': {
 | 
			
		||||
          'BACKEND': 'wagtail.wagtailsearch.backends.elasticsearch2',
 | 
			
		||||
          'BACKEND': 'wagtail.search.backends.elasticsearch2',
 | 
			
		||||
          'INDEX': 'myapp'
 | 
			
		||||
      }
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			@ -450,7 +450,7 @@ URL Patterns
 | 
			
		|||
  from wagtail.core import urls as wagtail_urls
 | 
			
		||||
  from wagtail.admin import urls as wagtailadmin_urls
 | 
			
		||||
  from wagtail.documents import urls as wagtaildocs_urls
 | 
			
		||||
  from wagtail.wagtailsearch import urls as wagtailsearch_urls
 | 
			
		||||
  from wagtail.search import urls as wagtailsearch_urls
 | 
			
		||||
 | 
			
		||||
  urlpatterns = [
 | 
			
		||||
      url(r'^django-admin/', include(admin.site.urls)),
 | 
			
		||||
| 
						 | 
				
			
			@ -510,7 +510,7 @@ These two files should reside in your project directory (``myproject/myproject/`
 | 
			
		|||
      'wagtail.wagtailsnippets',
 | 
			
		||||
      'wagtail.documents',
 | 
			
		||||
      'wagtail.images',
 | 
			
		||||
      'wagtail.wagtailsearch',
 | 
			
		||||
      'wagtail.search',
 | 
			
		||||
      'wagtail.admin',
 | 
			
		||||
      'wagtail.core',
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -663,7 +663,7 @@ These two files should reside in your project directory (``myproject/myproject/`
 | 
			
		|||
  # Replace the search backend
 | 
			
		||||
  #WAGTAILSEARCH_BACKENDS = {
 | 
			
		||||
  #  'default': {
 | 
			
		||||
  #    'BACKEND': 'wagtail.wagtailsearch.backends.elasticsearch2',
 | 
			
		||||
  #    'BACKEND': 'wagtail.search.backends.elasticsearch2',
 | 
			
		||||
  #    'INDEX': 'myapp'
 | 
			
		||||
  #  }
 | 
			
		||||
  #}
 | 
			
		||||
| 
						 | 
				
			
			@ -693,7 +693,7 @@ These two files should reside in your project directory (``myproject/myproject/`
 | 
			
		|||
  from wagtail.core import urls as wagtail_urls
 | 
			
		||||
  from wagtail.admin import urls as wagtailadmin_urls
 | 
			
		||||
  from wagtail.documents import urls as wagtaildocs_urls
 | 
			
		||||
  from wagtail.wagtailsearch import urls as wagtailsearch_urls
 | 
			
		||||
  from wagtail.search import urls as wagtailsearch_urls
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  urlpatterns = [
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,7 @@ In your settings file, add the following apps to ``INSTALLED_APPS``:
 | 
			
		|||
    'wagtail.wagtailsnippets',
 | 
			
		||||
    'wagtail.documents',
 | 
			
		||||
    'wagtail.images',
 | 
			
		||||
    'wagtail.wagtailsearch',
 | 
			
		||||
    'wagtail.search',
 | 
			
		||||
    'wagtail.admin',
 | 
			
		||||
    'wagtail.core',
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -221,7 +221,7 @@ Now we need a model and template for our blog posts. In ``blog/models.py``:
 | 
			
		|||
    from wagtail.core.models import Page
 | 
			
		||||
    from wagtail.core.fields import RichTextField
 | 
			
		||||
    from wagtail.admin.edit_handlers import FieldPanel
 | 
			
		||||
    from wagtail.wagtailsearch import index
 | 
			
		||||
    from wagtail.search import index
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    # Keep the definition of BlogIndexPage, and add:
 | 
			
		||||
| 
						 | 
				
			
			@ -413,7 +413,7 @@ Add a new ``BlogPageGalleryImage`` model to ``models.py``:
 | 
			
		|||
    from wagtail.core.fields import RichTextField
 | 
			
		||||
    from wagtail.admin.edit_handlers import FieldPanel, InlinePanel
 | 
			
		||||
    from wagtail.images.edit_handlers import ImageChooserPanel
 | 
			
		||||
    from wagtail.wagtailsearch import index
 | 
			
		||||
    from wagtail.search import index
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    # ... (Keep the definition of BlogIndexPage, and update BlogPage:)
 | 
			
		||||
| 
						 | 
				
			
			@ -576,7 +576,7 @@ First, alter ``models.py`` once more:
 | 
			
		|||
    from wagtail.core.fields import RichTextField
 | 
			
		||||
    from wagtail.admin.edit_handlers import FieldPanel, InlinePanel, MultiFieldPanel
 | 
			
		||||
    from wagtail.images.edit_handlers import ImageChooserPanel
 | 
			
		||||
    from wagtail.wagtailsearch import index
 | 
			
		||||
    from wagtail.search import index
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    # ... (Keep the definition of BlogIndexPage)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@ Promoted search results
 | 
			
		|||
 | 
			
		||||
.. versionchanged:: 1.1
 | 
			
		||||
 | 
			
		||||
    Before Wagtail 1.1, promoted search results were implemented in the :mod:`wagtail.wagtailsearch` core module and called "editors picks".
 | 
			
		||||
    Before Wagtail 1.1, promoted search results were implemented in the :mod:`wagtail.search` core module and called "editors picks".
 | 
			
		||||
 | 
			
		||||
The ``searchpromotions`` module provides the models and user interface for managing "Promoted search results" and displaying them in a search results page.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,7 +30,7 @@ This example represents a typical blog post:
 | 
			
		|||
    from wagtail.core.fields import RichTextField
 | 
			
		||||
    from wagtail.admin.edit_handlers import FieldPanel, MultiFieldPanel, InlinePanel
 | 
			
		||||
    from wagtail.images.edit_handlers import ImageChooserPanel
 | 
			
		||||
    from wagtail.wagtailsearch import index
 | 
			
		||||
    from wagtail.search import index
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    class BlogPage(Page):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,7 @@ You can configure which backend to use with the ``WAGTAILSEARCH_BACKENDS`` setti
 | 
			
		|||
 | 
			
		||||
  WAGTAILSEARCH_BACKENDS = {
 | 
			
		||||
      'default': {
 | 
			
		||||
          'BACKEND': 'wagtail.wagtailsearch.backends.db',
 | 
			
		||||
          'BACKEND': 'wagtail.search.backends.db',
 | 
			
		||||
      }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +61,7 @@ Here's a list of backends that Wagtail supports out of the box.
 | 
			
		|||
Database Backend (default)
 | 
			
		||||
--------------------------
 | 
			
		||||
 | 
			
		||||
``wagtail.wagtailsearch.backends.db``
 | 
			
		||||
``wagtail.search.backends.db``
 | 
			
		||||
 | 
			
		||||
The database backend is very basic and is intended only to be used in development and on small sites. It cannot order results by relevance, severely hampering its usefulness when searching a large collection of pages.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -99,9 +99,9 @@ Elasticsearch Backend
 | 
			
		|||
 | 
			
		||||
Elasticsearch versions 2 and 5 are supported. Use the appropriate backend for your version:
 | 
			
		||||
 | 
			
		||||
``wagtail.wagtailsearch.backends.elasticsearch2`` (Elasticsearch 2.x)
 | 
			
		||||
``wagtail.search.backends.elasticsearch2`` (Elasticsearch 2.x)
 | 
			
		||||
 | 
			
		||||
``wagtail.wagtailsearch.backends.elasticsearch5`` (Elasticsearch 5.x)
 | 
			
		||||
``wagtail.search.backends.elasticsearch5`` (Elasticsearch 5.x)
 | 
			
		||||
 | 
			
		||||
Prerequisites are the `Elasticsearch`_ service itself and, via pip, the `elasticsearch-py`_ package. The major version of the package must match the installed version of Elasticsearch:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -121,7 +121,7 @@ The backend is configured in settings:
 | 
			
		|||
 | 
			
		||||
  WAGTAILSEARCH_BACKENDS = {
 | 
			
		||||
      'default': {
 | 
			
		||||
          'BACKEND': 'wagtail.wagtailsearch.backends.elasticsearch2',
 | 
			
		||||
          'BACKEND': 'wagtail.search.backends.elasticsearch2',
 | 
			
		||||
          'URLS': ['http://localhost:9200'],
 | 
			
		||||
          'INDEX': 'wagtail',
 | 
			
		||||
          'TIMEOUT': 5,
 | 
			
		||||
| 
						 | 
				
			
			@ -177,7 +177,7 @@ The Elasticsearch backend is compatible with `Amazon Elasticsearch Service`_, bu
 | 
			
		|||
 | 
			
		||||
  WAGTAILSEARCH_BACKENDS = {
 | 
			
		||||
      'default': {
 | 
			
		||||
          'BACKEND': 'wagtail.wagtailsearch.backends.elasticsearch2',
 | 
			
		||||
          'BACKEND': 'wagtail.search.backends.elasticsearch2',
 | 
			
		||||
          'INDEX': 'wagtail',
 | 
			
		||||
          'TIMEOUT': 5,
 | 
			
		||||
          'HOSTS': [{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,7 @@ Signal handlers
 | 
			
		|||
 | 
			
		||||
    Signal handlers are now automatically registered
 | 
			
		||||
 | 
			
		||||
``wagtailsearch`` provides some signal handlers which bind to the save/delete signals of all indexed models. This would automatically add and delete them from all backends you have registered in ``WAGTAILSEARCH_BACKENDS``. These signal handlers are automatically registered when the ``wagtail.wagtailsearch`` app is loaded.
 | 
			
		||||
``wagtailsearch`` provides some signal handlers which bind to the save/delete signals of all indexed models. This would automatically add and delete them from all backends you have registered in ``WAGTAILSEARCH_BACKENDS``. These signal handlers are automatically registered when the ``wagtail.search`` app is loaded.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
The ``update_index`` command
 | 
			
		||||
| 
						 | 
				
			
			@ -67,7 +67,7 @@ This creates an ``EventPage`` model with two fields: ``description`` and ``date`
 | 
			
		|||
 | 
			
		||||
.. code-block:: python
 | 
			
		||||
 | 
			
		||||
    from wagtail.wagtailsearch import index
 | 
			
		||||
    from wagtail.search import index
 | 
			
		||||
    from django.utils import timezone
 | 
			
		||||
 | 
			
		||||
    class EventPage(Page):
 | 
			
		||||
| 
						 | 
				
			
			@ -170,7 +170,7 @@ One use for this is indexing the ``get_*_display`` methods Django creates automa
 | 
			
		|||
 | 
			
		||||
.. code-block:: python
 | 
			
		||||
 | 
			
		||||
    from wagtail.wagtailsearch import index
 | 
			
		||||
    from wagtail.search import index
 | 
			
		||||
 | 
			
		||||
    class EventPage(Page):
 | 
			
		||||
        IS_PRIVATE_CHOICES = (
 | 
			
		||||
| 
						 | 
				
			
			@ -214,7 +214,7 @@ To do this, inherit from ``index.Indexed`` and add some ``search_fields`` to the
 | 
			
		|||
 | 
			
		||||
.. code-block:: python
 | 
			
		||||
 | 
			
		||||
    from wagtail.wagtailsearch import index
 | 
			
		||||
    from wagtail.search import index
 | 
			
		||||
 | 
			
		||||
    class Book(index.Indexed, models.Model):
 | 
			
		||||
        title = models.CharField(max_length=255)
 | 
			
		||||
| 
						 | 
				
			
			@ -232,7 +232,7 @@ To do this, inherit from ``index.Indexed`` and add some ``search_fields`` to the
 | 
			
		|||
        ]
 | 
			
		||||
 | 
			
		||||
    # As this model doesn't have a search method in its QuerySet, we have to call search directly on the backend
 | 
			
		||||
    >>> from wagtail.wagtailsearch.backends import get_search_backend
 | 
			
		||||
    >>> from wagtail.search.backends import get_search_backend
 | 
			
		||||
    >>> s = get_search_backend()
 | 
			
		||||
 | 
			
		||||
    # Run a search for a book by Roald Dahl
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,7 +61,7 @@ Wagtail's document and image models provide a ``search`` method on their QuerySe
 | 
			
		|||
.. code-block:: python
 | 
			
		||||
 | 
			
		||||
    >>> from myapp.models import Book
 | 
			
		||||
    >>> from wagtail.wagtailsearch.backends import get_search_backend
 | 
			
		||||
    >>> from wagtail.search.backends import get_search_backend
 | 
			
		||||
 | 
			
		||||
    # Search books
 | 
			
		||||
    >>> s = get_search_backend()
 | 
			
		||||
| 
						 | 
				
			
			@ -74,7 +74,7 @@ You can also pass a QuerySet into the ``search`` method which allows you to add
 | 
			
		|||
.. code-block:: python
 | 
			
		||||
 | 
			
		||||
    >>> from myapp.models import Book
 | 
			
		||||
    >>> from wagtail.wagtailsearch.backends import get_search_backend
 | 
			
		||||
    >>> from wagtail.search.backends import get_search_backend
 | 
			
		||||
 | 
			
		||||
    # Search books
 | 
			
		||||
    >>> s = get_search_backend()
 | 
			
		||||
| 
						 | 
				
			
			@ -207,7 +207,7 @@ Here's an example Django view that could be used to add a "search" page to your
 | 
			
		|||
    from django.shortcuts import render
 | 
			
		||||
 | 
			
		||||
    from wagtail.core.models import Page
 | 
			
		||||
    from wagtail.wagtailsearch.models import Query
 | 
			
		||||
    from wagtail.search.models import Query
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def search(request):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -180,13 +180,13 @@ These child objects are now accessible through the page's ``advert_placements``
 | 
			
		|||
Making Snippets Searchable
 | 
			
		||||
--------------------------
 | 
			
		||||
 | 
			
		||||
If a snippet model inherits from ``wagtail.wagtailsearch.index.Indexed``, as described in :ref:`wagtailsearch_indexing_models`, Wagtail will automatically add a search box to the chooser interface for that snippet type. For example, the ``Advert`` snippet could be made searchable as follows:
 | 
			
		||||
If a snippet model inherits from ``wagtail.search.index.Indexed``, as described in :ref:`wagtailsearch_indexing_models`, Wagtail will automatically add a search box to the chooser interface for that snippet type. For example, the ``Advert`` snippet could be made searchable as follows:
 | 
			
		||||
 | 
			
		||||
.. code-block:: python
 | 
			
		||||
 | 
			
		||||
  ...
 | 
			
		||||
 | 
			
		||||
  from wagtail.wagtailsearch import index
 | 
			
		||||
  from wagtail.search import index
 | 
			
		||||
 | 
			
		||||
  ...
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										4
									
								
								tox.ini
								
								
								
								
							
							
						
						
									
										4
									
								
								tox.ini
								
								
								
								
							| 
						 | 
				
			
			@ -26,8 +26,8 @@ ignore = D100,D101,D102,D103,D105,D200,D202,D204,D205,D209,D400,D401,E303,E501,N
 | 
			
		|||
[testenv]
 | 
			
		||||
install_command = pip install -e ".[testing]" -U {opts} {packages}
 | 
			
		||||
commands =
 | 
			
		||||
    elasticsearch2: coverage run runtests.py wagtail.wagtailsearch wagtail.documents wagtail.images --elasticsearch2
 | 
			
		||||
    elasticsearch5: coverage run runtests.py wagtail.wagtailsearch wagtail.documents wagtail.images --elasticsearch5
 | 
			
		||||
    elasticsearch2: coverage run runtests.py wagtail.search wagtail.documents wagtail.images --elasticsearch2
 | 
			
		||||
    elasticsearch5: coverage run runtests.py wagtail.search wagtail.documents wagtail.images --elasticsearch5
 | 
			
		||||
    noelasticsearch: coverage run runtests.py
 | 
			
		||||
 | 
			
		||||
basepython =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,7 +30,7 @@ from wagtail.admin.views.home import RecentEditsPanel
 | 
			
		|||
from wagtail.admin.views.pages import PreviewOnEdit
 | 
			
		||||
from wagtail.core.models import GroupPagePermission, Page, PageRevision, Site
 | 
			
		||||
from wagtail.core.signals import page_published, page_unpublished
 | 
			
		||||
from wagtail.wagtailsearch.index import SearchField
 | 
			
		||||
from wagtail.search.index import SearchField
 | 
			
		||||
from wagtail.wagtailusers.models import UserProfile
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,8 +3,8 @@ from __future__ import absolute_import, unicode_literals
 | 
			
		|||
from django.utils.translation import ugettext as _
 | 
			
		||||
 | 
			
		||||
from wagtail.admin.forms import SearchForm
 | 
			
		||||
from wagtail.wagtailsearch.backends import get_search_backend
 | 
			
		||||
from wagtail.wagtailsearch.index import class_is_indexed
 | 
			
		||||
from wagtail.search.backends import get_search_backend
 | 
			
		||||
from wagtail.search.index import class_is_indexed
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SearchableListMixin(object):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,7 +7,7 @@ from taggit.managers import TaggableManager
 | 
			
		|||
 | 
			
		||||
from wagtail.core import hooks
 | 
			
		||||
from wagtail.core.models import Page
 | 
			
		||||
from wagtail.wagtailsearch.backends import get_search_backend
 | 
			
		||||
from wagtail.search.backends import get_search_backend
 | 
			
		||||
 | 
			
		||||
from .utils import BadRequestError, pages_for_site, parse_boolean
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,9 +9,9 @@ from django.db.models.constants import LOOKUP_SEP
 | 
			
		|||
from django.db.models.functions import Cast
 | 
			
		||||
from django.utils.encoding import force_text
 | 
			
		||||
 | 
			
		||||
from wagtail.wagtailsearch.backends.base import (
 | 
			
		||||
from wagtail.search.backends.base import (
 | 
			
		||||
    BaseSearchBackend, BaseSearchQuery, BaseSearchResults)
 | 
			
		||||
from wagtail.wagtailsearch.index import RelatedFields, SearchField
 | 
			
		||||
from wagtail.search.index import RelatedFields, SearchField
 | 
			
		||||
 | 
			
		||||
from .models import IndexEntry
 | 
			
		||||
from .utils import (
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@ import unittest
 | 
			
		|||
 | 
			
		||||
from django.test import TestCase
 | 
			
		||||
 | 
			
		||||
from wagtail.wagtailsearch.tests.test_backends import BackendTests
 | 
			
		||||
from wagtail.search.tests.test_backends import BackendTests
 | 
			
		||||
 | 
			
		||||
from ..utils import BOOSTS_WEIGHTS, WEIGHTS_VALUES, determine_boosts_weights, get_weight
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@ from itertools import zip_longest
 | 
			
		|||
from django.apps import apps
 | 
			
		||||
from django.db import connections
 | 
			
		||||
 | 
			
		||||
from wagtail.wagtailsearch.index import Indexed, RelatedFields, SearchField
 | 
			
		||||
from wagtail.search.index import Indexed, RelatedFields, SearchField
 | 
			
		||||
 | 
			
		||||
try:
 | 
			
		||||
    # Only use the GPLv2 licensed unidecode if it's installed.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@ from django.utils.translation import ugettext_lazy as _
 | 
			
		|||
 | 
			
		||||
from wagtail.contrib.wagtailsearchpromotions.models import SearchPromotion
 | 
			
		||||
from wagtail.admin.widgets import AdminPageChooser
 | 
			
		||||
from wagtail.wagtailsearch.models import Query
 | 
			
		||||
from wagtail.search.models import Query
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SearchPromotionForm(forms.ModelForm):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@ from __future__ import absolute_import, unicode_literals
 | 
			
		|||
from django.db import models
 | 
			
		||||
from django.utils.translation import ugettext_lazy as _
 | 
			
		||||
 | 
			
		||||
from wagtail.wagtailsearch.models import Query
 | 
			
		||||
from wagtail.search.models import Query
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SearchPromotion(models.Model):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@ from __future__ import absolute_import, unicode_literals
 | 
			
		|||
from django import template
 | 
			
		||||
 | 
			
		||||
from wagtail.contrib.wagtailsearchpromotions.models import SearchPromotion
 | 
			
		||||
from wagtail.wagtailsearch.models import Query
 | 
			
		||||
from wagtail.search.models import Query
 | 
			
		||||
 | 
			
		||||
register = template.Library()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,7 +7,7 @@ from wagtail.contrib.wagtailsearchpromotions.models import SearchPromotion
 | 
			
		|||
from wagtail.contrib.wagtailsearchpromotions.templatetags.wagtailsearchpromotions_tags import \
 | 
			
		||||
    get_search_promotions
 | 
			
		||||
from wagtail.tests.utils import WagtailTestUtils
 | 
			
		||||
from wagtail.wagtailsearch.models import Query
 | 
			
		||||
from wagtail.search.models import Query
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestSearchPromotions(TestCase):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,8 +10,8 @@ from wagtail.utils.pagination import paginate
 | 
			
		|||
from wagtail.admin import messages
 | 
			
		||||
from wagtail.admin.forms import SearchForm
 | 
			
		||||
from wagtail.admin.utils import any_permission_required, permission_required
 | 
			
		||||
from wagtail.wagtailsearch import forms as search_forms
 | 
			
		||||
from wagtail.wagtailsearch.models import Query
 | 
			
		||||
from wagtail.search import forms as search_forms
 | 
			
		||||
from wagtail.search.models import Query
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@any_permission_required(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@ from __future__ import unicode_literals
 | 
			
		|||
from django.conf import settings
 | 
			
		||||
from django.db import migrations, models
 | 
			
		||||
 | 
			
		||||
import wagtail.wagtailsearch.index
 | 
			
		||||
import wagtail.search.index
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def set_page_path_collation(apps, schema_editor):
 | 
			
		||||
| 
						 | 
				
			
			@ -96,7 +96,7 @@ class Migration(migrations.Migration):
 | 
			
		|||
            options={
 | 
			
		||||
                'abstract': False,
 | 
			
		||||
            },
 | 
			
		||||
            bases=(wagtail.wagtailsearch.index.Indexed, models.Model),
 | 
			
		||||
            bases=(wagtail.search.index.Indexed, models.Model),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RunPython(
 | 
			
		||||
            set_page_path_collation, migrations.RunPython.noop
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@ import django.db.models.deletion
 | 
			
		|||
from django.conf import settings
 | 
			
		||||
from django.db import migrations, models
 | 
			
		||||
 | 
			
		||||
import wagtail.wagtailsearch.index
 | 
			
		||||
import wagtail.search.index
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def initial_data(apps, schema_editor):
 | 
			
		||||
| 
						 | 
				
			
			@ -238,7 +238,7 @@ class Migration(migrations.Migration):
 | 
			
		|||
            options={
 | 
			
		||||
                'abstract': False,
 | 
			
		||||
            },
 | 
			
		||||
            bases=(wagtail.wagtailsearch.index.Indexed, models.Model),
 | 
			
		||||
            bases=(wagtail.search.index.Indexed, models.Model),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RunPython(
 | 
			
		||||
            set_page_path_collation, migrations.RunPython.noop
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,7 +34,7 @@ from wagtail.core.sites import get_site_for_hostname
 | 
			
		|||
from wagtail.core.url_routing import RouteResult
 | 
			
		||||
from wagtail.core.utils import (
 | 
			
		||||
    WAGTAIL_APPEND_SLASH, camelcase_to_underscore, resolve_model_string)
 | 
			
		||||
from wagtail.wagtailsearch import index
 | 
			
		||||
from wagtail.search import index
 | 
			
		||||
 | 
			
		||||
logger = logging.getLogger('wagtail.core')
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,7 +10,7 @@ from django.db.models.functions import Length, Substr
 | 
			
		|||
from django.db.models.query import BaseIterable
 | 
			
		||||
from treebeard.mp_tree import MP_NodeQuerySet
 | 
			
		||||
 | 
			
		||||
from wagtail.wagtailsearch.queryset import SearchableQuerySetMixin
 | 
			
		||||
from wagtail.search.queryset import SearchableQuerySetMixin
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TreeQuerySet(MP_NodeQuerySet):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -593,7 +593,7 @@ class TestSpecificQuery(TestCase):
 | 
			
		|||
        # 1276 - The database search backend didn't return results with the
 | 
			
		||||
        # specific type when searching a specific queryset.
 | 
			
		||||
 | 
			
		||||
        pages = list(Page.objects.specific().live().in_menu().search(None, backend='wagtail.wagtailsearch.backends.db'))
 | 
			
		||||
        pages = list(Page.objects.specific().live().in_menu().search(None, backend='wagtail.search.backends.db'))
 | 
			
		||||
 | 
			
		||||
        # Check that each page is in the queryset with the correct type.
 | 
			
		||||
        # We don't care about order here
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@ import taggit.managers
 | 
			
		|||
from django.conf import settings
 | 
			
		||||
from django.db import migrations, models
 | 
			
		||||
 | 
			
		||||
import wagtail.wagtailsearch.index
 | 
			
		||||
import wagtail.search.index
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
| 
						 | 
				
			
			@ -46,6 +46,6 @@ class Migration(migrations.Migration):
 | 
			
		|||
            ],
 | 
			
		||||
            options={
 | 
			
		||||
            },
 | 
			
		||||
            bases=(models.Model, wagtail.wagtailsearch.index.Indexed),
 | 
			
		||||
            bases=(models.Model, wagtail.search.index.Indexed),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,8 +12,8 @@ from taggit.managers import TaggableManager
 | 
			
		|||
 | 
			
		||||
from wagtail.admin.utils import get_object_usage
 | 
			
		||||
from wagtail.core.models import CollectionMember
 | 
			
		||||
from wagtail.wagtailsearch import index
 | 
			
		||||
from wagtail.wagtailsearch.queryset import SearchableQuerySetMixin
 | 
			
		||||
from wagtail.search import index
 | 
			
		||||
from wagtail.search.queryset import SearchableQuerySetMixin
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DocumentQuerySet(SearchableQuerySetMixin, models.QuerySet):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,9 +16,9 @@ from wagtail.documents import models
 | 
			
		|||
class TestIssue613(TestCase, WagtailTestUtils):
 | 
			
		||||
    def get_elasticsearch_backend(self):
 | 
			
		||||
        from django.conf import settings
 | 
			
		||||
        from wagtail.wagtailsearch.backends import get_search_backend
 | 
			
		||||
        from wagtail.search.backends import get_search_backend
 | 
			
		||||
 | 
			
		||||
        backend_path = 'wagtail.wagtailsearch.backends.elasticsearch'
 | 
			
		||||
        backend_path = 'wagtail.search.backends.elasticsearch'
 | 
			
		||||
 | 
			
		||||
        # Search WAGTAILSEARCH_BACKENDS for an entry that uses the given backend path
 | 
			
		||||
        for backend_name, backend_conf in settings.WAGTAILSEARCH_BACKENDS.items():
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ from wagtail.core.models import Collection
 | 
			
		|||
from wagtail.documents.forms import get_document_form
 | 
			
		||||
from wagtail.documents.models import get_document_model
 | 
			
		||||
from wagtail.documents.permissions import permission_policy
 | 
			
		||||
from wagtail.wagtailsearch import index as search_index
 | 
			
		||||
from wagtail.search import index as search_index
 | 
			
		||||
 | 
			
		||||
permission_checker = PermissionPolicyChecker(permission_policy)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ from wagtail.core.models import Collection
 | 
			
		|||
from wagtail.documents.forms import get_document_form
 | 
			
		||||
from wagtail.documents.models import get_document_model
 | 
			
		||||
from wagtail.documents.permissions import permission_policy
 | 
			
		||||
from wagtail.wagtailsearch import index as search_index
 | 
			
		||||
from wagtail.search import index as search_index
 | 
			
		||||
 | 
			
		||||
permission_checker = PermissionPolicyChecker(permission_policy)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,7 @@ from django.views.decorators.http import require_POST
 | 
			
		|||
from django.views.decorators.vary import vary_on_headers
 | 
			
		||||
 | 
			
		||||
from wagtail.admin.utils import PermissionPolicyChecker
 | 
			
		||||
from wagtail.wagtailsearch.backends import get_search_backends
 | 
			
		||||
from wagtail.search.backends import get_search_backends
 | 
			
		||||
 | 
			
		||||
from ..forms import get_document_form, get_document_multi_form
 | 
			
		||||
from ..models import get_document_model
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@ from django.conf import settings
 | 
			
		|||
from django.db import migrations, models
 | 
			
		||||
 | 
			
		||||
import wagtail.images.models
 | 
			
		||||
import wagtail.wagtailsearch.index
 | 
			
		||||
import wagtail.search.index
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
| 
						 | 
				
			
			@ -54,7 +54,7 @@ class Migration(migrations.Migration):
 | 
			
		|||
            options={
 | 
			
		||||
                'abstract': False,
 | 
			
		||||
            },
 | 
			
		||||
            bases=(models.Model, wagtail.wagtailsearch.index.Indexed),
 | 
			
		||||
            bases=(models.Model, wagtail.search.index.Indexed),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.CreateModel(
 | 
			
		||||
            name='Rendition',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,8 +25,8 @@ from wagtail.core import hooks
 | 
			
		|||
from wagtail.core.models import CollectionMember
 | 
			
		||||
from wagtail.images.exceptions import InvalidFilterSpecError
 | 
			
		||||
from wagtail.images.rect import Rect
 | 
			
		||||
from wagtail.wagtailsearch import index
 | 
			
		||||
from wagtail.wagtailsearch.queryset import SearchableQuerySetMixin
 | 
			
		||||
from wagtail.search import index
 | 
			
		||||
from wagtail.search.queryset import SearchableQuerySetMixin
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SourceImageIOError(IOError):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -374,9 +374,9 @@ class TestIssue573(TestCase):
 | 
			
		|||
class TestIssue613(TestCase, WagtailTestUtils):
 | 
			
		||||
    def get_elasticsearch_backend(self):
 | 
			
		||||
        from django.conf import settings
 | 
			
		||||
        from wagtail.wagtailsearch.backends import get_search_backend
 | 
			
		||||
        from wagtail.search.backends import get_search_backend
 | 
			
		||||
 | 
			
		||||
        backend_path = 'wagtail.wagtailsearch.backends.elasticsearch'
 | 
			
		||||
        backend_path = 'wagtail.search.backends.elasticsearch'
 | 
			
		||||
 | 
			
		||||
        # Search WAGTAILSEARCH_BACKENDS for an entry that uses the given backend path
 | 
			
		||||
        for backend_name, backend_conf in settings.WAGTAILSEARCH_BACKENDS.items():
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,7 +15,7 @@ from wagtail.images import get_image_model
 | 
			
		|||
from wagtail.images.formats import get_image_format
 | 
			
		||||
from wagtail.images.forms import ImageInsertionForm, get_image_form
 | 
			
		||||
from wagtail.images.permissions import permission_policy
 | 
			
		||||
from wagtail.wagtailsearch import index as search_index
 | 
			
		||||
from wagtail.search import index as search_index
 | 
			
		||||
 | 
			
		||||
permission_checker = PermissionPolicyChecker(permission_policy)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,7 +21,7 @@ from wagtail.images.forms import URLGeneratorForm, get_image_form
 | 
			
		|||
from wagtail.images.models import Filter
 | 
			
		||||
from wagtail.images.permissions import permission_policy
 | 
			
		||||
from wagtail.images.views.serve import generate_signature
 | 
			
		||||
from wagtail.wagtailsearch import index as search_index
 | 
			
		||||
from wagtail.search import index as search_index
 | 
			
		||||
 | 
			
		||||
permission_checker = PermissionPolicyChecker(permission_policy)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,7 @@ from wagtail.images import get_image_model
 | 
			
		|||
from wagtail.images.fields import ALLOWED_EXTENSIONS
 | 
			
		||||
from wagtail.images.forms import get_image_form
 | 
			
		||||
from wagtail.images.permissions import permission_policy
 | 
			
		||||
from wagtail.wagtailsearch.backends import get_search_backends
 | 
			
		||||
from wagtail.search.backends import get_search_backends
 | 
			
		||||
 | 
			
		||||
permission_checker = PermissionPolicyChecker(permission_policy)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,7 +37,7 @@ INSTALLED_APPS = [
 | 
			
		|||
    'wagtail.wagtailsnippets',
 | 
			
		||||
    'wagtail.documents',
 | 
			
		||||
    'wagtail.images',
 | 
			
		||||
    'wagtail.wagtailsearch',
 | 
			
		||||
    'wagtail.search',
 | 
			
		||||
    'wagtail.admin',
 | 
			
		||||
    'wagtail.core',
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@ from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
 | 
			
		|||
from django.shortcuts import render
 | 
			
		||||
 | 
			
		||||
from wagtail.core.models import Page
 | 
			
		||||
from wagtail.wagtailsearch.models import Query
 | 
			
		||||
from wagtail.search.models import Query
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def search(request):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
default_app_config = 'wagtail.search.apps.WagtailSearchAppConfig'
 | 
			
		||||
| 
						 | 
				
			
			@ -2,11 +2,11 @@ from __future__ import absolute_import, unicode_literals
 | 
			
		|||
 | 
			
		||||
from django.apps import AppConfig
 | 
			
		||||
 | 
			
		||||
from wagtail.wagtailsearch.signal_handlers import register_signal_handlers
 | 
			
		||||
from wagtail.search.signal_handlers import register_signal_handlers
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class WagtailSearchAppConfig(AppConfig):
 | 
			
		||||
    name = 'wagtail.wagtailsearch'
 | 
			
		||||
    name = 'wagtail.search'
 | 
			
		||||
    label = 'wagtailsearch'
 | 
			
		||||
    verbose_name = "Wagtail search"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ def get_search_backend_config():
 | 
			
		|||
 | 
			
		||||
    # Make sure the default backend is always defined
 | 
			
		||||
    search_backends.setdefault('default', {
 | 
			
		||||
        'BACKEND': 'wagtail.wagtailsearch.backends.db',
 | 
			
		||||
        'BACKEND': 'wagtail.search.backends.db',
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    return search_backends
 | 
			
		||||
| 
						 | 
				
			
			@ -31,8 +31,8 @@ def import_backend(dotted_path):
 | 
			
		|||
    Theres two formats for the dotted_path.
 | 
			
		||||
    One with the backend class (old) and one without (new)
 | 
			
		||||
    eg:
 | 
			
		||||
      old: wagtail.wagtailsearch.backends.elasticsearch.ElasticsearchSearchBackend
 | 
			
		||||
      new: wagtail.wagtailsearch.backends.elasticsearch
 | 
			
		||||
      old: wagtail.search.backends.elasticsearch.ElasticsearchSearchBackend
 | 
			
		||||
      new: wagtail.search.backends.elasticsearch
 | 
			
		||||
 | 
			
		||||
    If a new style dotted path was specified, this function would
 | 
			
		||||
    look for a backend class from the "SearchBackend" attribute.
 | 
			
		||||
| 
						 | 
				
			
			@ -5,7 +5,7 @@ from django.db.models.lookups import Lookup
 | 
			
		|||
from django.db.models.query import QuerySet
 | 
			
		||||
from django.db.models.sql.where import SubqueryConstraint, WhereNode
 | 
			
		||||
 | 
			
		||||
from wagtail.wagtailsearch.index import class_is_indexed
 | 
			
		||||
from wagtail.search.index import class_is_indexed
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class FilterError(Exception):
 | 
			
		||||
| 
						 | 
				
			
			@ -3,7 +3,7 @@ from __future__ import absolute_import, unicode_literals
 | 
			
		|||
from django.db import models
 | 
			
		||||
from django.db.models.expressions import Value
 | 
			
		||||
 | 
			
		||||
from wagtail.wagtailsearch.backends.base import (
 | 
			
		||||
from wagtail.search.backends.base import (
 | 
			
		||||
    BaseSearchBackend, BaseSearchQuery, BaseSearchResults)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -12,9 +12,9 @@ from elasticsearch import Elasticsearch, NotFoundError
 | 
			
		|||
from elasticsearch.helpers import bulk
 | 
			
		||||
 | 
			
		||||
from wagtail.utils.utils import deep_update
 | 
			
		||||
from wagtail.wagtailsearch.backends.base import (
 | 
			
		||||
from wagtail.search.backends.base import (
 | 
			
		||||
    BaseSearchBackend, BaseSearchQuery, BaseSearchResults)
 | 
			
		||||
from wagtail.wagtailsearch.index import (
 | 
			
		||||
from wagtail.search.index import (
 | 
			
		||||
    FilterField, Indexed, RelatedFields, SearchField, class_is_indexed)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -9,7 +9,7 @@ from django.db import models
 | 
			
		|||
from django.db.models.fields import FieldDoesNotExist
 | 
			
		||||
from django.db.models.fields.related import ForeignObjectRel, OneToOneRel, RelatedField
 | 
			
		||||
 | 
			
		||||
from wagtail.wagtailsearch.backends import get_search_backends_with_name
 | 
			
		||||
from wagtail.search.backends import get_search_backends_with_name
 | 
			
		||||
 | 
			
		||||
logger = logging.getLogger('wagtail.search.index')
 | 
			
		||||
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Ładowanie…
	
		Reference in New Issue