126 lines
8.0 KiB
Python
126 lines
8.0 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("Начинаем инициализацию базы категорий...")
|
||
|
||
# Добавляем категории с распределением по страницам
|
||
# Страница 1
|
||
main_category_id = add_category(
|
||
conn,
|
||
"Трубы ПВХ",
|
||
"Трубы ПВХ для канализационных систем",
|
||
image_path="/images/categories/pvc_pipes_main.jpg",
|
||
page_number=1
|
||
)
|
||
|
||
# Страница 1
|
||
internal_category_id = add_category(
|
||
conn,
|
||
"Для внутренней канализации",
|
||
"Трубы для внутренней канализационной системы",
|
||
main_category_id,
|
||
image_path="/images/categories/internal_pipes.jpg",
|
||
page_number=1
|
||
)
|
||
|
||
# Страница 1
|
||
external_category_id = add_category(
|
||
conn,
|
||
"Для наружной канализации",
|
||
"Трубы для наружной канализационной системы",
|
||
main_category_id,
|
||
image_path="/images/categories/external_pipes.jpg",
|
||
page_number=1
|
||
)
|
||
|
||
# Дополнительные категории для демонстрации пагинации (страница 2)
|
||
add_category(
|
||
conn,
|
||
"Фитинги для ПВХ труб",
|
||
"Соединительные элементы для ПВХ труб",
|
||
main_category_id,
|
||
image_path="/images/categories/fittings.jpg",
|
||
page_number=2
|
||
)
|
||
|
||
add_category(
|
||
conn,
|
||
"Колена и отводы",
|
||
"Угловые соединения для ПВХ труб",
|
||
main_category_id,
|
||
image_path="/images/categories/elbows.jpg",
|
||
page_number=2
|
||
)
|
||
|
||
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")
|
||
|
||
log.info("Фильтры успешно добавлены")
|
||
|
||
# Данные продуктов с распределением по страницам
|
||
products_data = [
|
||
# Страница 1 - внутренние трубы
|
||
{"text": "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), с внутренней структурной стенкой толщиной 2,2 мм 110х2,2х500", "image": "/images/products/internal_110_500.jpg", "page": 1},
|
||
{"text": "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), с внутренней структурной стенкой толщиной 2,2 мм 110х2,2х1000", "image": "/images/products/internal_110_1000.jpg", "page": 1},
|
||
{"text": "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), с внутренней структурной стенкой толщиной 2,2 мм 110х2,2х1500", "image": "/images/products/internal_110_1500.jpg", "page": 1},
|
||
{"text": "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), с внутренней структурной стенкой толщиной 2,2 мм 110х2,2х2000", "image": "/images/products/internal_110_2000.jpg", "page": 1},
|
||
{"text": "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), с внутренней структурной стенкой толщиной 2,2 мм 110х2,2х3000", "image": "/images/products/internal_110_3000.jpg", "page": 1},
|
||
|
||
# Страница 1 - наружные трубы
|
||
{"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN4 110х3,2х500", "image": "/images/products/external_110_sn4_500.jpg", "page": 1},
|
||
{"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN4 110х3,2х1000", "image": "/images/products/external_110_sn4_1000.jpg", "page": 1},
|
||
{"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN4 110х3,2х2000", "image": "/images/products/external_110_sn4_2000.jpg", "page": 1},
|
||
|
||
# Страница 2 - оставшиеся наружные трубы
|
||
{"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN4 110х3,2х3000", "image": "/images/products/external_110_sn4_3000.jpg", "page": 2},
|
||
{"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN4 110х3,2х4000", "image": "/images/products/external_110_sn4_4000.jpg", "page": 2},
|
||
{"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN2 160х3,6х1000", "image": "/images/products/external_160_sn2_1000.jpg", "page": 2},
|
||
{"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN2 160х3,6х2000", "image": "/images/products/external_160_sn2_2000.jpg", "page": 2},
|
||
{"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN2 160х3,6х3000", "image": "/images/products/external_160_sn2_3000.jpg", "page": 2},
|
||
]
|
||
|
||
added_products = 0
|
||
for product_info in products_data:
|
||
product_text = product_info["text"]
|
||
image_path = product_info["image"]
|
||
page_number = product_info["page"]
|
||
|
||
if "ВНУТРЕННЕЙ" in product_text:
|
||
category_id = internal_category_id
|
||
else:
|
||
category_id = external_category_id
|
||
|
||
product_id = add_product(conn, product_text, category_id, image_path, page_number)
|
||
if product_id:
|
||
added_products += 1
|
||
log.info(f"Добавлен товар: {product_text[:50]}... (страница {page_number})")
|
||
else:
|
||
log.error(f"Ошибка при добавлении товара: {product_text}")
|
||
|
||
conn.commit()
|
||
conn.close()
|
||
|
||
log.success(f"Успешно добавлено {added_products} товаров в базу категорий!")
|