From 9e1bf5ba0eb7565317549ae1251cdb0549f825c4 Mon Sep 17 00:00:00 2001 From: evgeniy-st Date: Fri, 30 Aug 2019 16:08:01 +0300 Subject: [PATCH] update news endpoint --- apps/news/serializers/common.py | 4 +-- apps/news/views/common.py | 43 ++++++++++++--------------------- 2 files changed, 17 insertions(+), 30 deletions(-) diff --git a/apps/news/serializers/common.py b/apps/news/serializers/common.py index 904c6f89..b64a7fc9 100644 --- a/apps/news/serializers/common.py +++ b/apps/news/serializers/common.py @@ -1,5 +1,5 @@ +"""News app common serializers.""" from rest_framework import serializers - from gallery import models as gallery_models from location.models import Address from location.serializers import AddressSerializer @@ -23,7 +23,7 @@ class NewsSerializer(serializers.ModelSerializer): title_translated = serializers.CharField(read_only=True, allow_null=True) subtitle_translated = serializers.CharField(read_only=True, allow_null=True) description_translated = serializers.CharField(read_only=True, allow_null=True) - image_url = serializers.ImageField(source='image.image') + image_url = serializers.ImageField(source='image.image', allow_null=True) class Meta: model = models.News diff --git a/apps/news/views/common.py b/apps/news/views/common.py index 82c77068..2678289b 100644 --- a/apps/news/views/common.py +++ b/apps/news/views/common.py @@ -1,50 +1,37 @@ +"""News app common app.""" from rest_framework import generics, permissions - -from news import filters -from news.models import News, NewsType +from news import filters, models from news.serializers import common as serializers -from utils.views import (JWTGenericViewMixin, - JWTListAPIView) +from utils.views import JWTGenericViewMixin, JWTListAPIView -# Mixins -class NewsViewMixin(JWTGenericViewMixin): - """View mixin for News model""" +class NewsMixin: + """News mixin.""" - def get_queryset(self, *args, **kwargs): - """Override get_queryset method""" - return News.objects.annotate_localized_fields(locale=self.request.locale) - - -class NewsListView(NewsViewMixin, JWTListAPIView): - """News list view.""" permission_classes = (permissions.AllowAny, ) serializer_class = serializers.NewsSerializer - filter_class = filters.NewsListFilterSet def get_queryset(self, *args, **kwargs): """Override get_queryset method""" - return News.objects.published()\ - .by_country_code(code=self.request.country_code)\ - .order_by('-is_highlighted', '-created') + return models.News.objects.published() \ + .by_country_code(code=self.request.country_code) \ + .order_by('-is_highlighted', '-created') -# class NewsCreateView(generics.CreateAPIView): -# """News list view.""" -# queryset = News.objects.all() -# permission_classes = (permissions.IsAuthenticated, ) -# serializer_class = serializers.NewsCreateUpdateSerializer +class NewsListView(NewsMixin, JWTListAPIView): + """News list view.""" + + filter_class = filters.NewsListFilterSet -class NewsDetailView(NewsViewMixin, generics.RetrieveAPIView): +class NewsDetailView(NewsMixin, JWTGenericViewMixin, generics.RetrieveAPIView): """News detail view.""" - permission_classes = (permissions.IsAuthenticatedOrReadOnly, ) - serializer_class = serializers.NewsSerializer class NewsTypeListView(generics.ListAPIView): """NewsType list view.""" + serializer_class = serializers.NewsTypeSerializer permission_classes = (permissions.AllowAny, ) pagination_class = None - queryset = NewsType.objects.all() + queryset = models.NewsType.objects.all()