mirror of
https://github.com/ada-dmitry/lab6.git
synced 2026-09-24 01:10:15 +00:00
rebase
This commit is contained in:
+2
-2
@@ -178,11 +178,11 @@ class Main:
|
|||||||
for i in lst:
|
for i in lst:
|
||||||
self.dish_arr.append([i[2], str(i[1]), str(i[4])])
|
self.dish_arr.append([i[2], str(i[1]), str(i[4])])
|
||||||
self.max_len_name = max(self.max_len_name, len(i[2]))
|
self.max_len_name = max(self.max_len_name, len(i[2]))
|
||||||
print("№" + " "*(self.max_index + 1)+ "Название" + " "*(self.max_len_name - 4)\
|
print("№" + " "*(len(str(self.max_index)) + 1)+ "Название" + " "*(self.max_len_name - 4)\
|
||||||
+"Время приготовления Краткая инструкция\
|
+"Время приготовления Краткая инструкция\
|
||||||
\n-------------------------------------------------------------------------------------------")
|
\n-------------------------------------------------------------------------------------------")
|
||||||
for i in range(len(self.dish_arr)):
|
for i in range(len(self.dish_arr)):
|
||||||
txt = str(i+1) + " "*(2+self.max_index-len(str(i)))
|
txt = str(len(str(self.max_index))+1) + " "*(2+self.max_index-len(str(i)))
|
||||||
txt += self.dish_arr[i][0] + " "*(4+self.max_len_name - len(self.dish_arr[i][0]))
|
txt += self.dish_arr[i][0] + " "*(4+self.max_len_name - len(self.dish_arr[i][0]))
|
||||||
txt += self.dish_arr[i][1] + " "*(5+19-len(self.dish_arr[i][1]))
|
txt += self.dish_arr[i][1] + " "*(5+19-len(self.dish_arr[i][1]))
|
||||||
txt += self.dish_arr[i][2]
|
txt += self.dish_arr[i][2]
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -46,8 +46,8 @@ def validate_input(prompt, min_value, max_value):
|
|||||||
print("Введенное значение должно быть числом.")
|
print("Введенное значение должно быть числом.")
|
||||||
|
|
||||||
|
|
||||||
test1 = 'erhwogngonwro'
|
# test1 = 'erhwogngonwro'
|
||||||
test2 = '1 minute'
|
# test2 = '1 minute'
|
||||||
test3 = '2 hours 3 minutes'
|
# test3 = '2 hours 3 minutes'
|
||||||
|
|
||||||
print(validate_time_format(test1), validate_time_format(test2), validate_time_format(test3))
|
# print(validate_time_format(test1), validate_time_format(test2), validate_time_format(test3))
|
||||||
@@ -65,6 +65,7 @@ class DbTable:
|
|||||||
self.dbconn.conn.commit()
|
self.dbconn.conn.commit()
|
||||||
except psycopg2.errors.UniqueViolation:
|
except psycopg2.errors.UniqueViolation:
|
||||||
self.dbconn.conn.rollback()
|
self.dbconn.conn.rollback()
|
||||||
|
print('Такая строка уже существует. Повторите попытку')
|
||||||
return
|
return
|
||||||
|
|
||||||
def update(self, column, values, wh):
|
def update(self, column, values, wh):
|
||||||
|
|||||||
Binary file not shown.
@@ -80,13 +80,13 @@ class DishTable(DbTable):
|
|||||||
or(DishTable().check_by_name(ins_name)):
|
or(DishTable().check_by_name(ins_name)):
|
||||||
|
|
||||||
if(ins_name.strip() == ''):
|
if(ins_name.strip() == ''):
|
||||||
ins_name = input("Пустая строка. Повторите ввод! Укажите название удаляемого блюда (0 - отмена): ")
|
ins_name = input("Пустая строка. Повторите ввод! Укажите название добавляемого блюда (0 - отмена): ")
|
||||||
if ins_name == "0":
|
if ins_name == "0":
|
||||||
return "1"
|
return "1"
|
||||||
|
|
||||||
elif(len(ins_name.strip()) > 32):
|
elif(len(ins_name.strip()) > 32):
|
||||||
ins_name = input("Слишком длинная строка. Повторите ввод!\
|
ins_name = input("Слишком длинная строка. Повторите ввод!\
|
||||||
Укажите название удаляемого блюда (0 - отмена): ")
|
Укажите название добавляемого блюда (0 - отмена): ")
|
||||||
if ins_name == "0":
|
if ins_name == "0":
|
||||||
return "1"
|
return "1"
|
||||||
else:
|
else:
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
+23
-4
@@ -46,8 +46,27 @@ def validate_input(prompt, min_value, max_value):
|
|||||||
print("Введенное значение должно быть числом.")
|
print("Введенное значение должно быть числом.")
|
||||||
|
|
||||||
|
|
||||||
test1 = 'erhwogngonwro'
|
# test1 = 'erhwogngonwro'
|
||||||
test2 = '1 minute'
|
# test2 = '1 minute'
|
||||||
test3 = '2 hours 3 minutes'
|
# test3 = '2 hours 3 minutes'
|
||||||
|
|
||||||
print(validate_time_format(test1), validate_time_format(test2), validate_time_format(test3))
|
# print(validate_time_format(test1), validate_time_format(test2), validate_time_format(test3))
|
||||||
|
|
||||||
|
def add_zero_before(old_index: str, max_len: str) -> str:
|
||||||
|
"""Функция для "красивого" вывода индексов
|
||||||
|
|
||||||
|
Args:
|
||||||
|
old_index (str): текущий индекс для вывода
|
||||||
|
max_len (int): максимальная длина индексов
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
new_index (str): окончательная версия индекса
|
||||||
|
"""
|
||||||
|
ln = len(old_index)
|
||||||
|
new_index = old_index[:]
|
||||||
|
for i in range(max_len-ln):
|
||||||
|
new_index = '0' + new_index
|
||||||
|
return new_index
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -97,6 +97,24 @@ class DbTable:
|
|||||||
cur = self.dbconn.conn.cursor()
|
cur = self.dbconn.conn.cursor()
|
||||||
cur.execute(sql)
|
cur.execute(sql)
|
||||||
return cur.fetchall()
|
return cur.fetchall()
|
||||||
|
|
||||||
|
def get_page(self, page_num):
|
||||||
|
"""Функция для получения "страницы" из БД по её номеру.
|
||||||
|
В программе заменяет .all() для вывода информации.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
page_num (int): номер страницы, определяется пользователем.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
lst (list): Список, содержащий в себе все строки для этой страницы.
|
||||||
|
"""
|
||||||
|
ROW_PER_PAGE = 10
|
||||||
|
cur = self.dbconn.conn.cursor()
|
||||||
|
offset = (page_num - 1) * ROW_PER_PAGE
|
||||||
|
sql = (f"SELECT * FROM {self.table_name()} LIMIT {ROW_PER_PAGE} OFFSET {offset}")
|
||||||
|
cur.execute(sql)
|
||||||
|
return cur.fetchall()
|
||||||
|
|
||||||
|
|
||||||
def select_one(self, **kwargs):
|
def select_one(self, **kwargs):
|
||||||
conditions = []
|
conditions = []
|
||||||
|
|||||||
+138
-43
@@ -1,5 +1,7 @@
|
|||||||
import sys
|
import sys
|
||||||
import texts
|
import texts
|
||||||
|
import math
|
||||||
|
import os
|
||||||
# import time
|
# import time
|
||||||
sys.path.append('tables')
|
sys.path.append('tables')
|
||||||
|
|
||||||
@@ -17,10 +19,16 @@ TODO:
|
|||||||
4) UPDATE для категорий - done
|
4) UPDATE для категорий - done
|
||||||
5) Красивый вывод - done
|
5) Красивый вывод - done
|
||||||
6) Доделать ограничение на выбор категории - done
|
6) Доделать ограничение на выбор категории - done
|
||||||
7) UPDATE для блюд - done
|
7) UPDATE для блюд - done 0.7
|
||||||
8) Постраничный вывод - indev
|
8) Постраничный вывод - indev 0.8 - реализация через offset.
|
||||||
|
9) Реализовать отдельный просмотр(offset)
|
||||||
|
10) И отдельный вывод(offset)
|
||||||
|
|
||||||
|
|
||||||
FIXME:
|
FIXME:
|
||||||
|
1) Откомментировать os.cls
|
||||||
|
2) Исправить вылет при неверном вводе в самое начало(сделать выход на предыдущую менюшку)
|
||||||
|
3) При вводе текста пропуск сделать с помощью пустой строки.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
@@ -33,33 +41,29 @@ class Main:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
DbTable.dbconn = self.connection
|
DbTable.dbconn = self.connection
|
||||||
return
|
return
|
||||||
|
|
||||||
def db_init(self):
|
def db_init(self):
|
||||||
cth = CathTable()
|
cth = CathTable()
|
||||||
d = DishTable()
|
d = DishTable()
|
||||||
cth.create()
|
cth.create()
|
||||||
d.create()
|
d.create()
|
||||||
return
|
return
|
||||||
|
|
||||||
def db_insert_somethings(self):
|
def db_insert_somethings(self):
|
||||||
cth = CathTable()
|
cth = CathTable()
|
||||||
dsh = DishTable()
|
dsh = DishTable()
|
||||||
|
|
||||||
cth.example_insert()
|
cth.example_insert()
|
||||||
dsh.example_insert()
|
dsh.example_insert()
|
||||||
|
|
||||||
def db_drop(self):
|
def db_drop(self):
|
||||||
cth = CathTable()
|
cth = CathTable()
|
||||||
d = DishTable()
|
d = DishTable()
|
||||||
d.drop()
|
d.drop()
|
||||||
cth.drop()
|
cth.drop()
|
||||||
return
|
return
|
||||||
|
|
||||||
def show_main_menu(self):
|
def show_main_menu(self):
|
||||||
menu = texts.show_main_menu_txt
|
menu = texts.show_main_menu_txt
|
||||||
print(menu)
|
print(menu)
|
||||||
|
print('Катя и Дима хорошенькие, тюк')
|
||||||
return
|
return
|
||||||
|
|
||||||
def read_next_step(self):
|
def read_next_step(self):
|
||||||
return input("=> ").strip()
|
return input("=> ").strip()
|
||||||
|
|
||||||
@@ -75,20 +79,44 @@ class Main:
|
|||||||
return "0"
|
return "0"
|
||||||
else:
|
else:
|
||||||
return next_step
|
return next_step
|
||||||
|
|
||||||
|
|
||||||
def show_cath(self):
|
def show_cath(self):
|
||||||
self.cath_id = -1
|
self.cath_id = -1
|
||||||
self.cath_arr = []
|
|
||||||
menu = texts.show_cath_1txt
|
menu = texts.show_cath_1txt
|
||||||
print(menu)
|
print(menu)
|
||||||
lst = CathTable().all()
|
self.max_cath_index = len(CathTable().all())
|
||||||
self.max_cath_index = (len(lst))
|
self.cath_page = 1
|
||||||
for i in lst:
|
lst = CathTable().get_page(self.cath_page)
|
||||||
self.cath_arr.append(str(i[0]))
|
action = '>'
|
||||||
|
max_page = math.ceil(self.max_cath_index/10)
|
||||||
|
while True:
|
||||||
|
|
||||||
for i in range(len(self.cath_arr)):
|
self.cath_arr = []
|
||||||
print(str(i+1) + "\t" + self.cath_arr[i])
|
|
||||||
|
|
||||||
|
for i in lst:
|
||||||
|
self.cath_arr.append(str(i[0]))
|
||||||
|
os.system('cls')
|
||||||
|
for i in range(len(self.cath_arr)):
|
||||||
|
print(add_func.add_zero_before(str((i+1)+(10*(self.cath_page-1))), len(str(self.max_cath_index))) + "\t" + self.cath_arr[i])
|
||||||
|
action = input('-------------------------------------------------------------------------------------------\n\
|
||||||
|
Для переключения между страницами используйте "<" и ">"\nКол-во записей на странице: 10\n\
|
||||||
|
Для выхода в меню действий нажмите любую другую клавишу\n=> ')
|
||||||
|
if(action=='>'):
|
||||||
|
if(self.cath_page==max_page):
|
||||||
|
self.cath_page = 1
|
||||||
|
else:
|
||||||
|
self.cath_page += 1
|
||||||
|
lst = CathTable().get_page(self.cath_page)
|
||||||
|
elif(action=='<'):
|
||||||
|
if(self.cath_page==1):
|
||||||
|
self.cath_page = max_page
|
||||||
|
else:
|
||||||
|
self.cath_page -= 1
|
||||||
|
lst = CathTable().get_page(self.cath_page)
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
|
||||||
menu = texts.show_cath_2txt
|
menu = texts.show_cath_2txt
|
||||||
print(menu)
|
print(menu)
|
||||||
return
|
return
|
||||||
@@ -98,9 +126,17 @@ class Main:
|
|||||||
"""
|
"""
|
||||||
while True:
|
while True:
|
||||||
if next_step == "4": # Удаление категории
|
if next_step == "4": # Удаление категории
|
||||||
x = add_func.validate_input('Введите номер удаляемой категории (0 - для отмены): ', 0, self.max_cath_index)
|
if(self.cath_page<(self.max_cath_index//10)):
|
||||||
|
left = ((self.cath_page-1)*10)+1
|
||||||
|
right = left+9
|
||||||
|
print(left)
|
||||||
|
|
||||||
|
else:
|
||||||
|
left = 1+((self.cath_page-1)*10)
|
||||||
|
right = self.max_cath_index
|
||||||
|
x = add_func.validate_input('Введите номер удаляемой категории (0 - для отмены): ', left, right)
|
||||||
if(x!=-1):
|
if(x!=-1):
|
||||||
CathTable().delete(self.cath_arr[int(x)-1])
|
CathTable().delete(self.cath_arr[(int(x)-1)-((self.cath_page-1)*10)])
|
||||||
return "1"
|
return "1"
|
||||||
|
|
||||||
elif next_step == "6": #Добавление блюда в категорию
|
elif next_step == "6": #Добавление блюда в категорию
|
||||||
@@ -108,9 +144,16 @@ class Main:
|
|||||||
next_step = "5"
|
next_step = "5"
|
||||||
|
|
||||||
elif next_step == "7":#Удаление блюда из категории
|
elif next_step == "7":#Удаление блюда из категории
|
||||||
x = add_func.validate_input('Введите номер удаляемого блюда (0 - для отмены): ', 0, self.max_index)
|
if(self.dish_page<(self.max_index//10)):
|
||||||
|
left = ((self.dish_page-1)*10)+(self.dish_page==1)
|
||||||
|
right = left+9
|
||||||
|
|
||||||
|
else:
|
||||||
|
left = 1+((self.dish_page-1)*10)+(self.dish_page!=1)
|
||||||
|
right = self.max_index
|
||||||
|
x = add_func.validate_input('Введите номер удаляемого блюда (0 - для отмены): ', left, right)
|
||||||
if(x!=-1):
|
if(x!=-1):
|
||||||
DishTable().delete(self.dish_arr[int(x)-1][0])
|
DishTable().delete(self.dish_arr[(int(x)-1)-((self.dish_page-1)*10)][0])
|
||||||
else:
|
else:
|
||||||
return "1"
|
return "1"
|
||||||
next_step = "5"
|
next_step = "5"
|
||||||
@@ -119,14 +162,28 @@ class Main:
|
|||||||
next_step = self.show_dish_in_cath()
|
next_step = self.show_dish_in_cath()
|
||||||
|
|
||||||
elif next_step == "8": # Обновление названия категории
|
elif next_step == "8": # Обновление названия категории
|
||||||
x = add_func.validate_input('Введите номер обновляемой категории (0 - для отмены): ', 0, self.max_cath_index)
|
if(self.cath_page<(self.max_cath_index//10)):
|
||||||
|
left = 1+((self.cath_page-1)*10)
|
||||||
|
right = left+9
|
||||||
|
|
||||||
|
else:
|
||||||
|
left = 1+((self.cath_page-1)*10)
|
||||||
|
right = self.max_cath_index
|
||||||
|
x = add_func.validate_input('Введите номер обновляемой категории (0 - для отмены): ', left, right)
|
||||||
if(x!=-1):
|
if(x!=-1):
|
||||||
CathTable().cath_update(self.cath_arr[int(x)-1])
|
CathTable().cath_update(self.cath_arr[(int(x)-1)-((self.cath_page-1)*10)])
|
||||||
return "1"
|
return "1"
|
||||||
elif next_step == "88":
|
elif next_step == "88":
|
||||||
x = add_func.validate_input('Введите номер изменяемого блюда (0 - для отмены): ', 0, self.max_index)
|
if(self.dish_page<(self.max_index//10)):
|
||||||
|
left = 1+((self.dish_page-1)*10)
|
||||||
|
right = left+9
|
||||||
|
|
||||||
|
else:
|
||||||
|
left = 0+((self.dish_page-1)*10)
|
||||||
|
right = self.max_index
|
||||||
|
x = add_func.validate_input('Введите номер обновляемого блюда (0 - для отмены): ', left, right)
|
||||||
if(x!=-1):
|
if(x!=-1):
|
||||||
DishTable().update_dish(self.dish_arr[int(x)-1][0])
|
DishTable().update_dish(self.dish_arr[(int(x)-1)-((self.cath_page-1)*10)][0])
|
||||||
else:
|
else:
|
||||||
return "1"
|
return "1"
|
||||||
|
|
||||||
@@ -160,38 +217,75 @@ class Main:
|
|||||||
def show_dish_in_cath(self):
|
def show_dish_in_cath(self):
|
||||||
"""Вывод всех блюд в выбранной пользователем категории
|
"""Вывод всех блюд в выбранной пользователем категории
|
||||||
"""
|
"""
|
||||||
self.dish_arr = []
|
|
||||||
if self.cath_id == -1:
|
if self.cath_id == -1:
|
||||||
while True:
|
while True:
|
||||||
x = add_func.validate_input('Выберите номер интересуемой категории (0 - отмена): ', 0, self.max_cath_index)
|
if(self.cath_page<(self.max_cath_index//10)):
|
||||||
|
left = 1+((self.cath_page-1)*10)
|
||||||
|
right = left+9
|
||||||
|
|
||||||
|
else:
|
||||||
|
left = 1+((self.cath_page-1)*10)+(self.cath_page!=1)
|
||||||
|
right = self.max_cath_index
|
||||||
|
x = add_func.validate_input('Выберите номер интересуемой категории (0 - отмена): ', left, right)
|
||||||
|
os.system('cls')
|
||||||
if(x!=-1):
|
if(x!=-1):
|
||||||
self.cath_id = CathTable().find_by_name(self.cath_arr[x-1])
|
self.cath_id = CathTable().find_by_name(self.cath_arr[(int(x)-1)-((self.cath_page-1)*10)])
|
||||||
self.cath_obj = self.cath_arr[x-1]
|
self.cath_obj = self.cath_arr[(int(x)-1)-((self.cath_page-1)*10)]
|
||||||
else:
|
else:
|
||||||
return "1"
|
return "1"
|
||||||
|
|
||||||
print("Выбрана категория: " + self.cath_obj)
|
print("Выбрана категория: " + self.cath_obj)
|
||||||
print("Блюда:")
|
print("Блюда:")
|
||||||
|
self.dish_page = 1
|
||||||
lst = DishTable().all_by_cath_id(self.cath_id)
|
lst = DishTable().get_page_dish(self.cath_id, self.dish_page)
|
||||||
self.max_len_name = 0
|
self.max_len_name = 0
|
||||||
self.max_index = len(lst)
|
self.max_index = len(DishTable().all_by_cath_id(self.cath_id))
|
||||||
for i in lst:
|
action = '>'
|
||||||
self.dish_arr.append([i[2], str(i[1]), str(i[4])])
|
max_page = math.ceil(self.max_index/10)
|
||||||
self.max_len_name = max(self.max_len_name, len(i[2]))
|
lst = DishTable().get_page_dish(self.cath_id, self.dish_page)
|
||||||
print("№" + " "*(self.max_index + 1)+ "Название" + " "*(self.max_len_name - 4)\
|
|
||||||
+"Время приготовления Краткая инструкция\
|
while True:
|
||||||
\n-------------------------------------------------------------------------------------------")
|
self.dish_arr = []
|
||||||
for i in range(len(self.dish_arr)):
|
|
||||||
txt = str(i+1) + " "*(2+self.max_index-len(str(i)))
|
for i in lst:
|
||||||
txt += self.dish_arr[i][0] + " "*(4+self.max_len_name - len(self.dish_arr[i][0]))
|
self.dish_arr.append([i[2], str(i[1]), str(i[4])])
|
||||||
txt += self.dish_arr[i][1] + " "*(5+19-len(self.dish_arr[i][1]))
|
self.max_len_name = max(self.max_len_name, len(i[2]))
|
||||||
txt += self.dish_arr[i][2]
|
os.system('cls')
|
||||||
print(txt)
|
print("№" + " "*(len(str(self.max_index)) + 1)+ "Название" + " "*(self.max_len_name - 4)\
|
||||||
|
+"Время приготовления Краткая инструкция\
|
||||||
|
\n-------------------------------------------------------------------------------------------")
|
||||||
|
|
||||||
|
for i in range(len(self.dish_arr)):
|
||||||
|
txt = add_func.add_zero_before(str((i+1)+(10*(self.dish_page-1))), len(str(self.max_index))) + " "*(2+len(str(self.max_index)))
|
||||||
|
txt += self.dish_arr[i][0] + " "*(4+self.max_len_name - len(self.dish_arr[i][0]))
|
||||||
|
txt += self.dish_arr[i][1] + " "*(5+19-len(self.dish_arr[i][1]))
|
||||||
|
txt += self.dish_arr[i][2]
|
||||||
|
print(txt)
|
||||||
|
action = input('-------------------------------------------------------------------------------------------\n\
|
||||||
|
Для переключения между страницами используйте "<" и ">"\nКол-во записей на странице: 10\n\
|
||||||
|
Для выхода в меню действий нажмите любую другую клавишу\n=> ')
|
||||||
|
if(action=='>'):
|
||||||
|
if(self.dish_page==max_page):
|
||||||
|
self.dish_page = 1
|
||||||
|
else:
|
||||||
|
self.dish_page += 1
|
||||||
|
lst = DishTable().get_page_dish(self.cath_id, self.dish_page)
|
||||||
|
elif(action=='<'):
|
||||||
|
if(self.dish_page==1):
|
||||||
|
self.dish_page = max_page
|
||||||
|
else:
|
||||||
|
self.dish_page -= 1
|
||||||
|
lst = DishTable().get_page_dish(self.cath_id, self.dish_page)
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
|
||||||
menu = texts.show_dish_in_cath_txt
|
menu = texts.show_dish_in_cath_txt
|
||||||
print(menu)
|
print(menu)
|
||||||
return self.read_next_step()
|
return self.read_next_step()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def main_cycle(self):
|
def main_cycle(self):
|
||||||
"""Основной цикл программы, регулирующий порядок действий
|
"""Основной цикл программы, регулирующий порядок действий
|
||||||
"""
|
"""
|
||||||
@@ -224,5 +318,6 @@ class Main:
|
|||||||
DbTable.dbconn.test()
|
DbTable.dbconn.test()
|
||||||
|
|
||||||
m = Main()
|
m = Main()
|
||||||
|
|
||||||
# m.test()
|
# m.test()
|
||||||
m.main_cycle()
|
m.main_cycle()
|
||||||
Binary file not shown.
@@ -36,6 +36,15 @@ class DishTable(DbTable):
|
|||||||
cur = self.dbconn.conn.cursor()
|
cur = self.dbconn.conn.cursor()
|
||||||
cur.execute(sql)
|
cur.execute(sql)
|
||||||
return cur.fetchall()
|
return cur.fetchall()
|
||||||
|
|
||||||
|
def get_page_dish(self, cath_id, page_num):
|
||||||
|
row_per_page = 10
|
||||||
|
offset = (page_num - 1) * row_per_page
|
||||||
|
sql = f"""SELECT * FROM dish WHERE cath_id = {str(cath_id)}\
|
||||||
|
ORDER BY {", ".join(self.primary_key())} LIMIT {row_per_page} OFFSET {offset}"""
|
||||||
|
cur = self.dbconn.conn.cursor()
|
||||||
|
cur.execute(sql)
|
||||||
|
return cur.fetchall()
|
||||||
|
|
||||||
def delete(self, val):
|
def delete(self, val):
|
||||||
sql = "DELETE FROM dish"
|
sql = "DELETE FROM dish"
|
||||||
@@ -80,22 +89,22 @@ class DishTable(DbTable):
|
|||||||
or(DishTable().check_by_name(ins_name)):
|
or(DishTable().check_by_name(ins_name)):
|
||||||
|
|
||||||
if(ins_name.strip() == ''):
|
if(ins_name.strip() == ''):
|
||||||
ins_name = input("Пустая строка. Повторите ввод! Укажите название удаляемого блюда (0 - отмена): ")
|
ins_name = input("\nПустая строка. Повторите ввод! Укажите название удаляемого блюда (0 - отмена): ")
|
||||||
if ins_name == "0":
|
if ins_name == "0":
|
||||||
return "1"
|
return "1"
|
||||||
|
|
||||||
elif(len(ins_name.strip()) > 32):
|
elif(len(ins_name.strip()) > 32):
|
||||||
ins_name = input("Слишком длинная строка. Повторите ввод!\
|
ins_name = input("\nСлишком длинная строка. Повторите ввод!\
|
||||||
Укажите название удаляемого блюда (0 - отмена): ")
|
Укажите название удаляемого блюда (0 - отмена): ")
|
||||||
if ins_name == "0":
|
if ins_name == "0":
|
||||||
return "1"
|
return "1"
|
||||||
else:
|
else:
|
||||||
print('Такое блюдо уже существует')
|
print('\nТакое блюдо уже существует')
|
||||||
ins_name = input("Повторите ввод! Укажите название блюда (0 - отмена): ")
|
ins_name = input("Повторите ввод! Укажите название блюда (0 - отмена): ")
|
||||||
if ins_name == "0":
|
if ins_name == "0":
|
||||||
return "1"
|
return "1"
|
||||||
|
|
||||||
ins_time = input(f'Процесс добавления блюда: {ins_name}\
|
ins_time = input(f'\nПроцесс добавления блюда: {ins_name}\
|
||||||
\nВведите время приготовления в формате 10 minutes/1 hour 5 minutes (1 - для отмены): ')
|
\nВведите время приготовления в формате 10 minutes/1 hour 5 minutes (1 - для отмены): ')
|
||||||
while(ins_time==0)or(add_func.validate_time_format(ins_time)==False):
|
while(ins_time==0)or(add_func.validate_time_format(ins_time)==False):
|
||||||
if ins_time == "0":
|
if ins_time == "0":
|
||||||
@@ -104,7 +113,7 @@ class DishTable(DbTable):
|
|||||||
ins_time = input('Время введено в неверном формате. Повторите попытку.\n\
|
ins_time = input('Время введено в неверном формате. Повторите попытку.\n\
|
||||||
Введите время приготовления в формате 10 minutes/1 hour 5 minutes (1 - для отмены): ')
|
Введите время приготовления в формате 10 minutes/1 hour 5 minutes (1 - для отмены): ')
|
||||||
|
|
||||||
ins_manual = input(f'Процесс добавления блюда: {ins_name}\
|
ins_manual = input(f'\nПроцесс добавления блюда: {ins_name}\
|
||||||
\nВведите краткую инструкцию приготовления блюда (1 - для отмены): ')
|
\nВведите краткую инструкцию приготовления блюда (1 - для отмены): ')
|
||||||
if ins_manual == "0":
|
if ins_manual == "0":
|
||||||
return "1"
|
return "1"
|
||||||
@@ -115,50 +124,61 @@ class DishTable(DbTable):
|
|||||||
|
|
||||||
def update_dish(self, dish):
|
def update_dish(self, dish):
|
||||||
print('После изменения выберите другой пункт для изменения или введите 0 для выхода')
|
print('После изменения выберите другой пункт для изменения или введите 0 для выхода')
|
||||||
|
n = dish
|
||||||
x = -10000
|
x = -10000
|
||||||
obj_id = self.id_by_name(dish)[1]
|
obj_id = self.id_by_name(dish)[1]
|
||||||
while(x!=-1):
|
while True:
|
||||||
x = add_func.validate_input('Что вы хотите изменить в рецепте?\n\
|
x = add_func.validate_input(f'\nВыбранное блюдо: {n}\nЧто вы хотите изменить в рецепте?\n\
|
||||||
1 - Название\n2 - Время приготовления\n3 - Инструкция\n0 - для отмены\n=> ', 0, 3)
|
1 - Название\n2 - Время приготовления\n3 - Инструкция\n0 - для отмены\n=> ', 0, 3)
|
||||||
|
|
||||||
if(x==1):
|
if(x==1):
|
||||||
new_name = input(f"Текущее название {dish}.\nВведите новое название: ")
|
new_name = input(f"Текущее название {n}.\nВведите новое название (0 - для отмены): ")
|
||||||
while (new_name.strip() == '')or(len(new_name.strip()) > 32)\
|
while (new_name.strip() == '')or(len(new_name.strip()) > 32)\
|
||||||
or(DishTable().check_by_name(new_name)):
|
or(DishTable().check_by_name(new_name))or(x=='0'):
|
||||||
|
|
||||||
if(new_name.strip() == ''):
|
if(new_name.strip() == ''):
|
||||||
new_name = input("Пустая строка. Повторите ввод! Укажите название блюда (0 - отмена): ")
|
new_name = input("Пустая строка. Повторите ввод! Укажите название блюда (0 - отмена): ")
|
||||||
if new_name == "0":
|
if new_name == "0":
|
||||||
return "1"
|
break
|
||||||
|
|
||||||
|
elif(DishTable().check_by_name(new_name)):
|
||||||
|
print('Такое блюдо уже существует')
|
||||||
|
new_name = input("Повторите ввод! Укажите название блюда (0 - отмена): ")
|
||||||
|
if new_name == "0":
|
||||||
|
break
|
||||||
|
|
||||||
elif(len(new_name.strip()) > 32):
|
elif(len(new_name.strip()) > 32):
|
||||||
new_name = input("Слишком длинная строка. Повторите ввод!\
|
new_name = input("Слишком длинная строка. Повторите ввод!\
|
||||||
Укажите название блюда (0 - отмена): ")
|
Укажите название блюда (0 - отмена): ")
|
||||||
if new_name == "0":
|
if new_name == "0":
|
||||||
return "1"
|
break
|
||||||
else:
|
else:
|
||||||
print('Такое блюдо уже существует')
|
break
|
||||||
new_name = input("Повторите ввод! Укажите название блюда (0 - отмена): ")
|
|
||||||
if new_name == "0":
|
# dish = new_name
|
||||||
return "1"
|
n = new_name
|
||||||
new_name = "'" + new_name + "'"
|
new_name = "'" + new_name + "'"
|
||||||
self.update('dish_name', new_name, obj_id)
|
self.update('dish_name', new_name, obj_id)
|
||||||
|
|
||||||
elif(x==2):
|
elif(x==2):
|
||||||
new_time = input(f'Введите время приготовления в формате 10 minutes/1 hour 5 minutes (1 - для отмены): ')
|
new_time = input(f'Введите время приготовления в формате 10 minutes/1 hour 5 minutes (0 - для отмены): ')
|
||||||
while(new_time==0)or(add_func.validate_time_format(new_time)==False):
|
while(new_time==0)or(add_func.validate_time_format(new_time)==False):
|
||||||
if new_time == "0":
|
if new_time == "0":
|
||||||
return "1"
|
break
|
||||||
else:
|
else:
|
||||||
new_time = input('Введите время приготовления в формате 10 minutes/1 hour 5 minutes (1 - для отмены): ')
|
new_time = input('Введите время приготовления в формате 10 minutes/1 hour 5 minutes (0 - для отмены): ')
|
||||||
new_time = "'" + new_time + "'"
|
new_time = "'" + new_time + "'"
|
||||||
self.update('cook_time', new_time, obj_id)
|
self.update('cook_time', new_time, obj_id)
|
||||||
|
|
||||||
elif(x==3):
|
elif(x==3):
|
||||||
new_manual = input(f'Введите краткую инструкцию приготовления блюда (1 - для отмены): ')
|
new_manual = input(f'Введите краткую инструкцию приготовления блюда (0 - для отмены): ')
|
||||||
if new_manual == "0":
|
if new_manual == "0":
|
||||||
return "1"
|
break
|
||||||
new_manual = "'" + new_manual + "'"
|
new_manual = "'" + new_manual + "'"
|
||||||
self.update('manual', new_manual, obj_id)
|
self.update('manual', new_manual, obj_id)
|
||||||
|
|
||||||
|
elif(x==-1):
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -199,4 +219,59 @@ class DishTable(DbTable):
|
|||||||
self.insert_one([9, "1 hour 20 minutes", "Том ям", "Приготовить бульон, добавить морепродукты и специи."])
|
self.insert_one([9, "1 hour 20 minutes", "Том ям", "Приготовить бульон, добавить морепродукты и специи."])
|
||||||
self.insert_one([10, "3 hours 15 minutes", "Баранина по-гречески", "Замариновать баранину, запечь и подать с рисом."])
|
self.insert_one([10, "3 hours 15 minutes", "Баранина по-гречески", "Замариновать баранину, запечь и подать с рисом."])
|
||||||
self.insert_one([11, "50 minutes", "Картофельные оладьи", "Приготовить картофельное пюре, сформировать оладьи и обжарить."])
|
self.insert_one([11, "50 minutes", "Картофельные оладьи", "Приготовить картофельное пюре, сформировать оладьи и обжарить."])
|
||||||
|
self.insert_one([1, "30 minutes", "Омлет", "Взбить яйца, добавить ингредиенты по вкусу и запечь в духовке или обжарить на сковороде."])
|
||||||
|
self.insert_one([1, "25 minutes", "Гренки", "Нарезать хлеб, обжарить на сковороде с маслом и чесноком."])
|
||||||
|
self.insert_one([1, "45 minutes", "Запеканка", "Смешать ингредиенты, выложить в форму и запечь в духовке."])
|
||||||
|
self.insert_one([1, "1 hour", "Ризотто", "Обжарить лук и рис, постепенно добавлять бульон и размешивать."])
|
||||||
|
self.insert_one([1, "20 minutes", "Тосты", "Нарезать хлеб, обжарить на сковороде или в тостере, добавить начинку."])
|
||||||
|
self.insert_one([1, "35 minutes", "Фриттата", "Смесь яиц, овощей и других ингредиентов, запеченная в духовке."])
|
||||||
|
self.insert_one([1, "40 minutes", "Киш", "Открытый пирог с начинкой из яиц, сыра и других ингредиентов."])
|
||||||
|
self.insert_one([1, "1 hour 10 minutes", "Рагу", "Тушеное блюдо из мяса, овощей и специй."])
|
||||||
|
self.insert_one([1, "50 minutes", "Каннеллони", "Трубочки из теста, фаршированные начинкой и запеченные в соусе."])
|
||||||
|
self.insert_one([1, "30 minutes", "Крок-месьё", "Тосты с сыром, запеченные в духовке."])
|
||||||
|
self.insert_one([1, "1 hour 20 minutes", "Мусака", "Слоеное блюдо из баклажанов, мяса и соуса бешамель."])
|
||||||
|
self.insert_one([1, "45 minutes", "Фрикадельки", "Приготовить фарш, сформировать шарики и обжарить или потушить."])
|
||||||
|
self.insert_one([1, "35 minutes", "Зразы", "Фаршированные рулетики из мяса или овощей."])
|
||||||
|
self.insert_one([1, "1 hour", "Чили кон карне", "Острое блюдо из мяса, бобов и специй."])
|
||||||
|
self.insert_one([1, "40 minutes", "Блинчики", "Приготовить тесто, испечь блины и добавить начинку."])
|
||||||
|
self.insert_one([1, "50 minutes", "Кесадилья", "Лепешка с начинкой, запеченная с сыром."])
|
||||||
|
self.insert_one([1, "1 hour 30 minutes", "Паэлья", "Испанское блюдо из риса, морепродуктов и овощей."])
|
||||||
|
self.insert_one([1, "25 minutes", "Сэндвичи", "Хлеб с различными начинками и соусами."])
|
||||||
|
self.insert_one([1, "55 minutes", "Лазанья-роллы", "Рулетики из лазаньи с начинкой и соусом."])
|
||||||
|
self.insert_one([1, "1 hour 10 minutes", "Тефтели", "Фрикадельки в томатном соусе."])
|
||||||
|
self.insert_one([1, "35 minutes", "Вафли", "Приготовить тесто и выпекать в вафельнице."])
|
||||||
|
self.insert_one([1, "45 minutes", "Фахитас", "Мексиканские лепешки с начинкой из мяса, овощей и специй."])
|
||||||
|
self.insert_one([1, "1 hour 20 minutes", "Чили син карне", "Вегетарианская версия чили кон карне."])
|
||||||
|
self.insert_one([1, "30 minutes", "Тартины", "Открытые бутерброды с различными ингредиентами."])
|
||||||
|
self.insert_one([1, "55 minutes", "Энчиладас", "Мексиканские лепешки, завернутые с начинкой и запеченные в соусе."])
|
||||||
|
self.insert_one([1, "1 hour 15 minutes", "Ризотто с морепродуктами", "Ризотто с добавлением креветок, кальмаров и другими морепродуктами."])
|
||||||
|
self.insert_one([1, "40 minutes", "Панини", "Горячие сэндвичи, приготовленные в специальном прессе."])
|
||||||
|
self.insert_one([1, "50 minutes", "Тортилья", "Испанский омлет с картофелем и луком."])
|
||||||
|
self.insert_one([1, "1 hour 30 minutes", "Тажин", "Марокканское блюдо, приготовленное в глиняном горшочке."])
|
||||||
|
self.insert_one([1, "35 minutes", "Брускетта", "Хлеб, обжаренный с чесноком и помидорами."])
|
||||||
|
self.insert_one([1, "1 hour", "Рататуй", "Овощное рагу из баклажанов, цуккини, перца и помидоров."])
|
||||||
|
self.insert_one([1, "45 minutes", "Начос", "Чипсы с начинкой из фасоли, сыра, гуакамоле и сальсы."])
|
||||||
|
self.insert_one([1, "1 hour 20 minutes", "Курица тикка масала", "Индийское блюдо из курицы в пряном соусе."])
|
||||||
|
self.insert_one([1, "30 minutes", "Бутерброды", "Хлеб с различными ингредиентами и соусами."])
|
||||||
|
self.insert_one([1, "55 minutes", "Фалафель", "Жареные шарики из нута с соусами."])
|
||||||
|
self.insert_one([1, "1 hour 15 minutes", "Чана масала", "Индийское блюдо из нута в пряном соусе."])
|
||||||
|
self.insert_one([1, "40 minutes", "Кимчи-боул", "Миска с рисом, кимчи и другими ингредиентами."])
|
||||||
|
self.insert_one([1, "50 minutes", "Такос", "Мексиканские лепешки с начинкой из мяса, овощей и соусов."])
|
||||||
|
self.insert_one([1, "1 hour 30 minutes", "Цуккини-лазанья", "Лазанья с использованием цуккини вместо теста."])
|
||||||
|
self.insert_one([1, "35 minutes", "Брускетта с авокадо", "Хлеб с авокадо, помидорами и специями."])
|
||||||
|
self.insert_one([1, "1 hour", "Чана масала с цветной капустой", "Индийское блюдо из цветной капусты в пряном соусе."])
|
||||||
|
self.insert_one([1, "45 minutes", "Баос", "Мягкие булочки с начинкой из свинины, огурцов и соусов."])
|
||||||
|
self.insert_one([1, "1 hour 20 minutes", "Пад-тай", "Тайская лапша с яйцом, креветками и овощами."])
|
||||||
|
self.insert_one([1, "30 minutes", "Авокадо-тосты", "Тосты с авокадо, яйцом и другими ингредиентами."])
|
||||||
|
self.insert_one([1, "55 minutes", "Кимчи-чигэ", "Острый корейский суп с кимчи и свининой."])
|
||||||
|
self.insert_one([1, "1 hour 15 minutes", "Буррито-боул", "Миска с рисом, фасолью, мясом, овощами и соусами."])
|
||||||
|
self.insert_one([1, "40 minutes", "Баклажаны по-гречески", "Запеченные баклажаны с томатным соусом и сыром."])
|
||||||
|
self.insert_one([1, "50 minutes", "Том-ям", "Острый тайский суп с креветками и грибами."])
|
||||||
|
self.insert_one([1, "1 hour 30 minutes", "Веганский пастуший пирог", "Пастуший пирог с растительными ингредиентами."])
|
||||||
|
self.insert_one([1, "35 minutes", "Сэндвич с авокадо и яйцом", "Бутерброд с авокадо, яйцом и другими ингредиентами."])
|
||||||
|
self.insert_one([1, "1 hour", "Карри с тофу и овощами", "Тайское карри с тофу и смесью овощей."])
|
||||||
|
self.insert_one([1, "45 minutes", "Кимчи-фритата", "Фриттата с добавлением кимчи и других ингредиентов."])
|
||||||
|
self.insert_one([1, "1 hour 20 minutes", "Паста с песто из авокадо", "Паста с соусом из авокадо, базилика и сыра."])
|
||||||
|
self.insert_one([1, "30 minutes", "Яичница с авокадо", "Яичница с добавлением авокадо и других ингредиентов."])
|
||||||
|
self.insert_one([1, "55 minutes", "Веганский пад-тай", "Пад-тай с использованием растительных ингредиентов."])
|
||||||
return
|
return
|
||||||
+10
-1
@@ -1 +1,10 @@
|
|||||||
print(len("\t"))
|
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
print('До очистки')
|
||||||
|
# Для Windows
|
||||||
|
os.system('cls')
|
||||||
|
|
||||||
|
print('после очистки')
|
||||||
Reference in New Issue
Block a user