From 4f89d7603e6cf63fabff5b63119b0601b4b32148 Mon Sep 17 00:00:00 2001 From: Anatoly Date: Sun, 3 Nov 2019 17:00:10 +0300 Subject: [PATCH] change translation mechanics --- apps/news/models.py | 4 ++-- apps/news/serializers.py | 16 ++-------------- apps/news/views.py | 1 - apps/utils/models.py | 2 ++ 4 files changed, 6 insertions(+), 17 deletions(-) diff --git a/apps/news/models.py b/apps/news/models.py index b2cc7778..9a0c19d8 100644 --- a/apps/news/models.py +++ b/apps/news/models.py @@ -189,11 +189,11 @@ class News(BaseAttributes, TranslatedFieldsMixin): @property def should_read(self): - return self.__class__.objects.should_read(self) + return self.__class__.objects.should_read(self)[:3] @property def same_theme(self): - return self.__class__.objects.same_theme(self) + return self.__class__.objects.same_theme(self)[:3] @property def main_image(self): diff --git a/apps/news/serializers.py b/apps/news/serializers.py index 50f79f64..40495e2c 100644 --- a/apps/news/serializers.py +++ b/apps/news/serializers.py @@ -203,8 +203,8 @@ class NewsDetailSerializer(NewsBaseSerializer): class NewsDetailWebSerializer(NewsDetailSerializer): """News detail serializer for web users..""" - same_theme = serializers.SerializerMethodField() - should_read = serializers.SerializerMethodField() + same_theme = NewsSimilarListSerializer(many=True, read_only=True) + should_read = NewsSimilarListSerializer(many=True, read_only=True) agenda = AgendaSerializer() banner = NewsBannerSerializer() @@ -218,18 +218,6 @@ class NewsDetailWebSerializer(NewsDetailSerializer): 'banner', ) - #todo: refactor this - def get_same_theme(self, obj): - return NewsSimilarListSerializer( - obj.same_theme.has_translation(self.context.get('request').locale)[:3], - many=True).data - - #todo: refactor this - def get_should_read(self, obj): - return NewsSimilarListSerializer( - obj.should_read.has_translation(self.context.get('request').locale)[:3], - many=True).data - class NewsBackOfficeBaseSerializer(NewsBaseSerializer): """News back office base serializer.""" diff --git a/apps/news/views.py b/apps/news/views.py index e8042c62..ad7e6dfb 100644 --- a/apps/news/views.py +++ b/apps/news/views.py @@ -22,7 +22,6 @@ class NewsMixinView: """Override get_queryset method.""" qs = models.News.objects.published() \ - .has_translation(self.request.locale) \ .with_base_related() \ .order_by('-is_highlighted', '-created') country_code = self.request.country_code diff --git a/apps/utils/models.py b/apps/utils/models.py index 55512e88..726f0ca4 100644 --- a/apps/utils/models.py +++ b/apps/utils/models.py @@ -78,6 +78,8 @@ def translate_field(self, field_name): # fallback if value is None: value = field.get(get_default_locale()) + if value is None: + value = field.get(next(iter(field.keys()))) return value return None return translate