File: views.py

package info (click to toggle)
drf-haystack 1.9.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 564 kB
  • sloc: python: 2,608; makefile: 147
file content (39 lines) | stat: -rw-r--r-- 1,239 bytes parent folder | download | duplicates (4)
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