fix guide
This commit is contained in:
parent
49d6a983d9
commit
68ceb44acf
|
|
@ -866,19 +866,22 @@ class GuideElementManager(models.Manager):
|
|||
city=city_qs.first())
|
||||
return None, False
|
||||
|
||||
def get_or_create_establishment_section_node(self, city_node: int, establishment_node_name: str):
|
||||
def get_or_create_establishment_section_node(self, city_node_id: int, establishment_node_name: str,
|
||||
guide_id: int):
|
||||
"""Get or Create (Restaurant|Shop...)SectionNode."""
|
||||
parent_node_qs = GuideElement.objects.filter(id=city_node)
|
||||
parent_node_qs = GuideElement.objects.filter(id=city_node_id)
|
||||
guide_element_type_qs = GuideElementType.objects.filter(name__iexact=establishment_node_name)
|
||||
guide_qs = Guide.objects.filter(id=guide_id)
|
||||
|
||||
if parent_node_qs.exists() and guide_element_type_qs.exists():
|
||||
if parent_node_qs.exists() and guide_element_type_qs.exists() and guide_qs.exists():
|
||||
parent_node = parent_node_qs.first()
|
||||
|
||||
return self.get_or_create(guide_element_type=guide_element_type_qs.first(),
|
||||
parent=parent_node,
|
||||
guide=parent_node.parent.guide)
|
||||
guide=guide_qs.first())
|
||||
return None, False
|
||||
|
||||
def get_or_create_establishment_node(self, restaurant_section_node_id: int,
|
||||
def get_or_create_establishment_node(self, restaurant_section_node_id: int, guide_id: int,
|
||||
establishment_id: int, review_id: int = None):
|
||||
"""Get or Create EstablishmentNode."""
|
||||
from establishment.models import Establishment
|
||||
|
|
@ -887,14 +890,16 @@ class GuideElementManager(models.Manager):
|
|||
guide_element_type_qs = GuideElementType.objects.filter(name='EstablishmentNode')
|
||||
parent_node_qs = GuideElement.objects.filter(id=restaurant_section_node_id)
|
||||
establishment_qs = Establishment.objects.filter(id=establishment_id)
|
||||
guide_qs = Guide.objects.filter(id=guide_id)
|
||||
|
||||
if parent_node_qs.exists() and establishment_qs.exists() and guide_element_type_qs.exists():
|
||||
if (parent_node_qs.exists() and establishment_qs.exists()
|
||||
and guide_element_type_qs.exists() and guide_qs.exists()):
|
||||
establishment = establishment_qs.first()
|
||||
parent_node = parent_node_qs.first()
|
||||
data.update({
|
||||
'guide_element_type': guide_element_type_qs.first(),
|
||||
'parent': parent_node,
|
||||
'guide': parent_node.get_root().guide,
|
||||
'guide': guide_qs.first(),
|
||||
'establishment': establishment
|
||||
})
|
||||
if review_id:
|
||||
|
|
@ -903,44 +908,47 @@ class GuideElementManager(models.Manager):
|
|||
return self.get_or_create(**data)
|
||||
return None, False
|
||||
|
||||
def get_or_create_wine_region_node(self, root_node_id: int, wine_region_id: int):
|
||||
def get_or_create_wine_region_node(self, root_node_id: int, wine_region_id: int, guide_id: int):
|
||||
"""Get or Create WineRegionNode."""
|
||||
guide_element_type_qs = GuideElementType.objects.filter(name='RegionNode')
|
||||
parent_node_qs = GuideElement.objects.filter(id=root_node_id)
|
||||
wine_region_qs = WineRegion.objects.filter(id=wine_region_id)
|
||||
guide_qs = Guide.objects.filter(id=guide_id)
|
||||
|
||||
if parent_node_qs.exists() and parent_node_qs.first().guide and wine_region_qs.exists() and guide_element_type_qs.exists():
|
||||
if (parent_node_qs.exists() and parent_node_qs.first().guide and
|
||||
wine_region_qs.exists() and guide_element_type_qs.exists() and
|
||||
guide_qs.exists()):
|
||||
root_node = parent_node_qs.first()
|
||||
return self.get_or_create(guide_element_type=guide_element_type_qs.first(),
|
||||
parent=root_node,
|
||||
guide=root_node.guide,
|
||||
guide=guide_qs.first(),
|
||||
wine_region=wine_region_qs.first())
|
||||
return None, False
|
||||
|
||||
def get_or_create_yard_node(self, product_id: int, wine_region_node_id: int):
|
||||
def get_or_create_yard_node(self, product_id: int, wine_region_node_id: int, guide_id: int):
|
||||
"""Make YardNode."""
|
||||
from establishment.models import Establishment
|
||||
|
||||
guide_element_type_qs = GuideElementType.objects.filter(name='YardNode')
|
||||
wine_region_node_qs = GuideElement.objects.filter(id=wine_region_node_id)
|
||||
product_qs = Product.objects.filter(id=product_id)
|
||||
guide_qs = Guide.objects.filter(id=guide_id)
|
||||
|
||||
if product_qs.exists() and wine_region_node_qs.exists():
|
||||
if product_qs.exists() and wine_region_node_qs.exists() and guide_qs.exists():
|
||||
wine_region_node = wine_region_node_qs.first()
|
||||
root_node = wine_region_node.get_root()
|
||||
product = product_qs.first()
|
||||
|
||||
if product.establishment:
|
||||
return self.get_or_create(guide_element_type=guide_element_type_qs.first(),
|
||||
parent=wine_region_node,
|
||||
guide=root_node.guide,
|
||||
establishment=product.establishment)
|
||||
return self.get_or_create(guide_element_type=guide_element_type_qs.first(),
|
||||
parent=wine_region_node,
|
||||
guide=guide_qs.first(),
|
||||
establishment=product.establishment)
|
||||
return None, False
|
||||
|
||||
def get_or_create_color_wine_section_node(self, wine_color_name: str, yard_node_id: int):
|
||||
def get_or_create_color_wine_section_node(self, wine_color_name: str,
|
||||
yard_node_id: int, guide_id: int):
|
||||
"""Get or Create WineSectionNode."""
|
||||
guide_element_type_qs = GuideElementType.objects.filter(name='ColorWineSectionNode')
|
||||
parent_node_qs = GuideElement.objects.filter(id=yard_node_id)
|
||||
guide_qs = Guide.objects.filter(id=guide_id)
|
||||
|
||||
if not wine_color_name.endswith('SectionNode'):
|
||||
wine_color_name = transform_into_section_name(wine_color_name)
|
||||
|
|
@ -951,27 +959,30 @@ class GuideElementManager(models.Manager):
|
|||
'name': wine_color_name
|
||||
})
|
||||
|
||||
if parent_node_qs.exists() and guide_element_type_qs.exists():
|
||||
if parent_node_qs.exists() and guide_element_type_qs.exists() and guide_qs.exists():
|
||||
root_node = parent_node_qs.first()
|
||||
return self.get_or_create(guide_element_type=guide_element_type_qs.first(),
|
||||
parent=root_node,
|
||||
wine_color_section=wine_color_section,
|
||||
guide=root_node.guide)
|
||||
guide=guide_qs.first())
|
||||
return None, False
|
||||
|
||||
def get_or_create_wine_node(self, color_wine_section_node_id: int, wine_id: int, review_id: int):
|
||||
def get_or_create_wine_node(self, color_wine_section_node_id: int,
|
||||
wine_id: int, review_id: int, guide_id: int):
|
||||
"""Get or Create WineNode."""
|
||||
guide_element_type_qs = GuideElementType.objects.filter(name='WineNode')
|
||||
parent_node_qs = GuideElement.objects.filter(id=color_wine_section_node_id)
|
||||
wine_qs = Product.objects.wines().filter(id=wine_id)
|
||||
review_qs = Review.objects.filter(id=review_id)
|
||||
guide_qs = Guide.objects.filter(id=guide_id)
|
||||
|
||||
if parent_node_qs.exists() and wine_qs.exists() and review_qs.exists() and guide_element_type_qs.exists():
|
||||
if (parent_node_qs.exists() and wine_qs.exists() and
|
||||
review_qs.exists() and guide_element_type_qs.exists() and guide_qs.exists()):
|
||||
root_node = parent_node_qs.first()
|
||||
return self.get_or_create(guide_element_type=guide_element_type_qs.first(),
|
||||
parent=root_node,
|
||||
product=wine_qs.first(),
|
||||
guide=root_node.guide,
|
||||
guide=guide_qs.first(),
|
||||
review=review_qs.first())
|
||||
return None, False
|
||||
|
||||
|
|
|
|||
|
|
@ -9,23 +9,25 @@ logging.basicConfig(format='[%(levelname)s] %(message)s', level=logging.INFO)
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def get_additional_establishment_data(section_node, establishment):
|
||||
data = [
|
||||
section_node.id,
|
||||
establishment.id,
|
||||
]
|
||||
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.append(establishment.last_published_review.id)
|
||||
data.update({'review_id': establishment.last_published_review.id})
|
||||
return data
|
||||
|
||||
|
||||
def get_additional_product_data(section_node, product):
|
||||
data = [
|
||||
section_node.id,
|
||||
product.id,
|
||||
]
|
||||
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.append(product.last_published_review.id)
|
||||
data.update({'review_id': product.last_published_review.id})
|
||||
return data
|
||||
|
||||
|
||||
|
|
@ -70,11 +72,13 @@ 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,
|
||||
)
|
||||
if section_node:
|
||||
GuideElement.objects.get_or_create_establishment_node(
|
||||
*get_additional_establishment_data(section_node=section_node,
|
||||
establishment=establishment))
|
||||
**get_additional_establishment_data(section_node=section_node,
|
||||
establishment=establishment,
|
||||
guide=guide))
|
||||
else:
|
||||
logger.error(
|
||||
f'METHOD_NAME: {generate_establishment_guide_elements.__name__}\n'
|
||||
|
|
@ -87,7 +91,7 @@ def populate_establishment_guide(guide_id: int, establishment_id: int):
|
|||
f'DETAIL: Guide ID {guide_id} - RootNode is not exists.')
|
||||
else:
|
||||
logger.error(f'METHOD_NAME: {generate_establishment_guide_elements.__name__}\n'
|
||||
f'DETAIL: Guide ID {guide_id} - Establishment {establishment_id} id is not exists.')
|
||||
f'DETAIL: Guide ID {guide_id} - Establishment {establishment_id} id is not exists.')
|
||||
except Exception as e:
|
||||
guide.change_state(Guide.WAITING)
|
||||
logger.error(f'METHOD_NAME: {generate_establishment_guide_elements.__name__}\n'
|
||||
|
|
@ -152,24 +156,27 @@ def generate_product_guide_elements(guide_id: int, filter_set: dict):
|
|||
if root_node:
|
||||
wine_region_node, _ = GuideElement.objects.get_or_create_wine_region_node(
|
||||
root_node.id,
|
||||
wine.wine_region.id)
|
||||
wine.wine_region.id,
|
||||
guide_id)
|
||||
if wine_region_node:
|
||||
yard_node, _ = GuideElement.objects.get_or_create_yard_node(
|
||||
product_id=wine.id,
|
||||
wine_region_node_id=wine_region_node.id
|
||||
)
|
||||
wine.id,
|
||||
wine_region_node.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_name=wine_color_qs.first().value,
|
||||
yard_node_id=yard_node.id
|
||||
wine_color_qs.first().value,
|
||||
yard_node.id,
|
||||
guide_id
|
||||
)
|
||||
if wine_color_section:
|
||||
GuideElement.objects.get_or_create_wine_node(
|
||||
*get_additional_product_data(
|
||||
section_node=wine_color_section,
|
||||
product=wine))
|
||||
**get_additional_product_data(
|
||||
wine_color_section,
|
||||
wine,
|
||||
guide))
|
||||
else:
|
||||
logger.error(
|
||||
f'METHOD_NAME: {generate_product_guide_elements.__name__}\n'
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user