diff --git a/apps/main/serializers.py b/apps/main/serializers.py index f2beb768..10d75f2b 100644 --- a/apps/main/serializers.py +++ b/apps/main/serializers.py @@ -1,9 +1,9 @@ """Main app serializers.""" from rest_framework import serializers - from advertisement.serializers.web import AdvertisementSerializer from location.serializers import CountrySerializer from main import models +from utils.serializers import TranslatedField class FeatureSerializer(serializers.ModelSerializer): @@ -109,16 +109,16 @@ class AwardSerializer(AwardBaseSerializer): class MetaDataContentSerializer(serializers.ModelSerializer): - id = serializers.IntegerField(source='metadata.id', read_only=True, ) - label_translated = serializers.CharField( - source='metadata.label_translated', read_only=True, allow_null=True) + """MetaData content serializer.""" + + id = serializers.IntegerField(source='metadata.id', read_only=True) + label_translated = TranslatedField(source='metadata.label_translated') class Meta: + """Meta class.""" + model = models.MetaDataContent - fields = [ - 'id', - 'label_translated', - ] + fields = ('id', 'label_translated') class CurrencySerializer(serializers.ModelSerializer): diff --git a/apps/news/models.py b/apps/news/models.py index 75ae49c9..c132f6fc 100644 --- a/apps/news/models.py +++ b/apps/news/models.py @@ -1,5 +1,6 @@ """News app models.""" from django.db import models +from django.contrib.contenttypes import fields as generic from django.utils import timezone from django.utils.translation import gettext_lazy as _ from rest_framework.reverse import reverse @@ -40,7 +41,7 @@ class NewsQuerySet(models.QuerySet): def with_related(self): """Return qs with related objects.""" - return self.select_related('news_type') + return self.select_related('news_type', 'country').prefetch_related('tags') class News(BaseAttributes, TranslatedFieldsMixin): @@ -78,6 +79,7 @@ class News(BaseAttributes, TranslatedFieldsMixin): country = models.ForeignKey('location.Country', blank=True, null=True, on_delete=models.SET_NULL, verbose_name=_('country')) + tags = generic.GenericRelation(to='main.MetaDataContent') objects = NewsQuerySet.as_manager() diff --git a/apps/news/serializers.py b/apps/news/serializers.py index a734a264..c0d424ad 100644 --- a/apps/news/serializers.py +++ b/apps/news/serializers.py @@ -2,6 +2,7 @@ from rest_framework import serializers from location import models as location_models from location.serializers import CountrySimpleSerializer +from main.serializers import MetaDataContentSerializer from news import models from utils.serializers import TranslatedField @@ -25,7 +26,7 @@ class NewsBaseSerializer(serializers.ModelSerializer): # related fields news_type = NewsTypeSerializer(read_only=True) - country = CountrySimpleSerializer(read_only=True) + tags = MetaDataContentSerializer(read_only=True, many=True) class Meta: """Meta class.""" @@ -39,7 +40,7 @@ class NewsBaseSerializer(serializers.ModelSerializer): 'image_url', 'preview_image_url', 'news_type', - 'country', + 'tags', ) @@ -47,6 +48,7 @@ class NewsDetailSerializer(NewsBaseSerializer): """News detail serializer.""" description_translated = TranslatedField() + country = CountrySimpleSerializer(read_only=True) class Meta(NewsBaseSerializer.Meta): """Meta class.""" @@ -58,6 +60,8 @@ class NewsDetailSerializer(NewsBaseSerializer): 'playlist', 'is_highlighted', 'is_publish', + 'author', + 'country', ) diff --git a/apps/search_indexes/urls.py b/apps/search_indexes/urls.py index 60b05fb5..664e0b99 100644 --- a/apps/search_indexes/urls.py +++ b/apps/search_indexes/urls.py @@ -4,7 +4,7 @@ from search_indexes import views router = routers.SimpleRouter() -router.register(r'news', views.NewsDocumentViewSet, basename='news') +# router.register(r'news', views.NewsDocumentViewSet, basename='news') # temporarily disabled router.register(r'establishments', views.EstablishmentDocumentViewSet, basename='establishment') urlpatterns = router.urls diff --git a/project/settings/development.py b/project/settings/development.py index a7c8d9fd..43a60935 100644 --- a/project/settings/development.py +++ b/project/settings/development.py @@ -24,7 +24,7 @@ ELASTICSEARCH_DSL = { ELASTICSEARCH_INDEX_NAMES = { - 'search_indexes.documents.news': 'development_news', + # 'search_indexes.documents.news': 'development_news', # temporarily disabled 'search_indexes.documents.establishment': 'development_establishment', } diff --git a/project/settings/local.py b/project/settings/local.py index febe4dd4..503ad191 100644 --- a/project/settings/local.py +++ b/project/settings/local.py @@ -64,6 +64,6 @@ ELASTICSEARCH_DSL = { ELASTICSEARCH_INDEX_NAMES = { - 'search_indexes.documents.news': 'local_news', + # 'search_indexes.documents.news': 'local_news', 'search_indexes.documents.establishment': 'local_establishment', } \ No newline at end of file diff --git a/project/settings/stage.py b/project/settings/stage.py index 59fc78ed..c0d6fdb1 100644 --- a/project/settings/stage.py +++ b/project/settings/stage.py @@ -22,6 +22,6 @@ ELASTICSEARCH_DSL = { ELASTICSEARCH_INDEX_NAMES = { - 'search_indexes.documents.news': 'stage_news', + # 'search_indexes.documents.news': 'stage_news', #temporarily disabled 'search_indexes.documents.establishment': 'stage_establishment', }