From bd3dd47742e2ae1685a34949377589ab891791f8 Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Thu, 12 Dec 2019 16:27:40 +0300 Subject: [PATCH] slugs news --- apps/news/serializers.py | 11 ++++++++++- apps/search_indexes/serializers.py | 7 ++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/apps/news/serializers.py b/apps/news/serializers.py index f2d6f27e..896ff420 100644 --- a/apps/news/serializers.py +++ b/apps/news/serializers.py @@ -15,6 +15,7 @@ from utils.serializers import (TranslatedField, ProjectModelSerializer, FavoritesCreateSerializer, ImageBaseSerializer, CarouselCreateSerializer) from rating import models as rating_models from django.shortcuts import get_object_or_404 +from utils.models import get_current_locale, get_default_locale class AgendaSerializer(ProjectModelSerializer): @@ -70,6 +71,13 @@ class NewsBaseSerializer(ProjectModelSerializer): tags = TagBaseSerializer(read_only=True, many=True, source='visible_tags') in_favorites = serializers.BooleanField(allow_null=True, read_only=True) view_counter = serializers.IntegerField(read_only=True) + slug = serializers.SerializerMethodField(read_only=True, allow_null=True) + + def get_slug(self, obj): + if obj.slugs: + return obj.slugs.get(get_current_locale()) \ + or obj.slugs.get(get_default_locale()) \ + or next(iter(obj.slugs.values())) class Meta: """Meta class.""" @@ -77,12 +85,12 @@ class NewsBaseSerializer(ProjectModelSerializer): model = models.News fields = ( 'id', + 'slug', 'title_translated', 'subtitle_translated', 'is_highlighted', 'news_type', 'tags', - 'slugs', 'view_counter', ) @@ -173,6 +181,7 @@ class NewsBackOfficeBaseSerializer(NewsBaseSerializer): 'title', 'backoffice_title', 'subtitle', + 'slugs', 'is_published', ) extra_kwargs = { diff --git a/apps/search_indexes/serializers.py b/apps/search_indexes/serializers.py index 4fc5a027..4cad05fc 100644 --- a/apps/search_indexes/serializers.py +++ b/apps/search_indexes/serializers.py @@ -222,6 +222,7 @@ class NewsDocumentSerializer(InFavoritesMixin, DocumentSerializer): subtitle_translated = serializers.SerializerMethodField(allow_null=True) news_type = NewsTypeSerializer() tags = TagsDocumentSerializer(many=True, source='visible_tags') + slug = serializers.SerializerMethodField(allow_null=True) class Meta: """Meta class.""" @@ -237,9 +238,13 @@ class NewsDocumentSerializer(InFavoritesMixin, DocumentSerializer): 'news_type', 'tags', 'start', - 'slugs', + 'slug', ) + @staticmethod + def get_slug(obj): + return get_translated_value(obj.slugs) + @staticmethod def get_title_translated(obj): return get_translated_value(obj.title)