added to same_theme and should_read preview_image_url, added UniqueConstraint to NewsGallery model

This commit is contained in:
Anatoly 2019-10-25 16:18:16 +03:00
parent 174e580c20
commit 7d0acba51b
4 changed files with 33 additions and 11 deletions

View 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')},
),
]

View File

@ -235,4 +235,4 @@ class NewsGallery(models.Model):
"""NewsGallery meta class."""
verbose_name = _('news gallery')
verbose_name_plural = _('news galleries')
unique_together = ('news', 'is_main')
unique_together = (('news', 'is_main'), ('news', 'image'))

View File

@ -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):
"""List serializer for News model."""
@ -192,8 +203,8 @@ class NewsDetailSerializer(NewsBaseSerializer):
class NewsDetailWebSerializer(NewsDetailSerializer):
"""News detail serializer for web users.."""
same_theme = NewsBaseSerializer(many=True, read_only=True)
should_read = NewsBaseSerializer(many=True, read_only=True)
same_theme = NewsSimilarListSerializer(many=True, read_only=True)
should_read = NewsSimilarListSerializer(many=True, read_only=True)
agenda = AgendaSerializer()
banner = NewsBannerSerializer()
@ -266,7 +277,6 @@ class NewsBackOfficeGallerySerializer(serializers.ModelSerializer):
"""Override validate method."""
news_pk = self.get_request_kwargs().get('pk')
image_id = self.get_request_kwargs().get('image_id')
is_main = attrs.get('is_main')
news_qs = models.News.objects.filter(pk=news_pk)
image_qs = Image.objects.filter(id=image_id)
@ -279,12 +289,6 @@ class NewsBackOfficeGallerySerializer(serializers.ModelSerializer):
news = news_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['image'] = image

View File

@ -119,7 +119,7 @@ class NewsBackOfficeGalleryCreateDestroyView(NewsBackOfficeMixinView,
return gallery
def create(self, request, *args, **kwargs):
"""Override create method"""
"""Overridden create method"""
super().create(request, *args, **kwargs)
return Response(status=status.HTTP_201_CREATED)