is main establishment gallery
This commit is contained in:
parent
e0cbf1115b
commit
b7e64a0b26
|
|
@ -69,6 +69,12 @@ class Image(BaseAttributes, SORLImageMixin, PlatformMixin):
|
||||||
else:
|
else:
|
||||||
file_object.Acl().put(ACL='authenticated-read')
|
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
|
@property
|
||||||
def type(self) -> str:
|
def type(self) -> str:
|
||||||
if self.image:
|
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.utils.translation import gettext_lazy as _
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.shortcuts import get_object_or_404
|
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 account.serializers.common import UserBaseSerializer
|
||||||
from . import models
|
from . import models
|
||||||
|
|
||||||
|
|
@ -53,6 +53,7 @@ class EstablishmentGallerySerializer(serializers.ModelSerializer):
|
||||||
type = serializers.ChoiceField(read_only=True, choices=models.Image.MEDIA_TYPES)
|
type = serializers.ChoiceField(read_only=True, choices=models.Image.MEDIA_TYPES)
|
||||||
created_by = UserBaseSerializer(read_only=True, allow_null=True)
|
created_by = UserBaseSerializer(read_only=True, allow_null=True)
|
||||||
image_size_in_KB = serializers.DecimalField(read_only=True, decimal_places=2, max_digits=20)
|
image_size_in_KB = serializers.DecimalField(read_only=True, decimal_places=2, max_digits=20)
|
||||||
|
is_main = serializers.BooleanField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Image
|
model = models.Image
|
||||||
|
|
@ -65,6 +66,7 @@ class EstablishmentGallerySerializer(serializers.ModelSerializer):
|
||||||
'preview',
|
'preview',
|
||||||
'is_public',
|
'is_public',
|
||||||
'title',
|
'title',
|
||||||
|
'is_main',
|
||||||
'created_by',
|
'created_by',
|
||||||
'image_size_in_KB',
|
'image_size_in_KB',
|
||||||
)
|
)
|
||||||
|
|
@ -82,20 +84,28 @@ class EstablishmentGallerySerializer(serializers.ModelSerializer):
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
def create(self, validated_data):
|
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'])
|
establishment = get_object_or_404(klass=Establishment, pk=self.context['view'].kwargs['establishment_id'])
|
||||||
instance = super().create(validated_data)
|
instance = super().create(validated_data)
|
||||||
instance.created_by = self.context['request'].user
|
instance.created_by = self.context['request'].user
|
||||||
instance.establishment_set.add(establishment)
|
instance.establishment_set.add(establishment)
|
||||||
instance.save()
|
instance.save()
|
||||||
|
EstablishmentGallery.objects.filter(
|
||||||
|
image=instance
|
||||||
|
).update(is_main=is_main)
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
def update(self, instance: models.Image, validated_data):
|
def update(self, instance: models.Image, validated_data):
|
||||||
if instance.is_public != validated_data.get('is_public'):
|
if instance.is_public != validated_data.get('is_public'):
|
||||||
instance.set_pubic(validated_data.get('is_public', True))
|
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)
|
return super().update(instance, validated_data)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CropImageSerializer(ImageSerializer):
|
class CropImageSerializer(ImageSerializer):
|
||||||
"""Serializers for image crops."""
|
"""Serializers for image crops."""
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ class MediaForEstablishmentView(ImageBaseView, generics.ListCreateAPIView):
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return super().get_queryset().filter(establishment__pk=self.kwargs['establishment_id'])\
|
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):
|
class MediaUpdateView(ImageBaseView, generics.UpdateAPIView):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user