From 7adca1884daadf6fa798ced0c2b365c8520857c7 Mon Sep 17 00:00:00 2001 From: ada-dmitry Date: Tue, 14 May 2024 22:45:45 +0300 Subject: [PATCH] rebase --- 0.6_stable/main.py | 4 +- .../__pycache__/add_func.cpython-311.pyc | Bin 2369 -> 2140 bytes .../__pycache__/dbtable.cpython-311.pyc | Bin 8788 -> 8940 bytes 0.7_stable/add_func.py | 8 +- 0.7_stable/dbtable.py | 1 + .../__pycache__/dish_table.cpython-311.pyc | Bin 19397 -> 19406 bytes 0.7_stable/tables/dish_table.py | 4 +- .../__pycache__/add_func.cpython-311.pyc | Bin 2369 -> 2885 bytes 0.8_indev/__pycache__/dbtable.cpython-311.pyc | Bin 8788 -> 9837 bytes 0.8_indev/__pycache__/texts.cpython-311.pyc | Bin 1740 -> 1742 bytes 0.8_indev/add_func.py | 27 ++- 0.8_indev/dbtable.py | 18 ++ 0.8_indev/main.py | 181 +++++++++++++----- .../__pycache__/dish_table.cpython-311.pyc | Bin 19397 -> 32537 bytes 0.8_indev/tables/dish_table.py | 115 +++++++++-- 0.8_indev/test.py | 11 +- 16 files changed, 293 insertions(+), 76 deletions(-) diff --git a/0.6_stable/main.py b/0.6_stable/main.py index db3398c..02c22ba 100644 --- a/0.6_stable/main.py +++ b/0.6_stable/main.py @@ -178,11 +178,11 @@ class Main: for i in lst: self.dish_arr.append([i[2], str(i[1]), str(i[4])]) 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-------------------------------------------------------------------------------------------") 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][1] + " "*(5+19-len(self.dish_arr[i][1])) txt += self.dish_arr[i][2] diff --git a/0.7_stable/__pycache__/add_func.cpython-311.pyc b/0.7_stable/__pycache__/add_func.cpython-311.pyc index 12426f4dcbd69215f8ba34d3db63580e020972f8..62768f86d8f5fe5b2dfc233e03a51081a1945992 100644 GIT binary patch delta 185 zcmX>obVtB#IWI340}u$YIHzfGFfcp@abSQ6%J?h=WK3sBVMt-jVTfW#VQOKBVoYHM zl1wR#!3>%#8y6`v$*8+n#e}3LCTGNWgvaD0CYi+;=$XeCmn0_Tq;7t|l*DSJ$y~$& zG^vOaM2G>2l?+87+lzn}GyLMP$<0qG%}KQ@k^piUfw$7C6Ox*koDt&@9+Q)pWENwfXC9xKmy%kxxs@r2wf+`wYEedcetKSd zeqMP|eietILT+YWX-R68ppimGerZv$f-zL2Sd+bo1!zYRCx{RO61P}OQj1FrA(Rn> zGA`l=%B*B40)WxFfNb{8B%KqxfoqC@l*hvu)QrMRLni4 zi#+OAc+@ZOsNdxgydacykth2KPxb{E`oId(_v6Qp4{Qva{2gq?!a$E4mN#}0W;i13 z$mlB0d{hibZhj-=%m}pCK*W;KeRGzG855)5=7nOH8M$MC>WgAQgxTbSEFzO9OXM*| zPG*wSVvL)tE2+sCwmDq#G$U&?P=)4XFEQ=OLDK4MaUk`Ho9m_LFfnFLmXT9pjG1gN z=g$~FxnE8VXw5dc6vnj8((AOGz!; z?8JD8hjG?sRz3|TMvKXM0;-IPli%@6PRU0VTL2ZMy?#pN7)%&IX1TlJ2Nr{PCg-G$>_G3Nz{yq(RZ_@_+>`6 zXrS_gLVzv5Zo|ARQ4PA|6B}gNQT`Q8-yk@c=(R pEB^-uIH5H8r(!Q-+2nR5HT!%=Ji+F+N0{}3|ZKMDI diff --git a/0.7_stable/add_func.py b/0.7_stable/add_func.py index 0b41e89..ef6ddf5 100644 --- a/0.7_stable/add_func.py +++ b/0.7_stable/add_func.py @@ -46,8 +46,8 @@ def validate_input(prompt, min_value, max_value): print("Введенное значение должно быть числом.") -test1 = 'erhwogngonwro' -test2 = '1 minute' -test3 = '2 hours 3 minutes' +# test1 = 'erhwogngonwro' +# test2 = '1 minute' +# test3 = '2 hours 3 minutes' -print(validate_time_format(test1), validate_time_format(test2), validate_time_format(test3)) \ No newline at end of file +# print(validate_time_format(test1), validate_time_format(test2), validate_time_format(test3)) \ No newline at end of file diff --git a/0.7_stable/dbtable.py b/0.7_stable/dbtable.py index d7b563a..a84f108 100644 --- a/0.7_stable/dbtable.py +++ b/0.7_stable/dbtable.py @@ -65,6 +65,7 @@ class DbTable: self.dbconn.conn.commit() except psycopg2.errors.UniqueViolation: self.dbconn.conn.rollback() + print('Такая строка уже существует. Повторите попытку') return def update(self, column, values, wh): diff --git a/0.7_stable/tables/__pycache__/dish_table.cpython-311.pyc b/0.7_stable/tables/__pycache__/dish_table.cpython-311.pyc index 2e41776cb753d9cd0a064247f9824de6fb6c71b0..e7959f70d0813ee538751ea69b59b209670fb65e 100644 GIT binary patch delta 143 zcmX>)o$=gsM&9MTyj%=GP&30hEoCFGEu)Nqi&acWYGQImj7NA(PGXW-jDencd~r!) zQcmjTRK@@i#tD-pRAMIQi>ge1D<;fwi_zc~qhaZm$@5fvCeIWzo}4GDy7{e`5({q$ q(?%o$=^&M&9MTyj%=GAYSg27PFDpmQh;Y#VRHwH8D9O#v?o?Co#z^#z4-lySr4 32): ins_name = input("Слишком длинная строка. Повторите ввод!\ - Укажите название удаляемого блюда (0 - отмена): ") + Укажите название добавляемого блюда (0 - отмена): ") if ins_name == "0": return "1" else: diff --git a/0.8_indev/__pycache__/add_func.cpython-311.pyc b/0.8_indev/__pycache__/add_func.cpython-311.pyc index 12426f4dcbd69215f8ba34d3db63580e020972f8..d188ea87163dafa67fdcf4c42afada575160b3d0 100644 GIT binary patch delta 911 zcmZuw&1(}u6rb76w??JJq`ib~?IF2@s%RugL9I|P_E13#k&tvYHL%^lB%viHB(+sj z3}~s)oJFeQC8jOJ)D%2;p9K$L!IS?$p?LA+n`sgv^eyjWX5ah0-<#R}KJvpG{or=H z5XjTJcT&p`{pO3l*m}Wn2!d@y5WyOXA|kD$C?+ykiC9#bSV3*7oU#%7x+Q8Mcpe2E zU*27ke1Vxr?17qCcoLg^7}FBT>#?cOjnL&?Q%YOQ&WuLlX`QGmrhO@~64zASv{5ye zr}~1_=K$UUDuW(tV75^XgX>8V?ZE2uV5cM%fh57trLlerD#nW$JZHlY6N ze<1zV!(9X>2kIT65=iSgfMMTQLo{xQ=)kA}nMRL3XEu5oLk_gXu(zzM%O`i!rv(GF zK|97vK;aaJ5Swh@sPKc}@WVql1iSkto(f8)%rDqV6Z)bWv{E0OGaUtEN}6su2mMT( z&RP*%4yU3}2hTX4AS7N;X(pajQyHq#ao7!mW@o`v&>s(SxvP&h{55~&cK5Aye z7*mFO5gk7vks>(#b=+Laki4c&(@99;Utl)5)plGBPoKjV>)9g&?&G|0jT0y0(~Lm< E2MDz~I{*Lx delta 416 zcmX>qc2KB(IWI340}#9^bV^g=U|@I*;=lkql<~O?$e7NM!jQt4!w|)g!qmbL#hAhj zB$-lJqL@=yqgYbdqF9+2QrUo*F_n24BLl-~Acg?27z-9L)@8~l3YRehwE-~%FaoU$ zX3%8c7^Tc4s^(%96Ox*koDt&@9+Q)pWENwfXTEs~QzmOYZ)#CSd476cdVXGcQGOMN zp+atEUTH~cm7tMAMt*5gv4SyFq*#-^hy`eP5hsWc0}{7bOHzwV3?Y;egfcGT2g`esS33=BJeAq}mn90J$KK71sla56p~=jFTU8X@?jwa7r|=-rx`d5z-B; z4;WY*STC?i0nrT8i)@Nl*c2})n*-4f){Dw^SCs88ID~*uXw*fA=qnD<7a3x%FvMJd HA+Xf|`jukc diff --git a/0.8_indev/__pycache__/dbtable.cpython-311.pyc b/0.8_indev/__pycache__/dbtable.cpython-311.pyc index 22fefc998a6ca4ab8ef4a60d52615d64a4a217aa..cf5d63c23d0ef054626a52903326e12ec2cda17d 100644 GIT binary patch delta 1066 zcmZ`&?MqWp7(e&!CDZAgislP;6e$Pm(g?yPC6Zc#;@e26!I*7MWxjClhOsuLPRy{7 zb%O*EECRpI&E>MW{)KbE4-qV) z2v(=%=8(k@DH!I&$do6~Fo*6IJGnk&EQ;*kD7)BVu~}V?`@^=|{Wgzd@T%>y&>)!O zja+BNC7$JHmKJsuJl{V7yg*Ja$Oq79#);4qlAtQUIe9-22Y9~*p`hBSk|(N+ z26cd6K~7CTy@FP?K}|p}c{LsxGx ziLv_x*W@=$@{(tKZ(;+H3D_zSSx=F{gH7Xh?E- z#p`g8*tg62##qc#GTkn(on`wATL!I;L61vtmuIdRgX9C4Mu#QnT*ZP;{+w5KrKn=L zCt_MNQG>9c{h%LMQ?Kh^=_xkvVl&YXz%OY!-bweJV?#bFZHO;dhI#IxTvh#(n~GPS z*Kk~kT!SZ#W56IjV35Ngp8?Y*!k^|C&VnK7I5~m$^?FV9A<9CXyjs)41?8_b7n+)R SuKW=F8^0;{KmOxYIDY{@{+4Y3 delta 174 zcmaFsbH#;kIWI340}#~YIi+#)P2|g9%$Zo8!^#-UpeZ=zvi&acWYGQImj7NA( zPGXW-jDeo{W@koUsm;CelbIMZCo3xbV@%zwpv=n1C_GtBrGT+;@*EXKroRl6_p7{^ iyiGNbv1~Gjnwot+BctR82JGZVu=p1ovPHZ=2Lb?2887|- diff --git a/0.8_indev/__pycache__/texts.cpython-311.pyc b/0.8_indev/__pycache__/texts.cpython-311.pyc index 165ae1bd1fb13357caf2dfe91625145df422e485..3de31cd98673a646608859101d780cc1b63ae5f9 100644 GIT binary patch delta 48 zcmX@ZdybcTIWI340}x~hI&b9mV-r_(v5E;vO-#;+@d%H}NlY?}G0?NnGn|~q76$+) C?F_~M delta 46 zcmX@ddxn>LIWI340}v#aIc?($ A!2kdN diff --git a/0.8_indev/add_func.py b/0.8_indev/add_func.py index 0b41e89..b794514 100644 --- a/0.8_indev/add_func.py +++ b/0.8_indev/add_func.py @@ -46,8 +46,27 @@ def validate_input(prompt, min_value, max_value): print("Введенное значение должно быть числом.") -test1 = 'erhwogngonwro' -test2 = '1 minute' -test3 = '2 hours 3 minutes' +# test1 = 'erhwogngonwro' +# test2 = '1 minute' +# test3 = '2 hours 3 minutes' -print(validate_time_format(test1), validate_time_format(test2), validate_time_format(test3)) \ No newline at end of file +# 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 + + + \ No newline at end of file diff --git a/0.8_indev/dbtable.py b/0.8_indev/dbtable.py index d7b563a..37f4355 100644 --- a/0.8_indev/dbtable.py +++ b/0.8_indev/dbtable.py @@ -97,6 +97,24 @@ class DbTable: cur = self.dbconn.conn.cursor() cur.execute(sql) 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): conditions = [] diff --git a/0.8_indev/main.py b/0.8_indev/main.py index b76fa77..224112c 100644 --- a/0.8_indev/main.py +++ b/0.8_indev/main.py @@ -1,5 +1,7 @@ import sys import texts +import math +import os # import time sys.path.append('tables') @@ -17,10 +19,16 @@ TODO: 4) UPDATE для категорий - done 5) Красивый вывод - done 6) Доделать ограничение на выбор категории - done -7) UPDATE для блюд - done -8) Постраничный вывод - indev +7) UPDATE для блюд - done 0.7 +8) Постраничный вывод - indev 0.8 - реализация через offset. +9) Реализовать отдельный просмотр(offset) +10) И отдельный вывод(offset) + FIXME: +1) Откомментировать os.cls +2) Исправить вылет при неверном вводе в самое начало(сделать выход на предыдущую менюшку) +3) При вводе текста пропуск сделать с помощью пустой строки. ''' @@ -33,33 +41,29 @@ class Main: def __init__(self): DbTable.dbconn = self.connection return - def db_init(self): cth = CathTable() d = DishTable() cth.create() d.create() return - def db_insert_somethings(self): cth = CathTable() dsh = DishTable() cth.example_insert() - dsh.example_insert() - + dsh.example_insert() def db_drop(self): cth = CathTable() d = DishTable() d.drop() cth.drop() return - def show_main_menu(self): menu = texts.show_main_menu_txt print(menu) + print('Катя и Дима хорошенькие, тюк') return - def read_next_step(self): return input("=> ").strip() @@ -75,20 +79,44 @@ class Main: return "0" else: return next_step + def show_cath(self): self.cath_id = -1 - self.cath_arr = [] menu = texts.show_cath_1txt print(menu) - lst = CathTable().all() - self.max_cath_index = (len(lst)) - for i in lst: - self.cath_arr.append(str(i[0])) + self.max_cath_index = len(CathTable().all()) + self.cath_page = 1 + lst = CathTable().get_page(self.cath_page) + action = '>' + max_page = math.ceil(self.max_cath_index/10) + while True: - for i in range(len(self.cath_arr)): - print(str(i+1) + "\t" + self.cath_arr[i]) + self.cath_arr = [] + 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 print(menu) return @@ -98,9 +126,17 @@ class Main: """ while True: 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): - CathTable().delete(self.cath_arr[int(x)-1]) + CathTable().delete(self.cath_arr[(int(x)-1)-((self.cath_page-1)*10)]) return "1" elif next_step == "6": #Добавление блюда в категорию @@ -108,9 +144,16 @@ class Main: next_step = "5" 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): - DishTable().delete(self.dish_arr[int(x)-1][0]) + DishTable().delete(self.dish_arr[(int(x)-1)-((self.dish_page-1)*10)][0]) else: return "1" next_step = "5" @@ -119,14 +162,28 @@ class Main: next_step = self.show_dish_in_cath() 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): - 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" 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): - 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: return "1" @@ -160,38 +217,75 @@ class Main: def show_dish_in_cath(self): """Вывод всех блюд в выбранной пользователем категории """ - self.dish_arr = [] + if self.cath_id == -1: 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): - self.cath_id = CathTable().find_by_name(self.cath_arr[x-1]) - self.cath_obj = 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[(int(x)-1)-((self.cath_page-1)*10)] else: return "1" - print("Выбрана категория: " + self.cath_obj) print("Блюда:") - - lst = DishTable().all_by_cath_id(self.cath_id) + self.dish_page = 1 + lst = DishTable().get_page_dish(self.cath_id, self.dish_page) self.max_len_name = 0 - self.max_index = len(lst) - for i in lst: - self.dish_arr.append([i[2], str(i[1]), str(i[4])]) - self.max_len_name = max(self.max_len_name, len(i[2])) - print("№" + " "*(self.max_index + 1)+ "Название" + " "*(self.max_len_name - 4)\ - +"Время приготовления Краткая инструкция\ - \n-------------------------------------------------------------------------------------------") - for i in range(len(self.dish_arr)): - txt = str(i+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][1] + " "*(5+19-len(self.dish_arr[i][1])) - txt += self.dish_arr[i][2] - print(txt) + self.max_index = len(DishTable().all_by_cath_id(self.cath_id)) + action = '>' + max_page = math.ceil(self.max_index/10) + lst = DishTable().get_page_dish(self.cath_id, self.dish_page) + + while True: + self.dish_arr = [] + + for i in lst: + self.dish_arr.append([i[2], str(i[1]), str(i[4])]) + self.max_len_name = max(self.max_len_name, len(i[2])) + os.system('cls') + 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 print(menu) return self.read_next_step() + + + def main_cycle(self): """Основной цикл программы, регулирующий порядок действий """ @@ -224,5 +318,6 @@ class Main: DbTable.dbconn.test() m = Main() + # m.test() m.main_cycle() \ No newline at end of file diff --git a/0.8_indev/tables/__pycache__/dish_table.cpython-311.pyc b/0.8_indev/tables/__pycache__/dish_table.cpython-311.pyc index 2e41776cb753d9cd0a064247f9824de6fb6c71b0..7cc03d3ad3387fec8ccc60aecd21660fd8bef420 100644 GIT binary patch literal 32537 zcmdsgYj9N6wr+Ql?sO8!i&q*5G{`GLP(a;^qGCu8fuMkjh{TX?AP^EO>yfhzi#IwX4qgv6|{CQ(fh~)V;NTQ1{1;<@OJM_Wiyw*IK<+ zKSI`)UAO8s&Fs}{jWy<&V|;VWG3K1T^2OM(#U8u{|FLfSn=g7i|BGMDm(Mu(WibxU zc*35rx6QMWpLuQG&E7oEN>4cdm?vBi$@@Itl9`o>4lm%qG*%vNA=@0u*7KZ&O1K~oHMd1L-;&2hl zl5jD~G2s%FW5Z)mmWIcoEDM)HgtBDOiq`1Pjm_KIA}waMtUV9^Deo^K6lXl$o?ZA< zuU!^h*xQ9uV3XIFEC_>7OQrM<;mx_v^8&gV9UJ=A8cxE4@X|z(n%qrTgazLju-CTpDdQ6ruODNk*@KUs0&kP z3&A&9iQ=$lsBGNH*Arzk`Wxb9ck6+>f5BOgqg8&KkXFsa0W9VX=k3Vb0V{p#4Htxc zJMzN*9o}#u{s%tvpV2i-&j|_A=J{`xpQ7?xF)o&F|?w7P5s9DP~Gwkb<0=O-wHIY+ZbwmcFmful2@Cx zmYvPoyd{fkGzy*!keBvqb6c{YGqSI<#+S@%4JQl9tqBK3q7iB!S=7?evAe0W6^H&k z&F!(~wm*0@0#vD28$))5EgfyKJ?+u1ij=;LQ$l(lh@h-V)BCISiT4amc~O`5(6ssI zH|y084o#caw`FL`jJ|opMFr)vhCQk%nx&QEMu$3SQ&DFC2UO<{uYjSerfyy1hK=i& zuWH;Fn%M}+Llk9Z=-I|q&pcZnnrF4BMw^UVGn!DL>ODofppQ8fzTo_gh`S zBEtdr+3T||Ir)8#d%v{qw|Ev9N1k2OsJwO+m`DAlt1(Z=r<3o2{ORoy7epS*N2{X zA#^KmL8xnTXw9m%t2Txfh1NARY^dKDnmw;$`}Sz0vnHDKtD~E2dQCusEz-z9f79;BevME{7AP0e64Rm`TCy;*FVYh0j3fiwBb_ZfJK7^P1sctr%x{nF zN#;jiX-nplmih|erTRhncKDU1ZTp+{c0^k{TRYmjCZ{lzer+OdjlPEh5GtM4KmLp9 zpH7d@Se%%#I9|HACx0kV($gIeOi@Rjr}iJ;-#7lpV9oVlO*}Y15u6_{TaYMQ5DzR6 z3cYN8JTM=JrIjalCrYRNSUUT9>Fjvv+(hYIAvjfXyrj3TZ(e`h`5B+A)PuOQHW8@R z1GPhCm8ZIocfWJ+H?&@}#i6%ffbc^g6i-%Cq9NJI`5@Ae(5)csV%&*}g_?I;grTLeD=5UoL(e zo;S2Cq=j%^n}MRHNI^Cq9!Zbyb`M~0|gHuLuz&QJPe%V%5SWsBm0MGCH?2JXmcjR&d{fhs*vl?|eH zAW$a)(OCvWVKll=xS#I)E|~iO!k13^0ppbp!w(QMg?)F<$%3E1J0E3XcfkjqbAbas z#50z}DJYK0&HB6j*@4>a%K)H%l&&??$;TZdbr`y6~>| zklTnT)$RpJO`-Tv0cbL?w|PgTi5_)~*6~`?-iX%3Gulk@N}-pXk4_dZS%=-)a7sM+T_V|bMyk+aXms$a zsvIgQJN3}w~;Mc=J>jDt^I3H{*B)NZfmrJ z^n{Io`#*6&|C=5gbW2biE@0eXjp;a6uT=1y-KRQzlXyD|s3s47X7P4eL-hUv`(5U- zvlcH>7V&~z4^E)*P$L&k_YBOaKc{Mr7#CGQ;SA0IE99S_XLsnJ?C zFy>?lJlKzc>DL3(!7UM(p_}g!2HIN?Wb^|qyi8uV7iIoAAE4n$8GM%oqtOhTV*0Gc z%VPTcQF*R{TmfP_9J&j%yl}w=PnbE7-xwS#(~+=j?k(@!jScW2jODVSL94-qq_3r| zBN_o-BxLge5wS=L6G^`oiN@MGqYMLx4b!W%?2NSR=D;YqpUtZ{EW zKR$H!P<;BmiRt(1rEBp1p8pm0Ks5IUZzz1 zOb0_Jt!uox3!Fn7;E~tZHOCmREFYn=1Aa9yBeB#U3UgvaTZRf`&@y16P2dS@(9s^l z*K~vw6Bq{*m!tA(@P)5`%b{%r?Sf42i|%8C$ZzbLYd`>ow#JThe}Qm%uJ#C2qCJ7a^almB*X=CbDtVkZ0^1}|>g*aY zjJ}M5maZF|rI*&J_ut>x>_ZX{+(LQAV-IV?Y1tJch3rACv(JU|cFRx^ZRoW1(9zxN z?4RNM-35@(6P?j%%bA?DW%m~8gN*j`=;}9R*Qy+vNb?)iMA)ZViJ`{7!PDMyr`noU zbD>isS!$ls$$`mug#%7{uhXJM&a0W++-Ygx%RANT0sXgHc;IJ;#frQ05X6+6%TH@D zW|_ic418AE$A(=N!n)J$36C`_eLwDXSlv-$Y3`Z^s@>HzaKD4IYD-y0TMD|7X4+BM z?d?XY+Fh`tfGJ`>6WNScW|}9_b9rN|3AFlY{epg3zoZYw-_S3I^zZcn{cD^Wz|kO2 zT+*-VU*YQo{oD8{P=1H+7xk+locuQa9xe}r<}C`o2%;*U53?H-N4qhA(vU%<)B@i%_u>dbFav{esmo<*lI=0UVF z%o=}7DnH@?5McpD10|-w14~1(6S&K+wBmG3UI0S?kM~_8JcvI+g_umSyby{X6Zm`w zvk}XS?hWl}ZO1%p^qxhbogFbPbia9GB* z*2`x9+qmn40OVlol*F2i2dGv?M>os+HP2EprRgBSpESq<|Y~J~*c-i7a z+2Y}R&)qA$!+uYBRVKHeri6w)o|#(S&mPazXx?9>>pEdht| zcm3-3R8HvKbY|=6t?>!76PTB(n3JfObH4I=#eBVDzA*C6+~xh*%>-IiB%BOtnpJ%=^<$^=U8B zfbr`f2us+YbYh?P`0k$F=Qbs(mkvG{uU?U;UhzZZdi83(di7A*q`oD`5A_@xnl!mL z`e!QBJM(cU(<^OZ*&7%x@_;NilV3|c6Q|(DsVnmIr#GnsdkJn6>nRY*p5hxN6Z*zo zFPW;BOdT3Gv3JRh%3$Av{hQ8r=@m+{D0(-VQ|y7|t`*{m@BGaQW^ z#$#atlYZem%+PqUhx6(4+2Q;kK&@T}3W_}Tpf5EKjYT?!T>f+U;X;I=NGDP|1~?mp zU|!OKUaxksv&iJ<@q~-yzT%AV#@Fo|O^P2bF~YgE_8@C?_c}v11coZznAcgBk}oaY z7*$XeEkt{buo3MIj!qi0CE6s1e$oR==*8r%dE5VY`?23Dtv1IIZk9Qu~sg^CgD-P!JK-|kM!1OIWSBpn$3trqC@4piC^GXTV(k5+d3I1L}J zltp}o^fpVR5E>rW?ZecTqsMtY?f(gmUzmi>e&Go69=#>h?SD z2~RXQ--mn61j*Z8JKA~%rn;+V;67->Z_|c9r#2>a`?F}H9@+>PGXKsYWtFpK2MW6j ztrq1mIYP~awweob)*S4{3SEXB0;qYiQM2&t%{%#N&6LL2NobYD+hSH@Fct6a$z z#l}w{IA&03WI>nWhY@Wd;?=)ltaTK@=9TyxR=Smi#UQg8M5soPp&CZD_S^!Yx=NS6VDOC!;wM7ngl~qdDPeFTev(l# zcwJ^L0MQYXKUOTM;yLiQC7H#GnV;EW?VKTH@e)$@WrU%piX|P%OhJp6JsOgL{wC+V zq>=ikkcI&*(j&GnJ)4X@3ChgSoZ4VMn&l3a3uRW0G*crpZ54~BD8Oqd{$6QtDyhny zouTpWl17bFm9ZX*eW$Wy{Wj_RZQ7xxWG6wQn+z{v2Ps?HEXLm>W6Xgt7`Z{Kq9C1F z1i5nwRPO3E25UF}idRjE_B4*Q1{TktNS0c;lB8JLT3%^nv5rM5%kszeGNsbi<22Ue zIm4)Nf-LE6PkQ%ZGt{yv8rNwt^94Q%>)>xHfH z`|A_;*T)w%Bo;ONsq*@w)%v2CjaSzus%zuHg^A$8fy(Q_C3?#{x;F(a}>qVy9U-eIqp0A5f zxd+B6AAhFgbV=Xp^Hl>6#LJf^%9rZ$zEM%xyZrR{-tmT|MX6IosVH&d#A*HB)4O|j z|9(?q_7gum7@xf+F?-FQBG+ec&}VPp9@HhL5A_}zs;d68vdS(|;cijkZm1C1B8YOc z7%uiqo$gN3>X|VAtQT3)v@NU%WpDA&xa$6K*T>D$$ITiVAMC9kst)xpg^>pG_Pe4kbVVI-MP1~Iy4V$Ui7VsHSJabSQCGR54!WYA?23AdE9$AP zsHRMOS3tds)sNSJY3sqF&{S`YBh`t6fpA zaYen>6?LO4>UFNDpLRw4j4SH(uBbP-qTc9=`dL@h&$*(0-WByGSJW@KqTZZIExXHJ zY{V}r?!tsYS8-|^PK-au)&Cu<1#e^4eGtn612JxQ#_a9anDkX^2H0fw4X-SanRzZB z;3D>*a5;gyXTHO#3HGF6RpbOnxHs*OxGc*hBpHmq$)ykMK$ERcmlqmx+$vsdZ3l{R zkxPG{%Ou>U7JHUo&tPI)?lR@Ta)q$CifXvaO=`E*wJ`MG{_uYWu_x&q*j(XVB>F_w zZZ1MK-1aT24C$X6s5l%y8Qa5aSW$971ri#> zP-6OWk^wYm6cry4kuq?^1){@Z2HE*^QC8tDu?aTqTl>irvOhqbY}@x#Y3yYs^S5Z& zV8~L@01P0;WYxHY?S{~ZO-DHQ4P>@-gqC6{4$E>_c*>%yo1Ce;Rbgy!Ta=P$46FY~ zQHyL6j6Kg2AEoyf?5d+2h7z#Ag=H~f5%p7M%7(~GnVm|uud$V@#@gbNS_8)2dCqoYF&{SjP) zYSfVs+Cdc3wQ*xB`{_-tp=kVR*sqgW?-yV%tFyGp_tNF%j>|D(K2t2iJP;?f57&V2 zF;qqbp#xJ|RtV;XYozjUmAwqx^z=cBLg%BkQ55mRpW*&Dl@o{`iESCF`V4fWH=L$n zUED%THww#1{nEiqRd6eVwi87RbISC5mnl1uL6s>l{4um)-`{Dp)$U+yeMR{bv{Th@ zz!QSl8MD7GL4{T)NdZMEq8~MWEf~kLc1)ve>D`1<#gAmM0zBzasZ6YiW~a8MiZseH zY8;`PB?e7nQC)*@de~%4^Ki-SR`LBQrzeAjv0fW{E}K~3X7jBE3haO!*)C!!R!v`V zt8j@iNbz^u=skq8_%fQ3!!Y&*VCw))JQ(AuurXxH;LCPNQ>1^VQ4 zw00EAgPf%R)Vm51GAv>PcQ(6F8u4XPx#7(*j7iUSIy7p4Jwn^f%EfQKFWw)cc>Hio z2EFv^p#<)GfPU#3;l$VzW#fc61HuBb3j|ft|_ZXqqCVUy*uI827)~f;T$8l?--*7O;$lM+9-y&GlnH9 zAVHK9do-IMR`ueZZjVSl>_#~(>5A`DmiRld)g$vBMYD(*c79@oO&Q0E1p3nV&I))W zHZ`}KTof$50Y`E|1w6ToO+!=R(jgHx9>XC}3ZZ~c_E1>rl)@;6@oV^Q4p$O=NpB&g zJN!0jqX0Z7wgO>_>8@x9iHLX8W*hYvt( ziI9aICYL%8!oeE=O!(w)6kt+Dg7p3wfs}0|5fi2dH`mx0Dwfi8P?}dL%_3G$w@jS! zheG(cihg5xX+a4`P>eeI*M_H-C_Go^6`{dSMf)Z@hT~~n(v*`;vN;lMFJ$U6lL6Zh zGKaDfY1cq)3?dMSl3$dwjJVZMlGTO7g~+|=heYV@+&J+H!9WR5o7;tJjI|K*SVP^f z5*Q*dWqs&-(qGlSs_d|5U$xUhb+k9?R}%n;jB|HlrXz=?8>{gkO~&+gvX6X{SY({%Rw~X}7tU^NTu1X_z4B5P!V9p971#4#bf@~Tr-o}50ISFoabqYEZ z(91wY`$FE^gfX-#A*g0b_CqZ)9>iu-L1)R0{n^Bq+1-#yp^{4&AO=T*oD4o`3{Vxa z^K0?<*sc*E2Rf?`>Js16M_QRQQ<135QhfwlNR%1-gwp4jDNFZhqHWPK+#P<#i8dl? z688#BNsNFW2#N>}U8ZODpg`@Jg35SLC@_s>NXLO2<170N$6w60S)E!%)c-)$z};~0 zWe%7*WAi54sehHt*}=bNsSKy+U6=)Pkdv7d15|XK6iueeBp_g*7-K*uVX}&!2`PAM zC69B8BD(@18#X;lZSrGOmCBew!e|s~DoCaTG(HC;d%_8)f>4(RQeZ~S^bMTGlS~_u zqmA~#%nIw$LTKF2St&LDqS8$jbt5gz_=@feYTLK}KXdpxtl$*Qg zWqMeKJqnWQ9Kgy2+-7wK!KyK=r*{g=h7y!;5(-WQKOc@UHqbwUY}ob7-*^Hl+_R5s z>>d{dueNsL9EIaBVu%eDod7M|B)Z&aL^egSh6CGVyW}j$ia4JZYoKVKO0d9Q=-k+^ zgfPN5PQ07ryP-XFFw^Br3}i*vF{TCdr~*ff*3vaNnZtn-_3@_*U%~Wmv)>zSHRp0r z5r=QkFcYGNn4MU2otcWtFpmn8fG#sgw)~HBpiHauv%>mHt@Hq3B>sMExd>;%on|o< z4~LNn0<#uopU!D&(ZdNaQ!eg9hCFBjU5dm3+%OMK=h8O=t< zKUfw}l>g|_jzA`bYU$GAY0TvzE?scY+RA#eM^kjl;@y}6G4fz?kf>h4O~zlE=x8{ z9opT3HJJu!RF-T`rm3;*9oEGkM>v!0TJZ?*RY2$}UhRjM%7h_1CdUJ;<_KDxbt~Tu zIgOg_vBrC>x0IYeg_VvG9>jrK@XIU?EL^H0S!D`~en0h2WXfhLz>{r<| zUJ!e)Kkf)Q9Wl`8501SVlrY^a&mb<18*e$*_XwM z5!iM{R%h7F)*7ax+mh@aIC+5;Ifr(340wF@{lhZ#D{EM}k(({*$bwht`2PmfDPh_9 z5#h!dD(a)NfYJMnM^jKl8N#yL#m%7FPUS45ApKCJwPYd|&+ZANeKG#NC(A9V7?1!0 z_)sE<=TD~8gEiP8uAntACEcHN4v7;4%~pJb^Kc9!2w+)Py!#kRgGpDwU z@nKB7QS0*f6o+$y5Z54GW21_!LVTVil>Qu#o}+zMpM zy|18bP7jPO!GO%j0!7z^Ht#Z0Sfw_oKyn7sS~bzPt3jFTNXS|A@74O}htgM=BvHB9 ze0}aFqXu9fF8(4r6K>|ZmNb@&Ukv9|z?W*UxGe$p`?$_12@CyzC3>uyO*h;=>P&?l zgap;g`Al|QP8P5p$?F6GoT#(bJkbmsTP>FW;TW4Qv!)+Omimq`fO$EzAS?zK`lYOa zn9SNyJ?yuff}?p4!$+y;+*vpLnN_o7ni2?|gOcBdGLERJm@mNU8Y4|HqJ1DsB?1hH zIdcKUO0XvB04j&D5Sg|D&gpQe08k3n$kVD`+~zFe$XG@Yk;RdTvCWiO=FOD$`_Mv$ z7~hCtvJLq%V*va^DVRlo=>coY>=amxnliY!QArNo&vcP0EWGVVPrav2VMy}X=3M|3@47n=S?89FHk#-=G33WW24ZYSD!XVF(%Eq-W49gbY&`qE+soj#3#Udj`(rQmBO;aZCbTx(jqP zK=~ji_?=C2h8{iZp7_=hz4DR zP#ja$oHMSe$$;$P2s$OKhm-&f!hd6rpV|@h7Hw(hD-$!~_r_9J9NRC|a&UnHp5_^% zSvfa}35g=L5W~k1h64&Q`pQfXKdBZ=0o+{G!)xXjUz=U5Fb6q8#P9`lK9x z8Yoir|80F%lAJVmL7xHN`L0TDK9b5YBc%Ys$y!Y8hzDVCfvZRLYXWD7`>@-A;IcY} zxWq}+E1mmcu#@$%l#_a%*K#^3nT(Jz4jJux=oQ8uCvjlxt(Kx4wsyK@agy^y1{l*e zi$b`f^Vh1O1BzhSfOe_vZ)a$EoWf}U%n07nhJR%y+7NwFvN34RmW|=G5=`dm@Xb<; zxX%&=IGnF#Z;q|yce@D`Fte&Z2l_Y)4oZ|_cMjqtB^p1C)?7r(%#=(f9gPJ~L}L;` zTC~VabRW zGH*j*WZgs-?#DR>hcQ9VSu|7-EX|gX+L*?7ATd^_tZKRuiILzSvfm5as!;{_W<+aE zMO#P_cPXCZEXz+1IcuR1yd1kFuf)iE=G*BzO!_9LHAi zOdzPOS(!vRG~|%Qy_Uq$idfnETWZXCnX=nQArXDVuq11T8_{-NZ3C*w_)Ao!k$ug3 z_O?avH_G@pMEhe4omZ~l?&yD%@}V0;>Zxh2+(CGZ4pwlB&j^50wpyNwv(DtQX5$MKi5KZ74Rg!e2NVZZWTWOc9UP#T7qzytU zEO2ZSV2=o3mLzQ#0op}?cDn$pgsWMS^eN%`lnC&YovYj(G)t0p2-gnb+F|FqO9U`W zlFHLkP*UN$?W9kL0A@+jIuW2w1gNtMutG@9lBD%QDmuZjO#`NDpmtvsaO89lX3r$) zej&XR{Zl+q&@3tIK2g>_(ZD{t2G&Tk%#x&QrCDo518eQgdPzvllB8RObgPhVwUcfa z6PP7QcZdKxM1UQ30R-DYvn1&rAr%1O*rr$0`cziCC@UuhOfN#xE+Nh7OQIsHSyF&b z5uj6K?X(LZ;s?!=q&tOlr;zTnldcr5W=YZ~h4e`webP?qLe>W1YL?`>Qn*SzIJPNE zoL0~*N!lW$;^1*?BNYc5G)t0p3u(8=+HEI&N(3-VlCBog)k3=ZZzOf$O{JosSyF&C zBET9EV2xb>7omk%C1{r9D$l4w2>_wADa#znh^&o*tgHi?Ue&GM@xXyZ;D8=DVB=xx zk360d9yzrr&NmPYno3dP>(+o2xfIL4dcd%ial%zYQSvd_mYRDbXtN4xw4kiNl*f408VsRmj2-k?6)b#LdZ=19? zr=NGBMRVvT*C+BRK+XYN9_tr0OOiH;tW6?olU-I(O3*Ax`n-^ePH=3~fEg`PfM#h{ z&X}=L^lFym%EyMY#LXyeT+JbdTz3f9oCD1(!qqIvRTHk7aMkQwUAP^yzf*v25g=!; zKPUp2B?UMn0!YM*V_UOKheNI}2-lo$$3<6`mIlp|0?32uQBto_y8z}WPXVGLK+dt= z}gO0)3$eE37vR#EEpE#pTvSCm5QZ=0ot|>?shPTOIxmHgd zEnKlp{yd`6iBnIv0*@$zJgWUy-0P*XHlx5_zx49Y9C#<{o(bwb? R_OiF|XSwp19M?tA{|kFQrV9W7 delta 1865 zcmaJ>YfMx}6rQ)gHHo;l|` zkC{1h&;5hHK8p=k^m-kl!*X!r-Zz6|h5`Kg*pW8A6?qL~za7IBN(kT5D&o?9j7yb+ zdLM_&l}pBNFn$@j%=x$yM$Bt)l`>@p?5Ut}$T|vMfn?IZSw7s}7b1S94lt;MNcI}M zN%Y;-vE&Vy&#l4<*jd^HhpqeYJUB{&;IMU=$|-;PqnRVqQ!^)~Kc6`YxNjN! z;MFVFZB7nX!B38l#VwQ**#(E3adSU6hmd1{d#K`Q#$DK!w+tM4&ANseQ{x>|W=oAE*9xMb3 z^P$Uav`Nbsj6teS+a5-?tK<|T;Y{lj9qe}J>K?l%f-qI!EwISKb82{n)}UQTvleoT zoMurLpGx*)p|{K`i_dyL*{X?d3AG~jdTlUKG@-lyFCDQ2-2#w`@8K0tTe5OVrHgE$ z8d3ujB|}1A}G?vxWoh zyCaNkoTnN-b!Y>L*4|3$g-+^8}-!mS8?y}Ro zJ#Tz9JSr<%lWfJvXi8OZGL(9VftI-EiS9=198+@TC@v|u4b{bO)`(+OdpDiznfi}%2#nyB?Y z`#e7~uX1(nj}h1Ea#vqhI2H{>V#>|~+@KR2BeyP4Pv`}vG? E0F>dtD*ylh diff --git a/0.8_indev/tables/dish_table.py b/0.8_indev/tables/dish_table.py index 23d9ba9..a683180 100644 --- a/0.8_indev/tables/dish_table.py +++ b/0.8_indev/tables/dish_table.py @@ -36,6 +36,15 @@ class DishTable(DbTable): cur = self.dbconn.conn.cursor() cur.execute(sql) 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): sql = "DELETE FROM dish" @@ -80,22 +89,22 @@ class DishTable(DbTable): or(DishTable().check_by_name(ins_name)): if(ins_name.strip() == ''): - ins_name = input("Пустая строка. Повторите ввод! Укажите название удаляемого блюда (0 - отмена): ") + ins_name = input("\nПустая строка. Повторите ввод! Укажите название удаляемого блюда (0 - отмена): ") if ins_name == "0": return "1" elif(len(ins_name.strip()) > 32): - ins_name = input("Слишком длинная строка. Повторите ввод!\ + ins_name = input("\nСлишком длинная строка. Повторите ввод!\ Укажите название удаляемого блюда (0 - отмена): ") if ins_name == "0": return "1" else: - print('Такое блюдо уже существует') + print('\nТакое блюдо уже существует') ins_name = input("Повторите ввод! Укажите название блюда (0 - отмена): ") if ins_name == "0": return "1" - ins_time = input(f'Процесс добавления блюда: {ins_name}\ + ins_time = input(f'\nПроцесс добавления блюда: {ins_name}\ \nВведите время приготовления в формате 10 minutes/1 hour 5 minutes (1 - для отмены): ') while(ins_time==0)or(add_func.validate_time_format(ins_time)==False): if ins_time == "0": @@ -104,7 +113,7 @@ class DishTable(DbTable): ins_time = input('Время введено в неверном формате. Повторите попытку.\n\ Введите время приготовления в формате 10 minutes/1 hour 5 minutes (1 - для отмены): ') - ins_manual = input(f'Процесс добавления блюда: {ins_name}\ + ins_manual = input(f'\nПроцесс добавления блюда: {ins_name}\ \nВведите краткую инструкцию приготовления блюда (1 - для отмены): ') if ins_manual == "0": return "1" @@ -115,50 +124,61 @@ class DishTable(DbTable): def update_dish(self, dish): print('После изменения выберите другой пункт для изменения или введите 0 для выхода') + n = dish x = -10000 obj_id = self.id_by_name(dish)[1] - while(x!=-1): - x = add_func.validate_input('Что вы хотите изменить в рецепте?\n\ + while True: + x = add_func.validate_input(f'\nВыбранное блюдо: {n}\nЧто вы хотите изменить в рецепте?\n\ 1 - Название\n2 - Время приготовления\n3 - Инструкция\n0 - для отмены\n=> ', 0, 3) 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)\ - or(DishTable().check_by_name(new_name)): + or(DishTable().check_by_name(new_name))or(x=='0'): + if(new_name.strip() == ''): new_name = input("Пустая строка. Повторите ввод! Укажите название блюда (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): new_name = input("Слишком длинная строка. Повторите ввод!\ Укажите название блюда (0 - отмена): ") if new_name == "0": - return "1" + break else: - print('Такое блюдо уже существует') - new_name = input("Повторите ввод! Укажите название блюда (0 - отмена): ") - if new_name == "0": - return "1" + break + + # dish = new_name + n = new_name new_name = "'" + new_name + "'" self.update('dish_name', new_name, obj_id) 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): if new_time == "0": - return "1" + break 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 + "'" self.update('cook_time', new_time, obj_id) elif(x==3): - new_manual = input(f'Введите краткую инструкцию приготовления блюда (1 - для отмены): ') + new_manual = input(f'Введите краткую инструкцию приготовления блюда (0 - для отмены): ') if new_manual == "0": - return "1" + break new_manual = "'" + new_manual + "'" 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([10, "3 hours 15 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 \ No newline at end of file diff --git a/0.8_indev/test.py b/0.8_indev/test.py index 0a318aa..5b1e75e 100644 --- a/0.8_indev/test.py +++ b/0.8_indev/test.py @@ -1 +1,10 @@ -print(len("\t")) \ No newline at end of file + + +import os + + +print('До очистки') +# Для Windows +os.system('cls') + +print('после очистки') \ No newline at end of file