217 lines
12 KiB
Python
217 lines
12 KiB
Python
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} товаров в базу данных!")
|