is main establishment gallery
This commit is contained in:
parent
e0cbf1115b
commit
b7e64a0b26
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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."""
|
||||
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user