From 9b35da1eca2dc5ba2ab2cab02121e81f3b000c26 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 27 Nov 2019 17:03:27 +0300 Subject: [PATCH] add artisan subtype --- .../commands/add_artisan_subtype.py | 48 ++++++++ apps/establishment/models.py | 1 - docker-compose.local.yml | 106 ++++++++++++++++++ env | 9 ++ 4 files changed, 163 insertions(+), 1 deletion(-) create mode 100644 apps/establishment/management/commands/add_artisan_subtype.py create mode 100644 docker-compose.local.yml create mode 100644 env diff --git a/apps/establishment/management/commands/add_artisan_subtype.py b/apps/establishment/management/commands/add_artisan_subtype.py new file mode 100644 index 00000000..8616f2ab --- /dev/null +++ b/apps/establishment/management/commands/add_artisan_subtype.py @@ -0,0 +1,48 @@ +from django.core.management.base import BaseCommand +from tqdm import tqdm + +from establishment.models import Establishment, EstablishmentSubType, EstablishmentType +from transfer.models import Metadata + + +class Command(BaseCommand): + help = 'Add subtype for establishment artisan' + + def handle(self, *args, **options): + artisans = Establishment.objects.artisans().filter( + old_id__isnull=False, + ).prefetch_related('tags') + + old_tags = Metadata.objects.filter( + establishment__in=list(artisans.values_list('old_id', flat=True)), + key='shop_category', + ) + + tags = [] + for tag in tqdm(old_tags): + tags.append(tag.value) + subtypes = set(tags) + + es_type, _ = EstablishmentType.objects.get_or_create( + index_name='artisan', + defaults={ + 'index_name': 'artisan', + 'name': {'en-GB': 'artisan'}, + } + ) + for artisan in tqdm(artisans): + artisan_tags = artisan.tags.all() + for t in artisan_tags: + if t.value in subtypes: + tag = 'coffee_shop' if t.value == 'coffe_shop' else t.value + subtype, _ = EstablishmentSubType.objects.get_or_create( + index_name=tag, + defaults={ + 'index_name': tag, + 'name': {'en-GB': tag}, + } + ) + artisan.tags.add(subtype) + artisan.save() + + self.stdout.write(self.style.WARNING(f'Artisans subtype updated.')) diff --git a/apps/establishment/models.py b/apps/establishment/models.py index cb490aa4..c5533d52 100644 --- a/apps/establishment/models.py +++ b/apps/establishment/models.py @@ -125,7 +125,6 @@ class EstablishmentQuerySet(models.QuerySet): 'menu_set__plate_set__currency', 'currency'). \ prefetch_actual_employees() - def with_type_related(self): return self.prefetch_related('establishment_subtypes') diff --git a/docker-compose.local.yml b/docker-compose.local.yml new file mode 100644 index 00000000..1a2d9236 --- /dev/null +++ b/docker-compose.local.yml @@ -0,0 +1,106 @@ +version: '3.5' +services: + + # Legacy MySQL DB + mysql_db: + image: mysql:5.7 + ports: + - "3306:3306" + environment: + MYSQL_DATABASE: dev + MYSQL_USER: dev + MYSQL_PASSWORD: octosecret123 + MYSQL_ROOT_PASSWORD: rootPassword + volumes: + - gm-mysql_db:/var/lib/mysql + + + # PostgreSQL database + db: + build: + context: ./_dockerfiles/db + dockerfile: Dockerfile + hostname: db + env_file: + - env + ports: + - "5436:5432" + volumes: + - gm-db:/var/lib/postgresql/data/ + - ./local_files/dump_alex.sql:/dump_alex.sql +# - ./local_files/docker-entrypoint.sh:/docker-entrypoint-initdb.d/docker-entrypoint.sh + + + elasticsearch: + image: elasticsearch:7.3.1 + volumes: + - gm-esdata:/usr/share/elasticsearch/data + hostname: elasticsearch + ports: + - 9200:9200 + - 9300:9300 + environment: + - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + - discovery.type=single-node + - xpack.security.enabled=false + + + # Redis + redis: + image: redis:alpine + + + # Celery + worker: + build: . + command: ./run_celery.sh + env_file: + - env + volumes: + - .:/code + links: + - db + - redis + + + worker_beat: + build: . + command: ./run_celery_beat.sh + env_file: + - env + volumes: + - .:/code + links: + - db + - redis + + + # App: G&M + gm_app: + build: . + command: python manage.py runserver 0.0.0.0:8000 + env_file: + - env + depends_on: + - mysql_db + - db + - redis + - worker + - worker_beat + - elasticsearch + volumes: + - .:/code + - gm-media:/media-data + ports: + - "8000:8000" + + +volumes: + gm-mysql_db: + name: gm-mysql_db + gm-db: + name: gm-db + gm-media: + name: gm-media + gm-esdata: + diff --git a/env b/env new file mode 100644 index 00000000..67e9f44f --- /dev/null +++ b/env @@ -0,0 +1,9 @@ +SETTINGS_CONFIGURATION=local +DB_NAME=gm +DB_USERNAME=gm +DB_HOSTNAME=db +DB_PORT=5432 +DB_PASSWORD=gm +POSTGRES_USER=gm +POSTGRES_PASSWORD=gm +POSTGRES_DB=gm \ No newline at end of file