From 990b15f1d78843a1c59edec8ee599ffbd0b42c5e Mon Sep 17 00:00:00 2001 From: "a.gorbunov" Date: Tue, 4 Feb 2020 11:11:52 +0000 Subject: [PATCH 1/2] added new fields --- apps/establishment/models.py | 12 ++++++++++++ apps/establishment/serializers/common.py | 8 +++++++- apps/establishment/views/web.py | 3 ++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/apps/establishment/models.py b/apps/establishment/models.py index fc734e8c..b6b96657 100644 --- a/apps/establishment/models.py +++ b/apps/establishment/models.py @@ -553,6 +553,10 @@ class Establishment(GalleryMixin, ProjectBaseMixin, URLImageMixin, PUBLISHED = 2 UNPICKED = 3 WAITING = 4 + HIDDEN = 5 + DELETED = 6 + OUT_OF_SELECTION = 7 + UNPUBLISHED = 8 STATUS_CHOICES = ( (ABANDONED, _('Abandoned')), @@ -560,6 +564,10 @@ class Establishment(GalleryMixin, ProjectBaseMixin, URLImageMixin, (PUBLISHED, _('Published')), (UNPICKED, _('Unpicked')), (WAITING, _('Waiting')), + (HIDDEN, _('Hidden')), + (DELETED, _('Deleted')), + (OUT_OF_SELECTION, _('Out of selection')), + (UNPUBLISHED, _('Unpublished')), ) old_id = models.PositiveIntegerField(_('old id'), blank=True, null=True, default=None) @@ -844,6 +852,10 @@ class Establishment(GalleryMixin, ProjectBaseMixin, URLImageMixin, def distillery_type_indexing(self): return self.tags.filter(category__index_name='distillery_type') + @property + def food_producer_indexing(self): + return self.tags.filter(category__index_name='producer_type') + @property def last_comment(self): if hasattr(self, 'comments_prefetched') and len(self.comments_prefetched): diff --git a/apps/establishment/serializers/common.py b/apps/establishment/serializers/common.py index f3616c4f..d958c5ff 100644 --- a/apps/establishment/serializers/common.py +++ b/apps/establishment/serializers/common.py @@ -15,7 +15,7 @@ from location.serializers import ( EstablishmentWineRegionBaseSerializer, ) from main.serializers import AwardSerializer, CurrencySerializer -from review.serializers import ReviewShortSerializer +from review.serializers import ReviewShortSerializer, ReviewBaseSerializer from tag.serializers import TagBaseSerializer from timetable.serialziers import ScheduleRUDSerializer from utils import exceptions as utils_exceptions @@ -408,6 +408,8 @@ class EstablishmentListRetrieveSerializer(EstablishmentBaseSerializer): restaurant_cuisine = TagBaseSerializer(read_only=True, many=True, allow_null=True) artisan_category = TagBaseSerializer(read_only=True, many=True, allow_null=True) distillery_type = TagBaseSerializer(read_only=True, many=True, allow_null=True) + food_producer = TagBaseSerializer(read_only=True, many=True, allow_null=True) + reviews = ReviewBaseSerializer(read_only=True, many=True) class Meta(EstablishmentBaseSerializer.Meta): """Meta class.""" @@ -418,6 +420,10 @@ class EstablishmentListRetrieveSerializer(EstablishmentBaseSerializer): 'restaurant_cuisine', 'artisan_category', 'distillery_type', + 'food_producer', + 'vintage_year', + 'reviews', + 'contact_phones', ] diff --git a/apps/establishment/views/web.py b/apps/establishment/views/web.py index 6ce8428b..c18ae2e8 100644 --- a/apps/establishment/views/web.py +++ b/apps/establishment/views/web.py @@ -38,7 +38,8 @@ class EstablishmentListView(EstablishmentMixinView, generics.ListAPIView): .with_certain_tag_category_related('category', 'restaurant_category') \ .with_certain_tag_category_related('cuisine', 'restaurant_cuisine') \ .with_certain_tag_category_related('shop_category', 'artisan_category') \ - .with_certain_tag_category_related('distillery_type', 'distillery_type') + .with_certain_tag_category_related('distillery_type', 'distillery_type') \ + .with_certain_tag_category_related('food_producer', 'producer_type') class EstablishmentSimilarView(EstablishmentListView): From 26b76c0b8c6f5becf1687e922f1ace11391a19c7 Mon Sep 17 00:00:00 2001 From: "a.gorbunov" Date: Tue, 4 Feb 2020 11:31:13 +0000 Subject: [PATCH 2/2] Optimize query --- .../migrations/0093_auto_20200204_1120.py | 18 ++++++++++++++++++ apps/establishment/models.py | 4 ++++ apps/establishment/serializers/common.py | 1 + apps/establishment/views/web.py | 2 +- 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100755 apps/establishment/migrations/0093_auto_20200204_1120.py diff --git a/apps/establishment/migrations/0093_auto_20200204_1120.py b/apps/establishment/migrations/0093_auto_20200204_1120.py new file mode 100755 index 00000000..f507500e --- /dev/null +++ b/apps/establishment/migrations/0093_auto_20200204_1120.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.7 on 2020-02-04 11:20 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('establishment', '0092_merge_20200131_0835'), + ] + + operations = [ + migrations.AlterField( + model_name='establishment', + name='status', + field=models.PositiveSmallIntegerField(choices=[(0, 'Abandoned'), (1, 'Closed'), (2, 'Published'), (3, 'Unpicked'), (4, 'Waiting'), (5, 'Hidden'), (6, 'Deleted'), (7, 'Out of selection'), (8, 'Unpublished')], default=4, verbose_name='Status'), + ), + ] diff --git a/apps/establishment/models.py b/apps/establishment/models.py index b6b96657..923bf980 100644 --- a/apps/establishment/models.py +++ b/apps/establishment/models.py @@ -134,6 +134,10 @@ class EstablishmentQuerySet(models.QuerySet): """Return qs with related schedule.""" return self.prefetch_related('schedule') + def with_reviews(self): + """Return qs with related reviews.""" + return self.prefetch_related('reviews') + def with_currency_related(self): """Return qs with related """ return self.prefetch_related('currency') diff --git a/apps/establishment/serializers/common.py b/apps/establishment/serializers/common.py index d958c5ff..95d97a9d 100644 --- a/apps/establishment/serializers/common.py +++ b/apps/establishment/serializers/common.py @@ -424,6 +424,7 @@ class EstablishmentListRetrieveSerializer(EstablishmentBaseSerializer): 'vintage_year', 'reviews', 'contact_phones', + 'public_mark' ] diff --git a/apps/establishment/views/web.py b/apps/establishment/views/web.py index c18ae2e8..dad5f049 100644 --- a/apps/establishment/views/web.py +++ b/apps/establishment/views/web.py @@ -33,7 +33,7 @@ class EstablishmentListView(EstablishmentMixinView, generics.ListAPIView): serializer_class = serializers.EstablishmentListRetrieveSerializer def get_queryset(self): - return super().get_queryset().with_schedule() \ + return super().get_queryset().with_schedule().with_reviews() \ .with_extended_address_related().with_currency_related() \ .with_certain_tag_category_related('category', 'restaurant_category') \ .with_certain_tag_category_related('cuisine', 'restaurant_cuisine') \