From c6cbb9bd3633f39f177add59de1cf5138c580f3e Mon Sep 17 00:00:00 2001 From: Anatoly Date: Thu, 5 Sep 2019 09:54:43 +0300 Subject: [PATCH] fixed return in establishment serializer last published review --- apps/establishment/serializers.py | 10 +++++++--- apps/establishment/views.py | 4 ++-- apps/review/models.py | 4 ++++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/apps/establishment/serializers.py b/apps/establishment/serializers.py index 0e30f402..9d30f478 100644 --- a/apps/establishment/serializers.py +++ b/apps/establishment/serializers.py @@ -137,8 +137,7 @@ class EstablishmentSerializer(serializers.ModelSerializer): allow_null=True) phones = ContactPhonesSerializer(read_only=True, many=True, ) emails = ContactEmailsSerializer(read_only=True, many=True, ) - reviews = ReviewSerializer(source='reviews.last', allow_null=True) - # comments = CommentSerializer(many=True, allow_null=True) + review = serializers.SerializerMethodField() comments = serializers.SerializerMethodField() employees = EstablishmentEmployeeSerializer(source='actual_establishment_employees', many=True) @@ -175,7 +174,7 @@ class EstablishmentSerializer(serializers.ModelSerializer): 'booking', 'phones', 'emails', - 'reviews', + 'review', 'comments', 'employees', 'menu', @@ -196,3 +195,8 @@ class EstablishmentSerializer(serializers.ModelSerializer): """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) + .order_by('-published_at').first()).data diff --git a/apps/establishment/views.py b/apps/establishment/views.py index 3d3566e8..9ae8679f 100644 --- a/apps/establishment/views.py +++ b/apps/establishment/views.py @@ -1,8 +1,9 @@ """Establishment app views.""" from rest_framework import generics, permissions + +from establishment import filters from establishment import models, serializers from utils.views import JWTGenericViewMixin -from establishment import filters class EstablishmentMixin: @@ -13,7 +14,6 @@ class EstablishmentMixin: def get_queryset(self): """Overrided method 'get_queryset'.""" - # todo: update ordering (last review) return models.Establishment.objects.all().prefetch_actual_employees() diff --git a/apps/review/models.py b/apps/review/models.py index 97eaad8c..d0076f68 100644 --- a/apps/review/models.py +++ b/apps/review/models.py @@ -19,6 +19,10 @@ class ReviewQuerySet(models.QuerySet): """Return reviews by year""" return self.filter(vintage=year) + def by_status(self, status): + """Filter by status""" + return self.filter(status=status) + class Review(BaseAttributes, TranslatedFieldsMixin): """Review model"""