diff --git a/apps/news/models.py b/apps/news/models.py index 9a0c19d8..b2cc7778 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)[:3] + return self.__class__.objects.should_read(self) @property def same_theme(self): - return self.__class__.objects.same_theme(self)[:3] + return self.__class__.objects.same_theme(self) @property def main_image(self): diff --git a/apps/news/serializers.py b/apps/news/serializers.py index 1389d20e..50f79f64 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 = NewsSimilarListSerializer(many=True, read_only=True) - should_read = NewsSimilarListSerializer(many=True, read_only=True) + same_theme = serializers.SerializerMethodField() + should_read = serializers.SerializerMethodField() agenda = AgendaSerializer() banner = NewsBannerSerializer() @@ -215,9 +215,21 @@ class NewsDetailWebSerializer(NewsDetailSerializer): 'same_theme', 'should_read', 'agenda', - 'banner' + '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."""