mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-11 16:53:10 +00:00
Added 'operator' to the API
This commit is contained in:
parent
b4e6229b37
commit
b391cbfd62
3 changed files with 19 additions and 1 deletions
|
|
@ -45,6 +45,7 @@ class BaseAPIEndpoint(GenericViewSet):
|
|||
'fields',
|
||||
'order',
|
||||
'search',
|
||||
'search_operator',
|
||||
|
||||
# Used by jQuery for cache-busting. See #1671
|
||||
'_',
|
||||
|
|
|
|||
|
|
@ -101,9 +101,10 @@ class SearchFilter(BaseFilterBackend):
|
|||
raise BadRequestError("filtering by tag with a search query is not supported")
|
||||
|
||||
search_query = request.GET['search']
|
||||
search_operator = request.GET.get('search_operator', None)
|
||||
|
||||
sb = get_search_backend()
|
||||
queryset = sb.search(search_query, queryset)
|
||||
queryset = sb.search(search_query, queryset, operator=search_operator)
|
||||
|
||||
return queryset
|
||||
|
||||
|
|
|
|||
|
|
@ -552,6 +552,22 @@ class TestPageListing(TestCase):
|
|||
self.assertEqual(response.status_code, 400)
|
||||
self.assertEqual(content, {'message': "filtering by tag with a search query is not supported"})
|
||||
|
||||
def test_search_operator_and(self):
|
||||
response = self.get_response(type='demosite.BlogEntryPage', search='blog again', search_operator='and')
|
||||
content = json.loads(response.content.decode('UTF-8'))
|
||||
|
||||
page_id_list = self.get_page_id_list(content)
|
||||
|
||||
self.assertEqual(set(page_id_list), set([18]))
|
||||
|
||||
def test_search_operator_or(self):
|
||||
response = self.get_response(type='demosite.BlogEntryPage', search='blog again', search_operator='or')
|
||||
content = json.loads(response.content.decode('UTF-8'))
|
||||
|
||||
page_id_list = self.get_page_id_list(content)
|
||||
|
||||
self.assertEqual(set(page_id_list), set([16, 18, 19]))
|
||||
|
||||
|
||||
class TestPageDetail(TestCase):
|
||||
fixtures = ['demosite.json']
|
||||
|
|
|
|||
Loading…
Reference in a new issue