refactored establishment serializers

This commit is contained in:
Anatoly 2019-09-05 15:50:52 +03:00
parent a133cfe1dd
commit 111e859f74
2 changed files with 32 additions and 20 deletions

View File

@ -122,15 +122,42 @@ class EstablishmentEmployeeSerializer(serializers.ModelSerializer):
fields = ('id', 'name', 'position_translated', 'awards')
class EstablishmentSerializer(serializers.ModelSerializer):
class EstablishmentListSerializer(serializers.ModelSerializer):
"""Serializer for Establishment model."""
name_translated = serializers.CharField(allow_null=True)
description_translated = serializers.CharField(allow_null=True)
type = EstablishmentTypeSerializer(source='establishment_type')
subtypes = EstablishmentSubTypeSerializer(many=True)
address = AddressSerializer()
tags = MetaDataContentSerializer(many=True)
preview_image = serializers.SerializerMethodField()
class Meta:
"""Meta class."""
model = models.Establishment
fields = (
'id',
'name_translated',
'price_level',
'toque_number',
'public_mark',
'type',
'subtypes',
'preview_image',
'address',
'tags',
)
def get_preview_image(self, obj):
"""Get preview image"""
return obj.get_full_image_url(request=self.context.get('request'),
thumbnail_key='establishment_preview')
class EstablishmentDetailSerializer(EstablishmentListSerializer):
"""Serializer for Establishment model."""
description_translated = serializers.CharField(allow_null=True)
awards = AwardSerializer(many=True)
schedule = EstablishmentScheduleSerializer(source='schedule.schedule',
many=True,
@ -151,20 +178,10 @@ class EstablishmentSerializer(serializers.ModelSerializer):
"""Meta class."""
model = models.Establishment
fields = (
'id',
'name_translated',
fields = EstablishmentListSerializer.Meta.fields + (
'description_translated',
'public_mark',
'price_level',
'toque_number',
'price_level',
'type',
'subtypes',
'image',
'preview_image',
'address',
'tags',
'awards',
'schedule',
'website',
@ -189,11 +206,6 @@ class EstablishmentSerializer(serializers.ModelSerializer):
context={'request': self.context.get('request')},
many=True).data
def get_preview_image(self, obj):
"""Get preview image"""
return obj.get_full_image_url(request=self.context.get('request'),
thumbnail_key='establishment_preview')
def get_review(self, obj):
"""Serializer method for getting last published review"""
return ReviewSerializer(obj.reviews.by_status(status=review_models.Review.READY)

View File

@ -10,7 +10,6 @@ class EstablishmentMixin:
"""Establishment mixin."""
permission_classes = (permissions.AllowAny,)
serializer_class = serializers.EstablishmentSerializer
def get_queryset(self):
"""Overrided method 'get_queryset'."""
@ -19,7 +18,7 @@ class EstablishmentMixin:
class EstablishmentListView(EstablishmentMixin, JWTGenericViewMixin, generics.ListAPIView):
"""Resource for getting a list of establishments."""
serializer_class = serializers.EstablishmentListSerializer
filter_class = filters.EstablishmentFilter
def get_queryset(self):
@ -30,6 +29,7 @@ class EstablishmentListView(EstablishmentMixin, JWTGenericViewMixin, generics.Li
class EstablishmentRetrieveView(EstablishmentMixin, JWTGenericViewMixin, generics.RetrieveAPIView):
"""Resource for getting a establishment."""
serializer_class = serializers.EstablishmentDetailSerializer
class EstablishmentTypeListView(JWTGenericViewMixin, generics.ListAPIView):