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) \
.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."""

View File

@ -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()