Files
PVHBackend/db/InitializeDBData.py
T

217 lines
12 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import sqlite3
from loguru import logger as log
from db.DBDataUtils import add_category, add_filter, add_product, parse_product_data
from db.InitializeDB import init_database
def init_tables(db_name='pipe_store.db'):
init_database(db_name)
conn = sqlite3.connect(db_name)
cursor = conn.cursor()
cursor.execute('SELECT COUNT(*) FROM categories')
category_count = cursor.fetchone()[0]
if category_count > 0:
log.info("Категории уже были добавлены в базу данных, пропускаем инициализацию")
conn.close()
return
log.info("Начинаем инициализацию базы категорий...")
# Базовый URL для статики (замените на ваш реальный домен)
base_url = "https://pvh.projects.rustprogersteam.ru/api/image"
# Основная категория
main_category_id = add_category(
conn,
"Трубы ПВХ",
"Трубы ПВХ для канализационных систем",
image_path=f"{base_url}/categories/main0.png" # Оставлено как в оригинале
)
# Подкатегории для труб
internal_category_id = add_category(
conn,
"Для внутренней канализации",
"Трубы для внутренней канализационной системы",
main_category_id,
image_path=f"{base_url}/categories/internal_pipes.png"
)
external_category_id = add_category(
conn,
"Для наружной канализации",
"Трубы для наружной канализационной системы",
main_category_id,
image_path=f"{base_url}/categories/external_pipes.png"
)
# Категория для фитингов
#fittings_category_id = add_category(
# conn,
# "Фитинги для ПВХ труб",
# "Соединительные элементы для ПВХ труб",
# main_category_id,
# image_path=f"{base_url}/categories/fittings.png"
#)
# Подкатегории для фитингов
elbows_category_id = add_category(
conn,
"Колена и отводы",
"Угловые соединения для ПВХ труб",
main_category_id,
image_path=f"{base_url}/categories/elbows.png"
)
tee_category_id = add_category(
conn,
"Тройники",
"Тройники для разветвления труб",
main_category_id,
image_path=f"{base_url}/categories/tees.png"
)
couplings_category_id = add_category(
conn,
"Муфты и переходы",
"Соединительные муфты и переходники",
main_category_id,
image_path=f"{base_url}/categories/couplings.png"
)
accessories_category_id = add_category(
conn,
"Заглушки и ревизии",
"Заглушки и ревизионные элементы",
main_category_id,
image_path=f"{base_url}/categories/accessories.png"
)
log.info("Категории успешно созданы")
# Добавляем фильтры
add_filter(conn, "Диаметр", "diameter", "multiple")
add_filter(conn, "Длина", "length", "multiple")
add_filter(conn, "Тип применения", "application_type", "single")
add_filter(conn, "Цвет", "color", "single")
add_filter(conn, "Класс жесткости", "stiffness_class", "single")
add_filter(conn, "Толщина стенки", "wall_thickness", "multiple")
add_filter(conn, "Угол", "angle", "multiple")
add_filter(conn, "Тип фитинга", "fitting_type", "single")
log.info("Фильтры успешно добавлены")
# ==================== ТОВАРЫ ====================
added_products = 0
# 1. Внутренние трубы
internal_pipes = [
("110х2,2х500", 110, 2.2, 500, "серый", "внутренняя", None),
("110х2,2х1000", 110, 2.2, 1000, "серый", "внутренняя", None),
("110х2,2х1500", 110, 2.2, 1500, "серый", "внутренняя", None),
("110х2,2х2000", 110, 2.2, 2000, "серый", "внутренняя", None),
("110х2,2х3000", 110, 2.2, 3000, "серый", "внутренняя", None),
]
for size, diameter, thickness, length, color, app_type, stiffness in internal_pipes:
full_name = f"Труба НПВХ {diameter}x{thickness}x{length} мм внутренняя"
# Замена на внешнюю ссылку
image_url = f"{base_url}/products/internal_{diameter}_{length}.png"
product_id = add_product(
conn, full_name, internal_category_id, image_url,
diameter, thickness, length, color, app_type, stiffness
)
if product_id:
added_products += 1
log.info(f"Добавлен товар: {full_name[:50]}...")
# 2. Наружные трубы
external_pipes = [
("110х2,3х500", 110, 2.3, 500, "оранжево-коричневый", "наружная", None),
("110х2,3х1000", 110, 2.3, 1000, "оранжево-коричневый", "наружная", None),
("110х2,3х2000", 110, 2.3, 2000, "оранжево-коричневый", "наружная", None),
("110х2,3х3000", 110, 2.3, 3000, "оранжево-коричневый", "наружная", None),
("110х2,3х4000", 110, 2.3, 4000, "оранжево-коричневый", "наружная", None),
("110х2,7х500 SN2", 110, 2.7, 500, "оранжево-коричневый", "наружная", "SN2"),
("110х2,7х1000 SN2", 110, 2.7, 1000, "оранжево-коричневый", "наружная", "SN2"),
("110х2,7х2000 SN2", 110, 2.7, 2000, "оранжево-коричневый", "наружная", "SN2"),
("110х2,7х3000 SN2", 110, 2.7, 3000, "оранжево-коричневый", "наружная", "SN2"),
("110х2,7х4000 SN2", 110, 2.7, 4000, "оранжево-коричневый", "наружная", "SN2"),
("110х3,2х500 SN4", 110, 3.2, 500, "оранжево-коричневый", "наружная", "SN4"),
("110х3,2х1000 SN4", 110, 3.2, 1000, "оранжево-коричневый", "наружная", "SN4"),
("110х3,2х2000 SN4", 110, 3.2, 2000, "оранжево-коричневый", "наружная", "SN4"),
("110х3,2х3000 SN4", 110, 3.2, 3000, "оранжево-коричневый", "наружная", "SN4"),
("110х3,2х4000 SN4", 110, 3.2, 4000, "оранжево-коричневый", "наружная", "SN4"),
("160х3,6х1000 SN2", 160, 3.6, 1000, "оранжево-коричневый", "наружная", "SN2"),
("160х3,6х2000 SN2", 160, 3.6, 2000, "оранжево-коричневый", "наружная", "SN2"),
("160х3,6х3000 SN2", 160, 3.6, 3000, "оранжево-коричневый", "наружная", "SN2"),
("160х4,0х1000 SN4", 160, 4.0, 1000, "оранжево-коричневый", "наружная", "SN4"),
("160х4,0х2000 SN4", 160, 4.0, 2000, "оранжево-коричневый", "наружная", "SN4"),
("160х4,0х3000 SN4", 160, 4.0, 3000, "оранжево-коричневый", "наружная", "SN4"),
]
for size, diameter, thickness, length, color, app_type, stiffness in external_pipes:
stiffness_text = f", класс жесткости {stiffness}" if stiffness else ""
full_name = f"Труба НПВХ {diameter}x{thickness}x{length} мм наружная"
# Замена на внешнюю ссылку
suffix = stiffness or 'std'
image_url = f"{base_url}/products/external_{diameter}_{suffix}_{length}.png"
product_id = add_product(
conn, full_name, external_category_id, image_url,
diameter, thickness, length, color, app_type, stiffness
)
if product_id:
added_products += 1
log.info(f"Добавлен товар: {full_name[:50]}...")
# 3. Фитинги
fittings = [
("Отвод 110мм на 15°", elbows_category_id, "отвод", 110, None, None, None, None, "15°"),
("Отвод 110мм на 30°", elbows_category_id, "отвод", 110, None, None, None, None, "30°"),
("Отвод 110мм на 45°", elbows_category_id, "отвод", 110, None, None, None, None, "45°"),
("Отвод 110мм на 87°", elbows_category_id, "отвод", 110, None, None, None, None, "87°"),
("Отвод 160мм на 15°", elbows_category_id, "отвод", 160, None, None, None, None, "15°"),
("Отвод 160мм на 30°", elbows_category_id, "отвод", 160, None, None, None, None, "30°"),
("Отвод 160мм на 45°", elbows_category_id, "отвод", 160, None, None, None, None, "45°"),
("Отвод 160мм на 87°", elbows_category_id, "отвод", 160, None, None, None, None, "87°"),
("Тройник 110х110 мм на 45°", tee_category_id, "тройник", 110, None, None, None, None, "45°"),
("Тройник 160х110 мм на 45°", tee_category_id, "тройник", 160, None, None, None, None, "45°"),
("Тройник 160х160 мм на 45°", tee_category_id, "тройник", 160, None, None, None, None, "45°"),
("Тройник 110х110 мм на 87°", tee_category_id, "тройник", 110, None, None, None, None, "87°"),
("Тройник 160х110 мм на 87°", tee_category_id, "тройник", 160, None, None, None, None, "87°"),
("Тройник 160х160 мм на 87°", tee_category_id, "тройник", 160, None, None, None, None, "87°"),
("Муфта надвижная (ремонтная) 110 мм", couplings_category_id, "муфта", 110, None, None, None, None, None),
("Муфта надвижная (ремонтная) 160 мм", couplings_category_id, "муфта", 160, None, None, None, None, None),
("Муфта соединительная 110 мм", couplings_category_id, "муфта", 110, None, None, None, None, None),
("Муфта соединительная 160 мм", couplings_category_id, "муфта", 160, None, None, None, None, None),
("Редуктор 160 мм", couplings_category_id, "редуктор", 160, None, None, None, None, None),
("Заглушка для раструба 110 мм", accessories_category_id, "заглушка", 110, None, None, None, None, None),
("Заглушка для раструба 160 мм", accessories_category_id, "заглушка", 160, None, None, None, None, None),
("Ревизия 110 мм", accessories_category_id, "ревизия", 110, None, None, None, None, None),
("Ревизия 160 мм", accessories_category_id, "ревизия", 160, None, None, None, None, None),
]
for name, cat_id, fitting_type, diameter, thickness, length, color, app_type, angle in fittings:
full_name = f"{name} для наружной канализации"
# Формирование URL для фитингов
file_name = name.lower().replace(' ', '_').replace('°', 'deg')
image_url = f"{base_url}/products/fittings/{file_name}.png"
product_id = add_product(
conn, full_name, cat_id, image_url,
diameter, thickness, length, color, app_type, None,
fitting_type=fitting_type, angle=angle
)
if product_id:
added_products += 1
log.info(f"Добавлен товар: {full_name[:50]}...")
conn.commit()
conn.close()
log.success(f"Успешно добавлено {added_products} товаров в базу данных!")