latest award for establishment

This commit is contained in:
Kuroshini 2019-09-25 22:00:05 +03:00
parent 4d113a6916
commit 4388fb7346

View File

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