Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6 сем / 1 / МиСПрИС_1374_1_Наволоцкий_Харитонов_Зырянов.docx
Скачиваний:
11
Добавлен:
29.03.2025
Размер:
3.55 Mб
Скачать

2.2.16. Изменение имени категории

функция: change_category_name - изменение имени категории

-- вход:

-- 1. old_name - текущее имя категории

-- 2. new_name - новое имя категории

-- выход: нет

-- эффекты:

-- 1. изменение имени категории

-- требования:

-- 1. категория должна существовать

-- 2. новое имя категории не должно быть занято

def change_category_name(old_name, new_name):

try:

if is_category_exists(old_name):

if not is_category_exists(new_name):

cursor.execute("SELECT id FROM category WHERE category_name = ?", (old_name,))

category_name_id = cursor.fetchone()[0]

cursor.execute("UPDATE category SET category_name = ? WHERE id = ?", (new_name, category_name_id))

print('Имя категории успешно изменено.')

else:

print('Указанное новое имя категории уже существует!')

else:

print('Указанная категория не существует.')

conn.commit()

except Exception as _ex:

print(f"Произошла ошибка при изменении имени категории: {_ex}")

2.2.17. Изменение имени изделия

функция: change_product_name - изменение имени изделия

-- вход:

-- 1. old_name - текущее имя изделия

-- 2. new_name - новое имя изделия

-- выход: нет

-- эффекты:

-- 1. изменение имени изделия

-- требования:

-- 1. изделие должно существовать

-- 2. новое имя не должно быть занято

def change_product_name(old_name, new_name):

try:

if is_product_exist(old_name):

if not is_product_exist(new_name):

cursor.execute("SELECT id FROM product WHERE product_name = ?", (old_name,))

product_name_id = cursor.fetchone()[0]

cursor.execute("UPDATE product SET product_name = ? WHERE id = ?", (new_name, product_name_id))

print('Имя изделия успешно изменено.')

else:

print('Указанное новое имя изделия уже существует!')

else:

print('Указанное изделие не существует.')

conn.commit()

except Exception as _ex:

print(f"Произошла ошибка при изменении имени изделия: {_ex}")

2.2.18. Получение всех предков подкатегории

функция: get_category_parents - получение всех предков подкатегории

-- вход:

-- 1. category_name - имя категории

-- выход:

-- 1. все предки подкатегории

-- эффекты: нет

-- требования:

-- 1. категория должна существовать

def get_category_parents(category_name):

if is_category_exists(category_name):

category_name_copy = category_name

try:

cursor.execute("SELECT id FROM category WHERE category_name = ?", (category_name,))

category_id = cursor.fetchone()[0]

# function for recursive search parents

def find_parents(category_id, parents_list):

id_parent = 0

cursor.execute("SELECT EXISTS(SELECT 1 FROM category WHERE id = ?)", (category_id,))

record_exists = cursor.fetchone()[0]

if record_exists:

cursor.execute("SELECT id_parent FROM category WHERE id = ?", (category_id,))

id_parent = cursor.fetchone()[0]

if id_parent == 0:

return

if category_id != 0 and id_parent != 0:

if id_parent != 0:

cursor.execute("SELECT category_name FROM category WHERE id = ?", (id_parent,))

parent_name = cursor.fetchone()

parents_list.append(parent_name)

find_parents(id_parent, parents_list)

parents_list = []

parents_list_res = []

# begin recursive search for parents

find_parents(category_id, parents_list)

for elem in parents_list:

if elem:

parents_list_res.append(elem[0])

if parents_list_res:

print(f'родительские элементы для категории "{category_name_copy}": \n {parents_list_res}')

else:

print(f'У категории "{category_name_copy}" нет родительских элементов')

except Exception as _ex:

print(f"Произошла ошибка при получении списка родителей категории: {_ex}")

else:

print('Категории не существует.')

Соседние файлы в папке 1