diff --git a/apps/establishment/serializers.py b/apps/establishment/serializers.py index 78a30131..5883ad42 100644 --- a/apps/establishment/serializers.py +++ b/apps/establishment/serializers.py @@ -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) diff --git a/apps/establishment/views.py b/apps/establishment/views.py index 9ae8679f..36c56fdd 100644 --- a/apps/establishment/views.py +++ b/apps/establishment/views.py @@ -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):