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 rest_framework import serializers
from gallery import models as gallery_models from gallery import models as gallery_models
from location.models import Address from location.models import Address
from location.serializers import AddressSerializer from location.serializers import AddressSerializer
@ -23,7 +23,7 @@ class NewsSerializer(serializers.ModelSerializer):
title_translated = serializers.CharField(read_only=True, allow_null=True) title_translated = serializers.CharField(read_only=True, allow_null=True)
subtitle_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) 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: class Meta:
model = models.News model = models.News

View File

@ -1,50 +1,37 @@
"""News app common app."""
from rest_framework import generics, permissions from rest_framework import generics, permissions
from news import filters, models
from news import filters
from news.models import News, NewsType
from news.serializers import common as serializers from news.serializers import common as serializers
from utils.views import (JWTGenericViewMixin, from utils.views import JWTGenericViewMixin, JWTListAPIView
JWTListAPIView)
# Mixins class NewsMixin:
class NewsViewMixin(JWTGenericViewMixin): """News mixin."""
"""View mixin for News model"""
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, ) permission_classes = (permissions.AllowAny, )
serializer_class = serializers.NewsSerializer serializer_class = serializers.NewsSerializer
filter_class = filters.NewsListFilterSet
def get_queryset(self, *args, **kwargs): def get_queryset(self, *args, **kwargs):
"""Override get_queryset method""" """Override get_queryset method"""
return News.objects.published()\ return models.News.objects.published() \
.by_country_code(code=self.request.country_code)\ .by_country_code(code=self.request.country_code) \
.order_by('-is_highlighted', '-created') .order_by('-is_highlighted', '-created')
# class NewsCreateView(generics.CreateAPIView): class NewsListView(NewsMixin, JWTListAPIView):
# """News list view.""" """News list view."""
# queryset = News.objects.all()
# permission_classes = (permissions.IsAuthenticated, ) filter_class = filters.NewsListFilterSet
# serializer_class = serializers.NewsCreateUpdateSerializer
class NewsDetailView(NewsViewMixin, generics.RetrieveAPIView): class NewsDetailView(NewsMixin, JWTGenericViewMixin, generics.RetrieveAPIView):
"""News detail view.""" """News detail view."""
permission_classes = (permissions.IsAuthenticatedOrReadOnly, )
serializer_class = serializers.NewsSerializer
class NewsTypeListView(generics.ListAPIView): class NewsTypeListView(generics.ListAPIView):
"""NewsType list view.""" """NewsType list view."""
serializer_class = serializers.NewsTypeSerializer serializer_class = serializers.NewsTypeSerializer
permission_classes = (permissions.AllowAny, ) permission_classes = (permissions.AllowAny, )
pagination_class = None pagination_class = None
queryset = NewsType.objects.all() queryset = models.NewsType.objects.all()