Files
PVHBackend/db/InitializeDBData.py

217 lines
13 KiB
Python
Raw Permalink 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, "RK011022500"),
("110х2,2х1000", 110, 2.2, 1000, "серый", "внутренняя", None, "RK0110221000"),
("110х2,2х1500", 110, 2.2, 1500, "серый", "внутренняя", None, "RK0110221500"),
("110х2,2х2000", 110, 2.2, 2000, "серый", "внутренняя", None, "RK0110222000"),
("110х2,2х3000", 110, 2.2, 3000, "серый", "внутренняя", None, "RK0110223000"),
]
for size, diameter, thickness, length, color, app_type, stiffness, artikul 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,
artikul=artikul
)
if product_id:
added_products += 1
log.info(f"Добавлен товар: {full_name[:50]}...")
# 2. Наружные трубы
external_pipes = [
("110х2,3х500", 110, 2.3, 500, "оранжево-коричневый", "наружная", None, "RK111023500"),
("110х2,3х1000", 110, 2.3, 1000, "оранжево-коричневый", "наружная", None, "RK1110231000"),
("110х2,3х2000", 110, 2.3, 2000, "оранжево-коричневый", "наружная", None, "RK1110232000"),
("110х2,3х3000", 110, 2.3, 3000, "оранжево-коричневый", "наружная", None, "RK1110233000"),
("110х2,3х4000", 110, 2.3, 4000, "оранжево-коричневый", "наружная", None, "RK1110234000"),
("110х2,7х500 SN2", 110, 2.7, 500, "оранжево-коричневый", "наружная", "SN2", "RK111027500"),
("110х2,7х1000 SN2", 110, 2.7, 1000, "оранжево-коричневый", "наружная", "SN2", "RK1110271000"),
("110х2,7х2000 SN2", 110, 2.7, 2000, "оранжево-коричневый", "наружная", "SN2", "RK1110272000"),
("110х2,7х3000 SN2", 110, 2.7, 3000, "оранжево-коричневый", "наружная", "SN2", "RK1110273000"),
("110х2,7х4000 SN2", 110, 2.7, 4000, "оранжево-коричневый", "наружная", "SN2", "RK1110274000"),
("110х3,2х500 SN4", 110, 3.2, 500, "оранжево-коричневый", "наружная", "SN4", "RK111032500"),
("110х3,2х1000 SN4", 110, 3.2, 1000, "оранжево-коричневый", "наружная", "SN4", "RK1110321000"),
("110х3,2х2000 SN4", 110, 3.2, 2000, "оранжево-коричневый", "наружная", "SN4", "RK1110322000"),
("110х3,2х3000 SN4", 110, 3.2, 3000, "оранжево-коричневый", "наружная", "SN4", "RK1110323000"),
("110х3,2х4000 SN4", 110, 3.2, 4000, "оранжево-коричневый", "наружная", "SN4", "RK1110324000"),
("160х3,6х1000 SN2", 160, 3.6, 1000, "оранжево-коричневый", "наружная", "SN2", "RK1160361000"),
("160х3,6х2000 SN2", 160, 3.6, 2000, "оранжево-коричневый", "наружная", "SN2", "RK1160362000"),
("160х3,6х3000 SN2", 160, 3.6, 3000, "оранжево-коричневый", "наружная", "SN2", "RK1160363000"),
("160х4,0х1000 SN4", 160, 4.0, 1000, "оранжево-коричневый", "наружная", "SN4", "RK1160401000"),
("160х4,0х2000 SN4", 160, 4.0, 2000, "оранжево-коричневый", "наружная", "SN4", "RK1160402000"),
("160х4,0х3000 SN4", 160, 4.0, 3000, "оранжево-коричневый", "наружная", "SN4", "RK1160403000"),
]
for size, diameter, thickness, length, color, app_type, stiffness, artikul 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,
artikul=artikul
)
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х15deg.png"),
("Отвод 110мм на 30°", elbows_category_id, "отвод", 110, None, None, None, None, "30°", "отвод_110х30deg.png"),
("Отвод 110мм на 45°", elbows_category_id, "отвод", 110, None, None, None, None, "45°", "отвод_110х45deg.png"),
("Отвод 110мм на 87°", elbows_category_id, "отвод", 110, None, None, None, None, "87°", "отвод_110х87deg.png"),
("Отвод 160мм на 15°", elbows_category_id, "отвод", 160, None, None, None, None, "15°", "отвод_160х15deg.png"),
("Отвод 160мм на 30°", elbows_category_id, "отвод", 160, None, None, None, None, "30°", "отвод_160х30deg.png"),
("Отвод 160мм на 45°", elbows_category_id, "отвод", 160, None, None, None, None, "45°", "отвод_160х45deg.png"),
("Отвод 160мм на 87°", elbows_category_id, "отвод", 160, None, None, None, None, "87°", "отвод_160х87deg.png"),
("Тройник 110х110 мм на 45°", tee_category_id, "тройник", 110, None, None, None, None, "45°", "тройник_45deg_110х110.png"),
("Тройник 160х110 мм на 45°", tee_category_id, "тройник", 160, None, None, None, None, "45°", "тройник_45deg_160х110.png"),
("Тройник 160х160 мм на 45°", tee_category_id, "тройник", 160, None, None, None, None, "45°", "тройник_45deg_160х160.png"),
("Тройник 110х110 мм на 87°", tee_category_id, "тройник", 110, None, None, None, None, "87°", "тройник_87deg_110х110.png"),
("Тройник 160х110 мм на 87°", tee_category_id, "тройник", 160, None, None, None, None, "87°", "тройник_87deg_160х110.png"),
("Тройник 160х160 мм на 87°", tee_category_id, "тройник", 160, None, None, None, None, "87°", "тройник_87deg_160х160.png"),
("Муфта надвижная (ремонтная) 110 мм", couplings_category_id, "муфта", 110, None, None, None, None, None, "муфта_надвижная_(ремонтная)_110.png"),
("Муфта надвижная (ремонтная) 160 мм", couplings_category_id, "муфта", 160, None, None, None, None, None, "муфта_надвижная_(ремонтная)_160.png"),
("Муфта соединительная 110 мм", couplings_category_id, "муфта", 110, None, None, None, None, None, "муфта_соединительная_110.png"),
("Муфта соединительная 160 мм", couplings_category_id, "муфта", 160, None, None, None, None, None, "муфта_соединительная_160.png"),
("Редуктор 160 мм", couplings_category_id, "редуктор", 160, None, None, None, None, None, "редуктор_160.png"),
("Заглушка для раструба 110 мм", accessories_category_id, "заглушка", 110, None, None, None, None, None, "заглушка_для_раструба_110.png"),
("Заглушка для раструба 160 мм", accessories_category_id, "заглушка", 160, None, None, None, None, None, "заглушка_для_раструба_160.png"),
("Ревизия 110 мм", accessories_category_id, "ревизия", 110, None, None, None, None, None, "ревизия_110.png"),
("Ревизия 160 мм", accessories_category_id, "ревизия", 160, None, None, None, None, None, "ревизия_160.png"),
]
for name, cat_id, fitting_type, diameter, thickness, length, color, app_type, angle, filename in fittings:
full_name = f"{name} для наружной канализации"
image_url = f"{base_url}/products/fittings/{filename}"
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} товаров в базу данных!")