Review fixes

This commit is contained in:
Kuroshini 2019-09-30 16:40:46 +03:00
parent beb031d0b6
commit 33478580aa
4 changed files with 16 additions and 20 deletions

View File

@ -14,10 +14,8 @@ from django.utils.translation import gettext_lazy as _
from phonenumber_field.modelfields import PhoneNumberField
from collection.models import Collection
from main.models import MetaDataContent
from main.models import Award, MetaDataContent
from location.models import Address
from collection.models import Collection
from main.models import Award
from review.models import Review
from utils.models import (ProjectBaseMixin, TJSONField, URLImageMixin,
TranslatedFieldsMixin, BaseAttributes)
@ -335,9 +333,9 @@ class Establishment(ProjectBaseMixin, URLImageMixin, TranslatedFieldsMixin):
@property
def vintage_year(self):
review_qs = self.reviews.by_status(Review.READY)
if review_qs.exists():
return review_qs.last().vintage
last_review = self.reviews.by_status(Review.READY).last()
if last_review:
return last_review.vintage
@property
def best_price_menu(self):
@ -367,10 +365,8 @@ class Establishment(ProjectBaseMixin, URLImageMixin, TranslatedFieldsMixin):
@property
def the_most_recent_award(self):
awards = Award.objects.filter(Q(establishment=self) | Q(employees__establishments=self))
if awards:
return awards.latest(field_name='vintage_year')
return {}
return Award.objects.filter(Q(establishment=self) | Q(employees__establishments=self)).latest(
field_name='vintage_year')
class Position(BaseAttributes, TranslatedFieldsMixin):

View File

@ -198,8 +198,8 @@ class EstablishmentDetailSerializer(EstablishmentListSerializer):
menu = MenuSerializers(source='menu_set', many=True, read_only=True)
best_price_menu = serializers.DecimalField(max_digits=14, decimal_places=2, read_only=True)
best_price_carte = serializers.DecimalField(max_digits=14, decimal_places=2, read_only=True)
vintage_year = serializers.ReadOnlyField()
class Meta(EstablishmentListSerializer.Meta):
"""Meta class."""

View File

@ -318,9 +318,9 @@ class Carousel(models.Model):
@property
def vintage_year(self):
if hasattr(self.content_object, 'reviews'):
review_qs = self.content_object.reviews.by_status(Review.READY)
if review_qs.exists():
return review_qs.last().vintage
last_review = self.content_object.reviews.by_status(Review.READY).last()
if last_review:
return last_review.vintage
@property
def toque_number(self):
@ -342,6 +342,11 @@ class Carousel(models.Model):
if hasattr(self.content_object, 'slug'):
return self.content_object.slug
@property
def the_most_recent_award(self):
if hasattr(self.content_object, 'the_most_recent_award'):
return self.content_object.the_most_recent_award
@property
def model_name(self):
return self.content_object.__class__.__name__

View File

@ -142,7 +142,7 @@ class CarouselListSerializer(serializers.ModelSerializer):
image = serializers.URLField(source='image_url')
awards = AwardBaseSerializer(many=True)
vintage_year = serializers.IntegerField()
last_award = serializers.SerializerMethodField()
last_award = AwardBaseSerializer(source='the_most_recent_award', allow_null=True)
class Meta:
"""Meta class."""
@ -160,11 +160,6 @@ class CarouselListSerializer(serializers.ModelSerializer):
'slug',
]
def get_last_award(self, obj):
if isinstance(obj.content_object, Establishment):
award = obj.content_object.the_most_recent_award
return AwardBaseSerializer().to_representation(award) if award else None
return None
class PageSerializer(serializers.ModelSerializer):
page_name = serializers.CharField()