EstablishmentViewSet default ordering and filtration

This commit is contained in:
evgeniy-st 2019-10-29 19:17:44 +03:00
parent 3f233fd246
commit 9fecbfe98f
3 changed files with 18 additions and 4 deletions

View File

@ -91,6 +91,7 @@ class EstablishmentDocument(Document):
'id',
'name',
'name_translated',
'is_publish',
'price_level',
'toque_number',
'public_mark',
@ -98,4 +99,4 @@ class EstablishmentDocument(Document):
)
def get_queryset(self):
return super().get_queryset().published().with_es_related()
return super().get_queryset().with_es_related()

View File

@ -1,5 +1,6 @@
"""Search indexes serializers."""
from rest_framework import serializers
from elasticsearch_dsl import AttrDict
from django_elasticsearch_dsl_drf.serializers import DocumentSerializer
from news.serializers import NewsTypeSerializer
from search_indexes.documents import EstablishmentDocument, NewsDocument
@ -31,8 +32,10 @@ class AddressDocumentSerializer(serializers.Serializer):
geo_lon = serializers.FloatField(allow_null=True, source='coordinates.lon')
geo_lat = serializers.FloatField(allow_null=True, source='coordinates.lat')
# todo: refator
def to_representation(self, instance):
if len(instance) != 0:
if instance != AttrDict(d={}) or \
(isinstance(instance, dict) and len(instance) != 0):
return super().to_representation(instance)
return None

View File

@ -3,7 +3,8 @@ from rest_framework import permissions
from django_elasticsearch_dsl_drf import constants
from django_elasticsearch_dsl_drf.filter_backends import (
FilteringFilterBackend,
GeoSpatialFilteringFilterBackend
GeoSpatialFilteringFilterBackend,
DefaultOrderingFilterBackend,
)
from django_elasticsearch_dsl_drf.viewsets import BaseDocumentViewSet
from search_indexes import serializers, filters
@ -56,12 +57,20 @@ class EstablishmentDocumentViewSet(BaseDocumentViewSet):
pagination_class = ProjectMobilePagination
permission_classes = (permissions.AllowAny,)
serializer_class = serializers.EstablishmentDocumentSerializer
ordering = ('id',)
def get_queryset(self):
qs = super(EstablishmentDocumentViewSet, self).get_queryset()
qs = qs.filter('match', is_publish=True)
if self.request.country_code:
qs = qs.filter('term',
**{'address.city.country.code': self.request.country_code})
return qs
filter_backends = [
FilteringFilterBackend,
filters.CustomSearchFilterBackend,
GeoSpatialFilteringFilterBackend,
DefaultOrderingFilterBackend,
]
search_fields = {
@ -72,6 +81,7 @@ class EstablishmentDocumentViewSet(BaseDocumentViewSet):
translated_search_fields = (
'description',
)
ordering = 'id'
filter_fields = {
'slug': 'slug',
'tag': {