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