From 9aafe0d69d04e4ec88871c6a84666681542b746a Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Fri, 27 Sep 2019 16:00:08 +0300 Subject: [PATCH] new establishment attribute --- apps/establishment/models.py | 12 ++++++------ apps/main/serializers.py | 4 ++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/apps/establishment/models.py b/apps/establishment/models.py index fcc6abe6..819cd172 100644 --- a/apps/establishment/models.py +++ b/apps/establishment/models.py @@ -191,6 +191,11 @@ 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( @@ -283,7 +288,7 @@ class Establishment(ProjectBaseMixin, URLImageMixin, TranslatedFieldsMixin): slug = models.SlugField(unique=True, max_length=50, null=True, verbose_name=_('Establishment slug'), editable=True) - establishment_awards = generic.GenericRelation(to='main.Award', related_query_name='establishment') + awards = generic.GenericRelation(to='main.Award', related_query_name='establishment') tags = generic.GenericRelation(to='main.MetaDataContent') reviews = generic.GenericRelation(to='review.Review') comments = generic.GenericRelation(to='comment.Comment') @@ -314,11 +319,6 @@ class Establishment(ProjectBaseMixin, URLImageMixin, TranslatedFieldsMixin): country = self.address.city.country return country.low_price, country.high_price - @property - def awards(self): - return [Award.objects.filter(Q(establishment=self) | Q(employees__establishments=self)).latest( - field_name='vintage_year')] - # todo: make via prefetch # @property # def subtypes(self): diff --git a/apps/main/serializers.py b/apps/main/serializers.py index c981f0ee..e16cdd9b 100644 --- a/apps/main/serializers.py +++ b/apps/main/serializers.py @@ -141,6 +141,7 @@ class CarouselListSerializer(serializers.ModelSerializer): image = serializers.URLField(source='image_url') awards = AwardBaseSerializer(many=True) vintage_year = serializers.IntegerField() + last_award = serializers.SerializerMethodField() class Meta: """Meta class.""" @@ -154,8 +155,11 @@ class CarouselListSerializer(serializers.ModelSerializer): 'public_mark', 'image', 'vintage_year', + 'last_award', ] + def get_last_award(self, obj): + return obj.the_most_recent_award() class PageSerializer(serializers.ModelSerializer): page_name = serializers.CharField()