Merge branch 'feature/news-doubles' into develop
This commit is contained in:
commit
22408bf21f
|
|
@ -13,6 +13,8 @@ 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,
|
from utils.serializers import (TranslatedField, ProjectModelSerializer,
|
||||||
FavoritesCreateSerializer, ImageBaseSerializer, CarouselCreateSerializer)
|
FavoritesCreateSerializer, ImageBaseSerializer, CarouselCreateSerializer)
|
||||||
|
from rating import models as rating_models
|
||||||
|
from django.shortcuts import get_object_or_404
|
||||||
|
|
||||||
|
|
||||||
class AgendaSerializer(ProjectModelSerializer):
|
class AgendaSerializer(ProjectModelSerializer):
|
||||||
|
|
@ -327,3 +329,29 @@ class NewsCarouselCreateSerializer(CarouselCreateSerializer):
|
||||||
'content_object': validated_data.pop('news')
|
'content_object': validated_data.pop('news')
|
||||||
})
|
})
|
||||||
return super().create(validated_data)
|
return super().create(validated_data)
|
||||||
|
|
||||||
|
|
||||||
|
class NewsCloneCreateSerializer(NewsBackOfficeBaseSerializer,
|
||||||
|
NewsDetailSerializer):
|
||||||
|
"""Serializer for creating news clone."""
|
||||||
|
template_display = serializers.CharField(source='get_template_display',
|
||||||
|
read_only=True)
|
||||||
|
class Meta(NewsBackOfficeBaseSerializer.Meta, NewsDetailSerializer.Meta):
|
||||||
|
fields = NewsBackOfficeBaseSerializer.Meta.fields + NewsDetailSerializer.Meta.fields + (
|
||||||
|
'template_display',
|
||||||
|
)
|
||||||
|
read_only_fields = fields
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
kwargs = self.context.get('request').parser_context.get('kwargs')
|
||||||
|
instance = get_object_or_404(models.News, pk=kwargs['pk'])
|
||||||
|
new_country = get_object_or_404(location_models.Country, code=kwargs['country_code'])
|
||||||
|
view_count_model = rating_models.ViewCount.objects.create(count=0)
|
||||||
|
instance.pk = None
|
||||||
|
instance.state = models.News.WAITING
|
||||||
|
instance.slugs = {locale: f'{slug}-{kwargs["country_code"]}'for locale, slug in instance.slugs.items()}
|
||||||
|
instance.country = new_country
|
||||||
|
instance.views_count = view_count_model
|
||||||
|
instance.save()
|
||||||
|
return instance
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,4 +14,5 @@ urlpatterns = [
|
||||||
path('<int:pk>/gallery/<int:image_id>/', views.NewsBackOfficeGalleryCreateDestroyView.as_view(),
|
path('<int:pk>/gallery/<int:image_id>/', views.NewsBackOfficeGalleryCreateDestroyView.as_view(),
|
||||||
name='gallery-create-destroy'),
|
name='gallery-create-destroy'),
|
||||||
path('<int:pk>/carousels/', views.NewsCarouselCreateDestroyView.as_view(), name='create-destroy-carousels'),
|
path('<int:pk>/carousels/', views.NewsCarouselCreateDestroyView.as_view(), name='create-destroy-carousels'),
|
||||||
|
path('<int:pk>/clone/<str:country_code>', views.NewsCloneView.as_view(), name='create-destroy-carousels'),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ from news import filters, models, serializers
|
||||||
from rating.tasks import add_rating
|
from rating.tasks import add_rating
|
||||||
from utils.permissions import IsCountryAdmin, IsContentPageManager
|
from utils.permissions import IsCountryAdmin, IsContentPageManager
|
||||||
from utils.views import CreateDestroyGalleryViewMixin, FavoritesCreateDestroyMixinView, CarouselCreateDestroyMixinView
|
from utils.views import CreateDestroyGalleryViewMixin, FavoritesCreateDestroyMixinView, CarouselCreateDestroyMixinView
|
||||||
from utils.serializers import ImageBaseSerializer
|
from utils.serializers import ImageBaseSerializer, EmptySerializer
|
||||||
|
|
||||||
|
|
||||||
class NewsMixinView:
|
class NewsMixinView:
|
||||||
|
|
@ -167,3 +167,10 @@ class NewsCarouselCreateDestroyView(CarouselCreateDestroyMixinView):
|
||||||
|
|
||||||
_model = models.News
|
_model = models.News
|
||||||
serializer_class = serializers.NewsCarouselCreateSerializer
|
serializer_class = serializers.NewsCarouselCreateSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class NewsCloneView(generics.CreateAPIView):
|
||||||
|
"""View for creating clone News"""
|
||||||
|
permission_classes = (permissions.AllowAny, )
|
||||||
|
serializer_class = serializers.NewsCloneCreateSerializer
|
||||||
|
queryset = models.News.objects.all()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user