added to same_theme and should_read preview_image_url, added UniqueConstraint to NewsGallery model
This commit is contained in:
parent
174e580c20
commit
7d0acba51b
18
apps/news/migrations/0029_auto_20191025_1241.py
Normal file
18
apps/news/migrations/0029_auto_20191025_1241.py
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 2.2.4 on 2019-10-25 12:41
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('gallery', '0003_auto_20191003_1228'),
|
||||||
|
('news', '0028_auto_20191024_1649'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='newsgallery',
|
||||||
|
unique_together={('news', 'image'), ('news', 'is_main')},
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -235,4 +235,4 @@ class NewsGallery(models.Model):
|
||||||
"""NewsGallery meta class."""
|
"""NewsGallery meta class."""
|
||||||
verbose_name = _('news gallery')
|
verbose_name = _('news gallery')
|
||||||
verbose_name_plural = _('news galleries')
|
verbose_name_plural = _('news galleries')
|
||||||
unique_together = ('news', 'is_main')
|
unique_together = (('news', 'is_main'), ('news', 'image'))
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,17 @@ class NewsBaseSerializer(ProjectModelSerializer):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class NewsSimilarListSerializer(NewsBaseSerializer):
|
||||||
|
"""List serializer for News model."""
|
||||||
|
preview_image_url = serializers.URLField()
|
||||||
|
|
||||||
|
class Meta(NewsBaseSerializer.Meta):
|
||||||
|
"""Meta class."""
|
||||||
|
fields = NewsBaseSerializer.Meta.fields + (
|
||||||
|
'preview_image_url',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NewsListSerializer(NewsBaseSerializer):
|
class NewsListSerializer(NewsBaseSerializer):
|
||||||
"""List serializer for News model."""
|
"""List serializer for News model."""
|
||||||
|
|
||||||
|
|
@ -192,8 +203,8 @@ class NewsDetailSerializer(NewsBaseSerializer):
|
||||||
class NewsDetailWebSerializer(NewsDetailSerializer):
|
class NewsDetailWebSerializer(NewsDetailSerializer):
|
||||||
"""News detail serializer for web users.."""
|
"""News detail serializer for web users.."""
|
||||||
|
|
||||||
same_theme = NewsBaseSerializer(many=True, read_only=True)
|
same_theme = NewsSimilarListSerializer(many=True, read_only=True)
|
||||||
should_read = NewsBaseSerializer(many=True, read_only=True)
|
should_read = NewsSimilarListSerializer(many=True, read_only=True)
|
||||||
agenda = AgendaSerializer()
|
agenda = AgendaSerializer()
|
||||||
banner = NewsBannerSerializer()
|
banner = NewsBannerSerializer()
|
||||||
|
|
||||||
|
|
@ -266,7 +277,6 @@ class NewsBackOfficeGallerySerializer(serializers.ModelSerializer):
|
||||||
"""Override validate method."""
|
"""Override validate method."""
|
||||||
news_pk = self.get_request_kwargs().get('pk')
|
news_pk = self.get_request_kwargs().get('pk')
|
||||||
image_id = self.get_request_kwargs().get('image_id')
|
image_id = self.get_request_kwargs().get('image_id')
|
||||||
is_main = attrs.get('is_main')
|
|
||||||
|
|
||||||
news_qs = models.News.objects.filter(pk=news_pk)
|
news_qs = models.News.objects.filter(pk=news_pk)
|
||||||
image_qs = Image.objects.filter(id=image_id)
|
image_qs = Image.objects.filter(id=image_id)
|
||||||
|
|
@ -279,12 +289,6 @@ class NewsBackOfficeGallerySerializer(serializers.ModelSerializer):
|
||||||
news = news_qs.first()
|
news = news_qs.first()
|
||||||
image = image_qs.first()
|
image = image_qs.first()
|
||||||
|
|
||||||
if news.news_gallery.filter(image=image).exists():
|
|
||||||
raise serializers.ValidationError({'detail': _('Image is already added')})
|
|
||||||
|
|
||||||
if is_main and news.news_gallery.main_image().exists():
|
|
||||||
raise serializers.ValidationError({'detail': _('Main image is already added')})
|
|
||||||
|
|
||||||
attrs['news'] = news
|
attrs['news'] = news
|
||||||
attrs['image'] = image
|
attrs['image'] = image
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ class NewsBackOfficeGalleryCreateDestroyView(NewsBackOfficeMixinView,
|
||||||
return gallery
|
return gallery
|
||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
"""Override create method"""
|
"""Overridden create method"""
|
||||||
super().create(request, *args, **kwargs)
|
super().create(request, *args, **kwargs)
|
||||||
return Response(status=status.HTTP_201_CREATED)
|
return Response(status=status.HTTP_201_CREATED)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user