diff --git a/apps/establishment/models.py b/apps/establishment/models.py index 819cd172..23bc3c8f 100644 --- a/apps/establishment/models.py +++ b/apps/establishment/models.py @@ -191,11 +191,6 @@ class EstablishmentQuerySet(models.QuerySet): return self.filter(id__in=subquery_filter_by_distance) \ .order_by('-reviews__published_at') - def the_most_recent_award(self): - """ Returns the most recent award for carousel """ - return Award.objects.filter(Q(establishment=self) | Q(employees__establishments=self)).latest( - field_name='vintage_year') - def prefetch_actual_employees(self): """Prefetch actual employees.""" return self.prefetch_related( @@ -363,6 +358,13 @@ class Establishment(ProjectBaseMixin, URLImageMixin, TranslatedFieldsMixin): """ return self.address.coordinates + @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 {} + class Position(BaseAttributes, TranslatedFieldsMixin): """Position model.""" diff --git a/apps/main/serializers.py b/apps/main/serializers.py index e16cdd9b..a0b49525 100644 --- a/apps/main/serializers.py +++ b/apps/main/serializers.py @@ -3,6 +3,7 @@ from rest_framework import serializers from advertisement.serializers.web import AdvertisementSerializer from location.serializers import CountrySerializer from main import models +from establishment.models import Establishment from utils.serializers import TranslatedField @@ -159,7 +160,10 @@ class CarouselListSerializer(serializers.ModelSerializer): ] def get_last_award(self, obj): - return obj.the_most_recent_award() + 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()