refactored guides

This commit is contained in:
Anatoly 2020-02-05 12:16:07 +03:00
parent ec1caeced3
commit b421b934c1
3 changed files with 60 additions and 45 deletions

View File

@ -9,28 +9,6 @@ logging.basicConfig(format='[%(levelname)s] %(message)s', level=logging.INFO)
logger = logging.getLogger(__name__)
def get_additional_establishment_data(section_node, establishment, guide):
data = {
'restaurant_section_node_id': section_node.id,
'guide_id': guide.id,
'establishment_id': establishment.id,
}
if establishment.last_published_review:
data.update({'review_id': establishment.last_published_review.id})
return data
def get_additional_product_data(section_node, product, guide):
data = {
'color_wine_section_node_id': section_node.id,
'wine_id': product.id,
'guide_id': guide.id,
}
if product.last_published_review:
data.update({'review_id': product.last_published_review.id})
return data
@shared_task
def generate_establishment_guide_elements(guide_id: int, filter_set: dict):
"""Generate guide elements."""
@ -38,9 +16,9 @@ def generate_establishment_guide_elements(guide_id: int, filter_set: dict):
from establishment.models import Establishment
guide = Guide.objects.get(id=guide_id)
guide.change_state(Guide.BUILDING)
queryset_values = Establishment.objects.filter(**filter_set).values()
try:
guide.change_state(Guide.BUILDING)
for instance in queryset_values:
populate_establishment_guide(guide_id, instance.get('id'))
except Exception as e:
@ -59,8 +37,8 @@ def populate_establishment_guide(guide_id: int, establishment_id: int):
from establishment.models import Establishment
guide = Guide.objects.get(id=guide_id)
guide.change_state(Guide.BUILDING)
try:
guide.change_state(Guide.BUILDING)
establishment_qs = Establishment.objects.filter(id=establishment_id)
if establishment_qs.exists():
establishment = establishment_qs.first()
@ -72,13 +50,17 @@ def populate_establishment_guide(guide_id: int, establishment_id: int):
section_node, _ = GuideElement.objects.get_or_create_establishment_section_node(
city_node.id,
transform_into_section_name(establishment.establishment_type.index_name),
guide_id,
guide.id,
)
if section_node:
GuideElement.objects.get_or_create_establishment_node(
**get_additional_establishment_data(section_node=section_node,
establishment=establishment,
guide=guide))
params = {
'restaurant_section_node_id': section_node.id,
'guide_id': guide.id,
'establishment_id': establishment.id,
}
if establishment.last_published_review:
params.update({'review_id': establishment.last_published_review.id})
GuideElement.objects.get_or_create_establishment_node(**params)
else:
logger.error(
f'METHOD_NAME: {generate_establishment_guide_elements.__name__}\n'
@ -108,8 +90,8 @@ def remove_establishment_guide(guide_id: int, establishment_id: int):
from establishment.models import Establishment
guide = Guide.objects.get(id=guide_id)
guide.change_state(Guide.REMOVING)
try:
guide.change_state(Guide.REMOVING)
establishment_qs = Establishment.objects.filter(id=establishment_id)
if establishment_qs.exists():
establishment = establishment_qs.first()
@ -144,9 +126,9 @@ def generate_product_guide_elements(guide_id: int, filter_set: dict):
from product.models import Product
guide = Guide.objects.get(id=guide_id)
guide.change_state(Guide.BUILDING)
queryset_values = Product.objects.filter(**filter_set).values()
try:
guide.change_state(Guide.BUILDING)
for instance in queryset_values:
wine_id = instance.get('id')
wine_qs = Product.objects.filter(id=wine_id)
@ -157,26 +139,29 @@ def generate_product_guide_elements(guide_id: int, filter_set: dict):
wine_region_node, _ = GuideElement.objects.get_or_create_wine_region_node(
root_node.id,
wine.wine_region.id,
guide_id)
guide.id)
if wine_region_node:
yard_node, _ = GuideElement.objects.get_or_create_yard_node(
wine.id,
wine_region_node.id,
guide_id)
guide.id)
if yard_node:
wine_color_qs = wine.wine_colors
if wine_color_qs.exists():
wine_color_section, _ = GuideElement.objects.get_or_create_color_wine_section_node(
wine_color_qs.first().value,
yard_node.id,
guide_id
guide.id
)
if wine_color_section:
GuideElement.objects.get_or_create_wine_node(
**get_additional_product_data(
wine_color_section,
wine,
guide))
params = {
'color_wine_section_node_id': wine_color_section.id,
'wine_id': wine.id,
'guide_id': guide.id,
}
if wine.last_published_review:
params.update({'review_id': wine.last_published_review.id})
GuideElement.objects.get_or_create_wine_node(**params)
else:
logger.error(
f'METHOD_NAME: {generate_product_guide_elements.__name__}\n'

View File

@ -1,6 +1,6 @@
"""Development settings."""
from .base import *
from .amazon_s3 import *
from .base import *
ALLOWED_HOSTS = ['gm.id-east.ru', '95.213.204.126', '0.0.0.0']
@ -77,3 +77,33 @@ EMAIL_PORT = 587
MIDDLEWARE.append('utils.middleware.log_db_queries_per_API_request')
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
},
'null': {
'class': 'logging.NullHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console', ],
'level': 'ERROR',
'propagate': False,
},
}
}

View File

@ -86,11 +86,11 @@ LOGGING = {
'py.warnings': {
'handlers': ['console'],
},
# 'django.db.backends': {
# 'handlers': ['console', ],
# 'level': 'DEBUG',
# 'propagate': False,
# },
'django.db.backends': {
'handlers': ['console', ],
'level': 'DEBUG',
'propagate': False,
},
}
}