Merge remote-tracking branch 'origin/bug/bind-author-news' into develop

This commit is contained in:
Kuroshini 2019-12-23 15:17:32 +03:00
commit 50d0997569

View File

@ -1,21 +1,22 @@
"""News app common serializers."""
from django.shortcuts import get_object_or_404
from django.utils.translation import gettext_lazy as _
from rest_framework import serializers
from rest_framework.fields import SerializerMethodField
from account.serializers.common import UserBaseSerializer
from gallery.models import Image
from main.models import SiteSettings, Carousel
from location import models as location_models
from location.serializers import CountrySimpleSerializer, AddressBaseSerializer
from location.serializers import AddressBaseSerializer, CountrySimpleSerializer
from main.models import SiteSettings
from news import models
from rating import models as rating_models
from tag.serializers import TagBaseSerializer
from utils import exceptions as utils_exceptions
from utils.serializers import (TranslatedField, ProjectModelSerializer,
FavoritesCreateSerializer, ImageBaseSerializer, CarouselCreateSerializer)
from rating import models as rating_models
from django.shortcuts import get_object_or_404
from utils.models import get_current_locale, get_default_locale
from utils.serializers import (
CarouselCreateSerializer, FavoritesCreateSerializer, ImageBaseSerializer, ProjectModelSerializer, TranslatedField,
)
class AgendaSerializer(ProjectModelSerializer):
@ -125,8 +126,7 @@ class NewsDetailSerializer(NewsBaseSerializer):
description_translated = TranslatedField()
country = CountrySimpleSerializer(read_only=True)
author = UserBaseSerializer(source='created_by', read_only=True)
state_display = serializers.CharField(source='get_state_display',
read_only=True)
state_display = serializers.CharField(source='get_state_display', read_only=True)
gallery = ImageBaseSerializer(read_only=True, source='crop_gallery', many=True)
start = serializers.DateTimeField(source='publication_datetime', read_only=True)
@ -196,17 +196,24 @@ class NewsBackOfficeBaseSerializer(NewsBaseSerializer):
'created': {'read_only': True},
'modified': {'read_only': True},
'duplication_date': {'read_only': True},
'locale_to_description_is_active': {'allow_null': False},
'must_of_the_week': {'read_only': True},
'locale_to_description_is_active': {'allow_null': False},
'must_of_the_week': {'read_only': True},
}
def create(self, validated_data):
slugs = validated_data.get('slugs')
if slugs:
if models.News.objects.filter(
slugs__values__contains=list(slugs.values())
).exists():
raise serializers.ValidationError({'slugs': _('News with this slug already exists.')})
request = self.context.get("request")
if request and hasattr(request, "user"):
user = request.user
validated_data['created_by'] = user
return super().create(validated_data)
def update(self, instance, validated_data):
@ -375,11 +382,12 @@ class NewsCarouselCreateSerializer(CarouselCreateSerializer):
class NewsCloneCreateSerializer(NewsBackOfficeBaseSerializer,
NewsDetailSerializer):
NewsDetailSerializer):
"""Serializer for creating news clone."""
template_display = serializers.CharField(source='get_template_display',
read_only=True)
duplicates = NewsBackOfficeDuplicationInfoSerializer(many=True, allow_null=True, read_only=True)
class Meta(NewsBackOfficeBaseSerializer.Meta, NewsDetailSerializer.Meta):
fields = NewsBackOfficeBaseSerializer.Meta.fields + NewsDetailSerializer.Meta.fields + (
'template_display',
@ -394,4 +402,3 @@ class NewsCloneCreateSerializer(NewsBackOfficeBaseSerializer,
view_count_model = rating_models.ViewCount.objects.create(count=0)
instance.create_duplicate(new_country, view_count_model)
return get_object_or_404(models.News, pk=kwargs['pk'])