Latest award for carousel

This commit is contained in:
Kuroshini 2019-09-27 22:56:44 +03:00
parent 9aafe0d69d
commit d42bf43d19
2 changed files with 12 additions and 6 deletions

View File

@ -191,11 +191,6 @@ class EstablishmentQuerySet(models.QuerySet):
return self.filter(id__in=subquery_filter_by_distance) \ return self.filter(id__in=subquery_filter_by_distance) \
.order_by('-reviews__published_at') .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): def prefetch_actual_employees(self):
"""Prefetch actual employees.""" """Prefetch actual employees."""
return self.prefetch_related( return self.prefetch_related(
@ -363,6 +358,13 @@ class Establishment(ProjectBaseMixin, URLImageMixin, TranslatedFieldsMixin):
""" """
return self.address.coordinates 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): class Position(BaseAttributes, TranslatedFieldsMixin):
"""Position model.""" """Position model."""

View File

@ -3,6 +3,7 @@ from rest_framework import serializers
from advertisement.serializers.web import AdvertisementSerializer from advertisement.serializers.web import AdvertisementSerializer
from location.serializers import CountrySerializer from location.serializers import CountrySerializer
from main import models from main import models
from establishment.models import Establishment
from utils.serializers import TranslatedField from utils.serializers import TranslatedField
@ -159,7 +160,10 @@ class CarouselListSerializer(serializers.ModelSerializer):
] ]
def get_last_award(self, obj): 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): class PageSerializer(serializers.ModelSerializer):
page_name = serializers.CharField() page_name = serializers.CharField()