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"Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет {color}), со сплошной стенкой толщиной {thickness} мм {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"Труба ПВХ для НАРУЖНОЙ канализации (цвет {color}), со сплошной стенкой{stiffness_text} {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°"),
("Тройник 45° 110х110", tee_category_id, "тройник", 110, None, None, None, None, "45°"),
("Тройник 45° 160х110", tee_category_id, "тройник", 160, None, None, None, None, "45°"),
("Тройник 45° 160х160", tee_category_id, "тройник", 160, None, None, None, None, "45°"),
("Тройник 87° 110х110", tee_category_id, "тройник", 110, None, None, None, None, "87°"),
("Тройник 87° 160х110", tee_category_id, "тройник", 160, None, None, None, None, "87°"),
("Тройник 87° 160х160", 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} товаров в базу данных!")