def get_all_products(self):
conn = self.connect()
cursor = conn.cursor()
# 1. Выгружаем все справочники в словари (ID -> Текст)
cursor.execute("SELECT nam_id, tovar_name FROM name_tovar")
names_dict = {str(row[0]): str(row[1]) for row in cursor.fetchall()}
cursor.execute("SELECT sup_id, sup_name FROM supliers")
supliers_dict = {str(row[0]): str(row[1]) for row in cursor.fetchall()}
cursor.execute("SELECT maker_id, maker_name FROM makers")
makers_dict = {str(row[0]): str(row[1]) for row in cursor.fetchall()}
cursor.execute("SELECT male_id, male_name FROM male")
categories_dict = {str(row[0]): str(row[1]) for row in cursor.fetchall()}
# 2. Выполняем твой оригинальный безопасный запрос
cursor.execute("SELECT * FROM Tovar")
rows = cursor.fetchall()
conn.close()
products = []
for r in rows:
# Получаем ID-шники из ячеек
name_id = str(r[2]) if r[2] else ""
sup_id = str(r[5]) if r[5] else ""
maker_id = str(r[6]) if r[6] else ""
cat_id = str(r[7]) if r[7] else ""
# Подставляем текст из словаря с помощью метода get().
# Если ключа нет, он оставит старое значение.
products.append(Product(
tovar_id=str(r[0]),
article=str(r[1]),
name=names_dict.get(name_id, name_id),
unit=str(r[3]),
price=str(r[4]),
supplier=supliers_dict.get(sup_id, sup_id),
manufacturer=makers_dict.get(maker_id, maker_id),
category=categories_dict.get(cat_id, cat_id),
discount=str(r[8]) if r[8] else "0",
quantity=str(r[9]) if r[9] else "0",
description=str(r[10]) if r[10] else "",
photo=str(r[11]) if r[11] else ""
))
return products