From 4388fb73468d57473c7c227dc89d147c435bcba7 Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Wed, 25 Sep 2019 22:00:05 +0300 Subject: [PATCH] latest award for establishment --- apps/establishment/models.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/apps/establishment/models.py b/apps/establishment/models.py index f677737d..9c402a76 100644 --- a/apps/establishment/models.py +++ b/apps/establishment/models.py @@ -281,7 +281,7 @@ class Establishment(ProjectBaseMixin, URLImageMixin, TranslatedFieldsMixin): slug = models.SlugField(unique=True, max_length=50, null=True, verbose_name=_('Establishment slug'), editable=True) - awards = generic.GenericRelation(to='main.Award') + establishment_awards = generic.GenericRelation(to='main.Award') tags = generic.GenericRelation(to='main.MetaDataContent') reviews = generic.GenericRelation(to='review.Review') comments = generic.GenericRelation(to='comment.Comment') @@ -312,6 +312,19 @@ class Establishment(ProjectBaseMixin, URLImageMixin, TranslatedFieldsMixin): country = self.address.city.country return country.low_price, country.high_price + @property + def awards(self): + latest_employee_awards = Employee.objects.filter( + establishments=self + ).annotate( + latest_employee_award=Max('awards__vintage_year') + ).filter( + awards__vintage_year=F('awards__vintage_year') + ).get().awards + latest_establishment_award = self.establishment_awards.latest(field_name='vintage_year').get() + awards = [award for award in latest_employee_awards + [latest_establishment_award] if award is not None] + return [awards.sort(key=lambda award: award.vintage_year)[0]] + # todo: make via prefetch # @property # def subtypes(self):