add artisan subtype

This commit is contained in:
alex 2019-11-27 17:03:27 +03:00
parent 2944d92b72
commit 9b35da1eca
4 changed files with 163 additions and 1 deletions

View File

@ -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.'))

View File

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

106
docker-compose.local.yml Normal file
View File

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

9
env Normal file
View File

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