some fixes

This commit is contained in:
evgeniy-st 2019-09-06 17:34:21 +03:00
parent b6a3aa4264
commit 43804ae5ab
3 changed files with 40 additions and 18 deletions

View File

@ -1,29 +1,38 @@
"""News app documents."""
from django.conf import settings
from django_elasticsearch_dsl import Document, Index, fields
from news.models import News
from news import models
INDEX = Index(settings.ELASTICSEARCH_INDEX_NAMES[__name__])
INDEX.settings(number_of_shards=1, number_of_replicas=1)
NEWS_INDEX = Index(settings.ELASTICSEARCH_INDEX_NAMES[__name__])
NEWS_INDEX.settings(number_of_shards=1, number_of_replicas=1)
@INDEX.doc_type
@NEWS_INDEX.doc_type
class NewsDocument(Document):
"""News document."""
news_type = fields.NestedField(properties={
'id': fields.IntegerField(),
'name': fields.KeywordField()
})
title = fields.ObjectField()
subtitle = fields.ObjectField()
description = fields.ObjectField()
web_url = fields.StringField(attr='web_url')
country = fields.NestedField(properties={
'id': fields.IntegerField(),
'code': fields.KeywordField()
})
web_url = fields.KeywordField(attr='web_url')
class Django:
model = News
model = models.News
fields = (
'id',
'playlist',
)
related_models = [models.NewsType]
def get_queryset(self):
return super().get_queryset().published()

View File

@ -6,10 +6,9 @@ from utils.models import get_current_language
class NewsDocumentSerializer(DocumentSerializer):
"""News document serialzier."""
"""News document serializer."""
title_translated = serializers.SerializerMethodField(method_name='get_title_translated',
allow_null=True)
title_translated = serializers.SerializerMethodField(allow_null=True)
class Meta:
"""Meta class."""
@ -24,5 +23,8 @@ class NewsDocumentSerializer(DocumentSerializer):
'title_translated',
)
def get_title_translated(self, instance):
return instance.title.get(get_current_language())
def get_title_translated(self, obj):
title_dict = obj.title
if not isinstance(title_dict, dict):
title_dict = obj.title.to_dict()
return title_dict.get(get_current_language())

View File

@ -10,13 +10,13 @@ from search_indexes.documents import NewsDocument
# LOOKUP_QUERY_GT,
# )
#
# from django_elasticsearch_dsl_drf.filter_backends import (
# FilteringFilterBackend,
# IdsFilterBackend,
# OrderingFilterBackend,
# SearchFilterBackend,
# DefaultOrderingFilterBackend,
# )
from django_elasticsearch_dsl_drf.filter_backends import (
FilteringFilterBackend,
IdsFilterBackend,
OrderingFilterBackend,
SearchFilterBackend,
DefaultOrderingFilterBackend,
)
class NewsDocumentViewSet(BaseDocumentViewSet):
@ -27,3 +27,14 @@ class NewsDocumentViewSet(BaseDocumentViewSet):
pagination_class = PageNumberPagination
permission_classes = (permissions.AllowAny,)
serializer_class = serializers.NewsDocumentSerializer
ordering = ('id',)
#
filter_backends = [
# DefaultOrderingFilterBackend,
# FilteringFilterBackend,
SearchFilterBackend,
]
#
# search_fields = (
# 'playlist', 'title', 'subtitle', 'description'
# )