diff --git a/wagtail/wagtaildocs/models.py b/wagtail/wagtaildocs/models.py index bc4fe939e8..61d44fb22e 100644 --- a/wagtail/wagtaildocs/models.py +++ b/wagtail/wagtaildocs/models.py @@ -16,6 +16,16 @@ from django.utils.encoding import python_2_unicode_compatible from wagtail.wagtailadmin.taggable import TagSearchable from wagtail.wagtailadmin.utils import get_object_usage from wagtail.wagtailsearch import index +from wagtail.wagtailsearch.backends import get_search_backend + + +class DocumentQuerySet(models.QuerySet): + def search(self, query_string, fields=None, backend='default'): + """ + This runs a search query on all the documents in the QuerySet + """ + search_backend = get_search_backend(backend) + return search_backend.search(query_string, self, fields=fields) @python_2_unicode_compatible @@ -27,6 +37,8 @@ class Document(models.Model, TagSearchable): tags = TaggableManager(help_text=None, blank=True, verbose_name=_('Tags')) + objects = DocumentQuerySet.as_manager() + search_fields = TagSearchable.search_fields + ( index.FilterField('uploaded_by_user'), ) diff --git a/wagtail/wagtaildocs/tests.py b/wagtail/wagtaildocs/tests.py index c1f0381307..660e615c2c 100644 --- a/wagtail/wagtaildocs/tests.py +++ b/wagtail/wagtaildocs/tests.py @@ -25,6 +25,16 @@ from wagtail.wagtaildocs import models from wagtail.wagtaildocs.rich_text import DocumentLinkHandler +class TestImageQuerySet(TestCase): + def test_search_method(self): + # Make a test document + document = models.Document.objects.create(title="Test document") + + # Search for it + results = models.Document.objects.search("Test") + self.assertEqual(list(results), [document]) + + class TestDocumentPermissions(TestCase): def setUp(self): # Create some user accounts for testing permissions