From 00bcd6c2050abaefe8ce0df5c9cbbf3b9bc4437d Mon Sep 17 00:00:00 2001 From: evgeniy-st Date: Wed, 30 Oct 2019 11:59:19 +0300 Subject: [PATCH 1/7] added merge migrations --- .../migrations/0046_merge_20191030_0858.py | 14 ++++++++++++++ .../migrations/0019_merge_20191030_0858.py | 14 ++++++++++++++ apps/news/migrations/0032_merge_20191030_0858.py | 14 ++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 apps/establishment/migrations/0046_merge_20191030_0858.py create mode 100644 apps/location/migrations/0019_merge_20191030_0858.py create mode 100644 apps/news/migrations/0032_merge_20191030_0858.py diff --git a/apps/establishment/migrations/0046_merge_20191030_0858.py b/apps/establishment/migrations/0046_merge_20191030_0858.py new file mode 100644 index 00000000..39153492 --- /dev/null +++ b/apps/establishment/migrations/0046_merge_20191030_0858.py @@ -0,0 +1,14 @@ +# Generated by Django 2.2.4 on 2019-10-30 08:58 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('establishment', '0045_auto_20191029_0719'), + ('establishment', '0044_position_index_name'), + ] + + operations = [ + ] diff --git a/apps/location/migrations/0019_merge_20191030_0858.py b/apps/location/migrations/0019_merge_20191030_0858.py new file mode 100644 index 00000000..268dc08f --- /dev/null +++ b/apps/location/migrations/0019_merge_20191030_0858.py @@ -0,0 +1,14 @@ +# Generated by Django 2.2.4 on 2019-10-30 08:58 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('location', '0018_address_old_id'), + ('location', '0013_wineappellation_wineregion'), + ] + + operations = [ + ] diff --git a/apps/news/migrations/0032_merge_20191030_0858.py b/apps/news/migrations/0032_merge_20191030_0858.py new file mode 100644 index 00000000..2936caef --- /dev/null +++ b/apps/news/migrations/0032_merge_20191030_0858.py @@ -0,0 +1,14 @@ +# Generated by Django 2.2.4 on 2019-10-30 08:58 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('news', '0029_auto_20191025_1241'), + ('news', '0031_merge_20191029_0858'), + ] + + operations = [ + ] From 7805a6305585d33e9ae10bdbd88b4b8e7e488a39 Mon Sep 17 00:00:00 2001 From: evgeniy-st Date: Wed, 30 Oct 2019 12:15:40 +0300 Subject: [PATCH 2/7] remove establishment document filtering by country code --- apps/search_indexes/views.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/apps/search_indexes/views.py b/apps/search_indexes/views.py index 72ce2efa..2bcd2ea4 100644 --- a/apps/search_indexes/views.py +++ b/apps/search_indexes/views.py @@ -61,9 +61,6 @@ class EstablishmentDocumentViewSet(BaseDocumentViewSet): def get_queryset(self): qs = super(EstablishmentDocumentViewSet, self).get_queryset() qs = qs.filter('match', is_publish=True) - if self.request.country_code: - qs = qs.filter('term', - **{'address.city.country.code': self.request.country_code}) return qs filter_backends = [ From 6fcfb263d3548d4475f88c9eecd412e88bf176a8 Mon Sep 17 00:00:00 2001 From: Anatoly Date: Wed, 30 Oct 2019 14:23:40 +0300 Subject: [PATCH 3/7] fix ProductModelAdmin --- apps/product/admin.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/product/admin.py b/apps/product/admin.py index b3dbc0cd..b77f2cbc 100644 --- a/apps/product/admin.py +++ b/apps/product/admin.py @@ -1,10 +1,11 @@ """Product admin conf.""" from django.contrib import admin +from utils.admin import BaseModelAdminMixin from .models import Product, ProductType, ProductSubType @admin.register(Product) -class ProductAdmin(admin.ModelAdmin): +class ProductAdmin(BaseModelAdminMixin, admin.ModelAdmin): """Admin page for model Product.""" From 8c3306628ea5cce3cf478fc187ce72fe7baa8bf1 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 30 Oct 2019 15:48:32 +0300 Subject: [PATCH 4/7] news transfer --- apps/news/transfer_data.py | 10 ++++-- apps/transfer/serializers/news.py | 57 +++++++++++++++++++++++-------- project/settings/base.py | 4 +-- project/settings/development.py | 4 +-- 4 files changed, 54 insertions(+), 21 deletions(-) diff --git a/apps/news/transfer_data.py b/apps/news/transfer_data.py index 7524a6cc..bdd1c513 100644 --- a/apps/news/transfer_data.py +++ b/apps/news/transfer_data.py @@ -4,6 +4,7 @@ from django.db.models import Aggregate, CharField, Value from django.db.models import IntegerField, F from news.models import NewsType +from tag.models import TagCategory from transfer.models import PageTexts from transfer.serializers.news import NewsSerializer @@ -23,16 +24,21 @@ class GroupConcat(Aggregate): def transfer_news(): news_type, _ = NewsType.objects.get_or_create(name='News') + tag_cat, _ = TagCategory.objects.get_or_create(index_name='tag', public=True) + news_type.tag_categories.add(tag_cat) + news_type.save() + queryset = PageTexts.objects.filter( page__type='News', ).annotate( - news_type=Value(news_type.id, output_field=IntegerField()), + tag_cat_id=Value(tag_cat.id, output_field=IntegerField()), + news_type_id=Value(news_type.id, output_field=IntegerField()), country_code=F('page__site__country_code_2'), news_title=F('page__root_title'), image=F('page__attachment_suffix_url'), template=F('page__template'), tags=GroupConcat('page__tags__id'), - )[:100] + ) serialized_data = NewsSerializer(data=list(queryset.values()), many=True) if serialized_data.is_valid(): diff --git a/apps/transfer/serializers/news.py b/apps/transfer/serializers/news.py index cafbe994..4159be67 100644 --- a/apps/transfer/serializers/news.py +++ b/apps/transfer/serializers/news.py @@ -1,15 +1,18 @@ from rest_framework import serializers +from gallery.models import Image from location.models import Country -from news.models import News -from tag.models import TagCategory +from news.models import News, NewsGallery +from tag.models import Tag +from transfer.models import PageMetadata from utils.legacy_parser import parse_legacy_news_content from utils.slug_generator import generate_unique_slug class NewsSerializer(serializers.Serializer): - old_id = serializers.IntegerField() - news_type = serializers.IntegerField() + id = serializers.IntegerField() + tag_cat_id = serializers.IntegerField() + news_type_id = serializers.IntegerField() news_title = serializers.CharField() title = serializers.CharField() body = serializers.CharField(allow_null=True) @@ -25,8 +28,8 @@ class NewsSerializer(serializers.Serializer): def create(self, validated_data): payload = { - 'old_id': validated_data['old_id'], - 'news_type': validated_data['news_type'], + 'old_id': validated_data['id'], + 'news_type_id': validated_data['news_type_id'], 'title': {validated_data['locale']: validated_data['news_title']}, 'subtitle': {validated_data['locale']: validated_data['title']}, 'description': self.get_description(validated_data), @@ -39,23 +42,47 @@ class NewsSerializer(serializers.Serializer): obj = News.objects.create(**payload) tags = self.get_tags(validated_data) + for tag in tags: + obj.tags.add(tag) + obj.save() + self.make_gallery(validated_data, obj) return obj - # TODO: теги - # TODO: галерея с картинкой + @staticmethod + def make_gallery(data, obj): + if not data['image'] or data['image'] == 'default/missing.png': + return + + img = Image.objects.create( + image=data['image'], + title=data['news_title'], + ) + NewsGallery.objects.create( + news=obj, + image=img, + is_main=True, + ) @staticmethod def get_tags(data): + results = [] if not data['tags']: - return None - tag_cat, _ = TagCategory.objects.get_or_create( - public=True, - label={'en-GB': 'tag'}, - index_name='tag', - country='tag', - ) + return results + meta_ids = (int(_id) for _id in data['tags'].split(',')) + tags = PageMetadata.objects.filter( + id__in=meta_ids, + key='tag', + value__isnull=False, + ) + for old_tag in tags: + tag, _ = Tag.objects.get_or_create( + category_id=data['tag_cat_id'], + label={data['locale']: old_tag.value}, + ) + results.append(tag) + return results @staticmethod def get_description(data): diff --git a/project/settings/base.py b/project/settings/base.py index 3d3ec8ca..6979382e 100644 --- a/project/settings/base.py +++ b/project/settings/base.py @@ -329,8 +329,8 @@ REDOC_SETTINGS = { # RabbitMQ # BROKER_URL = 'amqp://rabbitmq:5672' # Redis -BROKER_URL = 'redis://localhost:6379/1' -# BROKER_URL = 'redis://redis:6379/1' +# BROKER_URL = 'redis://localhost:6379/1' +BROKER_URL = 'redis://redis:6379/1' CELERY_RESULT_BACKEND = BROKER_URL CELERY_BROKER_URL = BROKER_URL CELERY_ACCEPT_CONTENT = ['application/json'] diff --git a/project/settings/development.py b/project/settings/development.py index a9cfe5be..b9f03146 100644 --- a/project/settings/development.py +++ b/project/settings/development.py @@ -19,8 +19,8 @@ DOMAIN_URI = 'gm.id-east.ru' # ELASTICSEARCH SETTINGS ELASTICSEARCH_DSL = { 'default': { - 'hosts': 'localhost:9200' - # 'hosts': 'elasticsearch:9200' + # 'hosts': 'localhost:9200' + 'hosts': 'elasticsearch:9200' } } From b74b87d78da7c089a8fe8dfcaa5e69f8cb943905 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80=20=D0=93=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=BA=D0=B8=D1=85?= Date: Wed, 30 Oct 2019 17:23:45 +0300 Subject: [PATCH 5/7] Add products model in transfer --- apps/product/management/__init__.py | 0 apps/product/management/commands/__init__.py | 0 .../management/commands/add_product.py | 0 apps/product/old_models.py | 0 apps/transfer/models.py | 42 +++++++++++++++++++ 5 files changed, 42 insertions(+) create mode 100644 apps/product/management/__init__.py create mode 100644 apps/product/management/commands/__init__.py create mode 100644 apps/product/management/commands/add_product.py create mode 100644 apps/product/old_models.py diff --git a/apps/product/management/__init__.py b/apps/product/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/product/management/commands/__init__.py b/apps/product/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/product/management/commands/add_product.py b/apps/product/management/commands/add_product.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/product/old_models.py b/apps/product/old_models.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/transfer/models.py b/apps/transfer/models.py index 0f7d3348..fecbc48b 100644 --- a/apps/transfer/models.py +++ b/apps/transfer/models.py @@ -841,3 +841,45 @@ class Ads(MigrateMixin): class Meta: managed = False db_table = 'ads' + +class Products(models.Model): + establishment = models.ForeignKey('Establishments', models.DO_NOTHING, blank=True, null=True) + brand = models.CharField(max_length=255, blank=True, null=True) + name = models.CharField(max_length=255, blank=True, null=True) + vintage = models.CharField(max_length=255, blank=True, null=True) + type = models.CharField(max_length=255, blank=True, null=True) + unique_key = models.CharField(max_length=255, blank=True, null=True) + price = models.FloatField(blank=True, null=True) + average_price_in_shops = models.FloatField(blank=True, null=True) + fra_encima_id = models.IntegerField(blank=True, null=True) + wine_sub_region_id = models.IntegerField(blank=True, null=True) + classification = models.ForeignKey('WineClassifications', models.DO_NOTHING, blank=True, null=True) + wine_region = models.ForeignKey('WineLocations', models.DO_NOTHING, blank=True, null=True) + wine_type = models.ForeignKey('WineTypes', models.DO_NOTHING, blank=True, null=True) + wine_color = models.ForeignKey('WineColors', models.DO_NOTHING, blank=True, null=True) + appellation = models.ForeignKey('WineClassifications', models.DO_NOTHING, blank=True, null=True) + created_at = models.DateTimeField() + updated_at = models.DateTimeField() + state = models.CharField(max_length=255, blank=True, null=True) + wine_style = models.ForeignKey('WineStyles', models.DO_NOTHING, blank=True, null=True) + village = models.ForeignKey('WineLocations', models.DO_NOTHING, blank=True, null=True) + vineyard = models.ForeignKey('WineLocations', models.DO_NOTHING, blank=True, null=True) + yard_classification = models.ForeignKey('WineClassifications', models.DO_NOTHING, blank=True, null=True) + wine_quality = models.ForeignKey('WineClassifications', models.DO_NOTHING, blank=True, null=True) + bottles_produced = models.CharField(max_length=3000, blank=True, null=True) + deu_import_id = models.IntegerField(blank=True, null=True) + + class Meta: + managed = False + db_table = 'products' + + +class WineTypes(models.Model): + name = models.CharField(max_length=255, blank=True, null=True) + fra_encima_id = models.IntegerField(blank=True, null=True) + created_at = models.DateTimeField() + updated_at = models.DateTimeField() + + class Meta: + managed = False + db_table = 'wine_types' From f6151c0a14a4fdfd124656b84564c066b0775098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80=20=D0=93=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=BA=D0=B8=D1=85?= Date: Wed, 30 Oct 2019 17:24:40 +0300 Subject: [PATCH 6/7] delete okd_models from product --- apps/product/old_models.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 apps/product/old_models.py diff --git a/apps/product/old_models.py b/apps/product/old_models.py deleted file mode 100644 index e69de29b..00000000 From c1c9f99fb56f09dc83a1e439e56e973062f72433 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80=20=D0=93=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=BA=D0=B8=D1=85?= Date: Wed, 30 Oct 2019 18:04:30 +0300 Subject: [PATCH 7/7] Add product migrate data --- .../management/commands/add_product.py | 54 +++++++++++++++++++ apps/product/models.py | 18 +++++++ apps/transfer/models.py | 1 + 3 files changed, 73 insertions(+) diff --git a/apps/product/management/commands/add_product.py b/apps/product/management/commands/add_product.py index e69de29b..981487ec 100644 --- a/apps/product/management/commands/add_product.py +++ b/apps/product/management/commands/add_product.py @@ -0,0 +1,54 @@ +from django.core.management.base import BaseCommand +from product.models import ProductType, ProductSubType + + +def add_type(): + product_type = ProductType.objects.create( + name={'"en-GB"': "Wine"}, + index_name=ProductType.WINE + ) + return product_type.save() + + +def add_subtype(id_type): + subtypes = ProductSubType.objects.bulk_create([ + ProductSubType(product_type=id_type, + name={"en-GB", ProductSubType.EXTRA_BRUT}, + index_name=ProductSubType.EXTRA_BRUT), + ProductSubType(product_type=id_type, + name={"en-GB", ProductSubType.BRUT}, + index_name=ProductSubType.BRUT), + ProductSubType(product_type=id_type, + name={"en-GB", ProductSubType.BRUT_NATURE}, + index_name=ProductSubType.BRUT_NATURE), + ProductSubType(product_type=id_type, + name={"en-GB", ProductSubType.DEMI_SEC}, + index_name=ProductSubType.DEMI_SEC), + ProductSubType(product_type=id_type, + name={"en-GB", ProductSubType.EXTRA_DRY}, + index_name=ProductSubType.EXTRA_DRY), + ProductSubType(product_type=id_type, + name={"en-GB", ProductSubType.DOSAGE_ZERO}, + index_name=ProductSubType.DOSAGE_ZERO), + ProductSubType(product_type=id_type, + name={"en-GB", ProductSubType.SEC}, + index_name=ProductSubType.SEC), + ProductSubType(product_type=id_type, + name={"en-GB", ProductSubType.SEC}, + index_name=ProductSubType.SEC), + ProductSubType(product_type=id_type, + name={"en-GB", ProductSubType.MOELLEUX}, + index_name=ProductSubType.MOELLEUX), + ]) + + +class Command(BaseCommand): + help = 'Add product data' + + def handle(self, *args, **kwarg): + product_type = add_type() + add_subtype(product_type.id) + + + + diff --git a/apps/product/models.py b/apps/product/models.py index d4011fa0..332a92f6 100644 --- a/apps/product/models.py +++ b/apps/product/models.py @@ -46,10 +46,28 @@ class ProductSubType(TranslatedFieldsMixin, ProjectBaseMixin): # INDEX NAME CHOICES RUM = 'rum' OTHER = 'other' + EXTRA_BRUT = 'extra brut' + BRUT = 'brut' + BRUT_NATURE = 'brut nature' + DEMI_SEC = 'demi-sec' + EXTRA_DRY = 'Extra Dry' + DOSAGE_ZERO = 'dosage zero' + SEC = 'sec' + DOUX = 'doux' + MOELLEUX= 'moelleux' INDEX_NAME_TYPES = ( (RUM, _('Rum')), (OTHER, _('Other')), + (EXTRA_BRUT, _('extra brut')), + (BRUT, _('brut')), + (BRUT_NATURE, _('brut nature')), + (DEMI_SEC, _('demi-sec')), + (EXTRA_DRY, _('Extra Dry')), + (DOSAGE_ZERO, _('dosage zero')), + (SEC, _('sec')), + (DOUX, _('doux')), + (MOELLEUX, _('moelleux')) ) product_type = models.ForeignKey(ProductType, on_delete=models.CASCADE, diff --git a/apps/transfer/models.py b/apps/transfer/models.py index fecbc48b..1a978596 100644 --- a/apps/transfer/models.py +++ b/apps/transfer/models.py @@ -842,6 +842,7 @@ class Ads(MigrateMixin): managed = False db_table = 'ads' + class Products(models.Model): establishment = models.ForeignKey('Establishments', models.DO_NOTHING, blank=True, null=True) brand = models.CharField(max_length=255, blank=True, null=True)