update news endpoint

This commit is contained in:
evgeniy-st 2019-08-30 16:08:01 +03:00
parent 9373137a29
commit 9e1bf5ba0e
2 changed files with 17 additions and 30 deletions

View File

@ -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

View File

@ -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()