is main establishment gallery

This commit is contained in:
Kuroshini 2020-02-07 15:09:11 +03:00
parent e0cbf1115b
commit b7e64a0b26
3 changed files with 19 additions and 3 deletions

View File

@ -69,6 +69,12 @@ class Image(BaseAttributes, SORLImageMixin, PlatformMixin):
else:
file_object.Acl().put(ACL='authenticated-read')
@property
def is_main(self) -> bool:
establishment_gallery_list = list(self.establishment_gallery.all())
if establishment_gallery_list and len(establishment_gallery_list):
return establishment_gallery_list[0].is_main
@property
def type(self) -> str:
if self.image:

View File

@ -6,7 +6,7 @@ from sorl.thumbnail.parsers import parse_crop, ThumbnailParseError
from django.utils.translation import gettext_lazy as _
from django.conf import settings
from django.shortcuts import get_object_or_404
from establishment.models import Establishment
from establishment.models import Establishment, EstablishmentGallery
from account.serializers.common import UserBaseSerializer
from . import models
@ -53,6 +53,7 @@ class EstablishmentGallerySerializer(serializers.ModelSerializer):
type = serializers.ChoiceField(read_only=True, choices=models.Image.MEDIA_TYPES)
created_by = UserBaseSerializer(read_only=True, allow_null=True)
image_size_in_KB = serializers.DecimalField(read_only=True, decimal_places=2, max_digits=20)
is_main = serializers.BooleanField()
class Meta:
model = models.Image
@ -65,6 +66,7 @@ class EstablishmentGallerySerializer(serializers.ModelSerializer):
'preview',
'is_public',
'title',
'is_main',
'created_by',
'image_size_in_KB',
)
@ -82,20 +84,28 @@ class EstablishmentGallerySerializer(serializers.ModelSerializer):
return attrs
def create(self, validated_data):
is_main = validated_data.pop('is_main')
establishment = get_object_or_404(klass=Establishment, pk=self.context['view'].kwargs['establishment_id'])
instance = super().create(validated_data)
instance.created_by = self.context['request'].user
instance.establishment_set.add(establishment)
instance.save()
EstablishmentGallery.objects.filter(
image=instance
).update(is_main=is_main)
return instance
def update(self, instance: models.Image, validated_data):
if instance.is_public != validated_data.get('is_public'):
instance.set_pubic(validated_data.get('is_public', True))
if 'is_main' in validated_data:
is_main = validated_data.pop('is_main')
EstablishmentGallery.objects.filter(
image=instance
).update(is_main=is_main)
return super().update(instance, validated_data)
class CropImageSerializer(ImageSerializer):
"""Serializers for image crops."""

View File

@ -30,7 +30,7 @@ class MediaForEstablishmentView(ImageBaseView, generics.ListCreateAPIView):
def get_queryset(self):
return super().get_queryset().filter(establishment__pk=self.kwargs['establishment_id'])\
.order_by('-order').prefetch_related('created_by')
.order_by('-order').prefetch_related('created_by', 'establishment_gallery')
class MediaUpdateView(ImageBaseView, generics.UpdateAPIView):