1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination
from drf_haystack.filters import HaystackFilter, HaystackBoostFilter, HaystackHighlightFilter, HaystackAutocompleteFilter, HaystackGEOSpatialFilter
from drf_haystack.viewsets import HaystackViewSet
from drf_haystack.mixins import FacetMixin, MoreLikeThisMixin
from .models import MockPerson, MockLocation
from .serializers import (
SearchSerializer, HighlighterSerializer,
MoreLikeThisSerializer, MockPersonFacetSerializer
)
class BasicPageNumberPagination(PageNumberPagination):
page_size = 20
page_size_query_param = "page_size"
class BasicLimitOffsetPagination(LimitOffsetPagination):
default_limit = 20
class SearchPersonFacetViewSet(FacetMixin, HaystackViewSet):
index_models = [MockPerson]
pagination_class = BasicLimitOffsetPagination
serializer_class = SearchSerializer
filter_backends = [HaystackFilter]
# Faceting
facet_serializer_class = MockPersonFacetSerializer
class SearchPersonMLTViewSet(MoreLikeThisMixin, HaystackViewSet):
index_models = [MockPerson]
serializer_class = MoreLikeThisSerializer
|