From 5cf6f540c435a4385b05f061b00aab24e76fecd0 Mon Sep 17 00:00:00 2001 From: ada-dmitry Date: Mon, 20 May 2024 23:15:19 +0300 Subject: [PATCH] 1.0 project! Allow to merge --- .../__pycache__/add_func.cpython-311.pyc | Bin 3167 -> 3727 bytes 0.8_indev/add_func.py | 83 +++++++++++----- 0.8_indev/main.py | 68 ++++++++----- .../__pycache__/cath_table.cpython-311.pyc | Bin 8997 -> 8997 bytes .../__pycache__/dish_table.cpython-311.pyc | Bin 34729 -> 32987 bytes 0.8_indev/tables/dish_table.py | 54 ++++------- 0.8_indev/test.py | 90 +++++++----------- .../__pycache__/_ipaddress.cpython-311.pyc | Bin 2907 -> 2898 bytes .../__pycache__/extras.cpython-311.pyc | Bin 68264 -> 68255 bytes 9 files changed, 156 insertions(+), 139 deletions(-) diff --git a/0.8_indev/__pycache__/add_func.cpython-311.pyc b/0.8_indev/__pycache__/add_func.cpython-311.pyc index befe412303232e236872f0fca1f6ec10725cfd7b..47b975d59787e3ce7773c53d379d7f85d0c99f09 100644 GIT binary patch delta 1871 zcmb7E?@t?L9DnX-uUuPbYe9aQD>_E&Fk}9R4$wdhFC;G6hFOTIP34N#LEGG2VQETQ zn7Rg+(e0K%vMla}!5ECGU=tLE(ZAq1v&7~SB5!A6!optpM!(NdYGH2CCwJd|e||pS z=jn6b-=1D*cYWz})*)Euz8N0htH17=%yM8c@a}z0A+(4-Kr@s~&CnWH2TP_i=oXTh z+sra}SE>;T*^x$SD@*2NUbZcRXQk?$VKR(NU8G5hLd(K=l%eie)_#$Gi)k4mKu4hL z09E(@p|S)jL&78mg<-oPb%7q1%& z5;!)DYY-})mQqOs{B`&SWR$?QZp`75gjWHjgf~g@kD#vOH2|FhtXdpn766OJ6@cHs zMJSSp4&I{i$q6W|lx&g+-UN`l#$^D3=t$};>9s1vbg%=j#DT2ja*x!**@U$73b{0m8?sVsC=%kuJTPiDE_ zO9;q~PTP8<4-+XxO53boRZ0sz(qt^2(xPdhqNoAJc>$V5zzXwh&io=j;b zA4w*o@#AuUHQ9J%GHS9~3?!dOX(TMf;%b<9RB{(29n&YWZmZJrhQ|}iWJFWk5F`oe zAoP?&Wzm^?v+S(T4Q;dbU4+CGy*{%4TPq(R#7)r;EeU?mcUc?f+4lNz$5h$j%qtHV z>M8F-1R^i&h~C1v`M!L%uk7^|PVG1v7KZ1CmjuJ%zvu8{hrjG_|CjnFl$UK{e&FNj z0yUS;rOSe=5Hy6gJfG*wc4t0vwW;8qZ_a0%Nn~WnfAa$N9NT{k;TTEV5gd;|JZ}i? zMJQp=1gw?nsKV8#F8chS5UD-j{XP#)=LebC}gf%q8}9XcMv(W z+bD7&YTMVc^vd&|99ppC&>UF5i}e}Qat5y=Q9A9dy{qy)fLNV;NSGGh~}5(F~=uS#|d zyW$Zi=7y}SfX$?ps7WVO>)Wvoz+~W%EOM(7ApNzNe+qq*2{|{iXy#))X-RM#iMxn2Md+~mx~84QV=hC(DzSmte$+sy#KxTzxTa`H#6AyVTJT4 z81x~ana2I++Wo^)I?sc~!Ta?LuzSd4;P_1!tFp#C1bM8g_cDL^u?rDBOb>bp+E~@n z%l5FC)!25VaqURub14Av$w1_ReT_`z$)tUgRO~^Sys!&onv_Tx&Ph@M1E^2z8!jKT zZ<8_^C)2WholJwrb5gYXNKqzF$TJ#Uf(P8Gr3BYya43^03R9Ak8B@oXx>7zjaU7pF zVy*;LkIh^@}EuYP1Q-C)N zjXr~FXn|#!Ot`?e=F7{I@%VLPdbOq_&8QXys(6=yJQaf;w)StAaQ!~=3!ro5-X<*;b z@zJCmP-X&3VfRN*U=A@tXm-i+e)FS$Y5&%*5Q-8s(E`!T?k0Z$;U4nBE?cjJsMyPa z$XP-0LC@@d+):)?(?Pd+):(?Pd+(.d+)?)$""") - # Проверка соответствия регулярному выражению - match = re.match(pattern, input_str) +def input_time_format(name): + time = [] + output = '' + print(f'Процесс добавления блюда: {name}\nВведите время приготовления сначала в часах, потом в минутах') - if match: - return True - # Если формат некорректный, возвращаем False - return False + while True: + ins_time = validate_input(f'Введите кол-во часов [0 <= x <= 23] (-1 - для отмены): ',\ + 0, 23) + if(ins_time==''): + return -1 + else: + time.append(ins_time) + break + + while True: + ins_time = validate_input(f'Введите кол-во минут [0 <= x <= 59] (-1 - для отмены): ',\ + 0, 59) + if(ins_time==''): + return -1 + else: + time.append(ins_time) + break + if(time[0]==1): + output += f"1 hour " + elif(time[0]>1): + output += f"{time[0]} hours " + else: + pass + if(time[1]==1): + output += f"1 minute" + elif(time[1]>1): + output += f"{time[0]} minutes" + else: + pass + return output + +# def validate_time_format(input_str): + +# """ +# Функция проверки подходящего формата для ввода времени в interval + +# Args: +# input_str (str): входная строка для проверки + +# Returns: +# bool: Булевое значение, которое характеризует валидность вводимых строк +# """ +# # Регулярное выражение для проверки формата +# pattern = re.compile(r"""^(-)?(?:(?Pd+):)?(?Pd+):(?Pd+(.d+)?)$""") +# # Проверка соответствия регулярному выражению +# match = re.match(pattern, input_str) + +# if match: +# return True +# # Если формат некорректный, возвращаем False +# return False def validate_input(prompt, min_value, max_value): """Проверка ввода для выбора номера строки @@ -33,17 +70,19 @@ def validate_input(prompt, min_value, max_value): int: Либо число, введенное пользователем, либо -1 для выхода """ while True: - user_input = input(prompt) + user_input = input(prompt).strip() try: value = int(user_input) - if min_value <= value <= max_value and value != 0: + if min_value <= value <= max_value and value != -1: return value - elif value == 0: + elif value == -1: return -1 else: print(f"Введенное значение должно быть в диапазоне от {min_value} до {max_value}") except ValueError: print("Введенное значение должно быть числом.") + + # test1 = 'erhwogngonwro' @@ -71,5 +110,5 @@ def add_zero_before(old_index: str, max_len: str) -> str: def cls(): # Закомментировать строку ниже, если нужно выключить очистку терминала - os.system('cls') + # os.system('cls') return \ No newline at end of file diff --git a/0.8_indev/main.py b/0.8_indev/main.py index f693837..e3b075a 100644 --- a/0.8_indev/main.py +++ b/0.8_indev/main.py @@ -97,6 +97,7 @@ class Main: return next_step def show_page_cath(self): + menu = """Просмотр списка категорий! №\tНазвание\n-------------------------------------------------------------------------------------------""" @@ -107,14 +108,14 @@ class Main: while True: cath_arr = CathTable().get_cath_page(cath_page) add_func.cls() + print(menu) - for i in range(len(cath_arr)): print(add_func.add_zero_before(cath_arr[i][0],\ len(str(self.max_cath_index))) + "\t" + cath_arr[i][1]) action = input('-------------------------------------------------------------------------------------------\n\ -Для переключения между страницами используйте "<" и ">"\nКол-во записей на странице: 10\n\ +Для переключения между страницами используйте "<" и ">"\n\ Для выхода в меню действий нажмите любую другую клавишу\n=> ') if(action=='>'): @@ -148,51 +149,66 @@ class Main: print(menu) return + def after_show_cath(self, next_step): """Выбор действий после вывода категорий """ while True: if next_step == "4": # Удаление категории - left = 0 + left = 1 right = self.max_cath_index - x = add_func.validate_input('Введите номер удаляемой категории (0 - для отмены): ', left, right) + x = add_func.validate_input('Введите номер удаляемой категории (-1 - отмена): ', left, right) if(x!=-1): CathTable().delete(CathTable().get_cath_from_page(x).get("id")) return "1" elif next_step == "6": #Добавление блюда в категорию - DishTable().insert_dishone(self.cath_id) - next_step = "5" + if(self.cath_id != -1): + DishTable().insert_dishone(self.cath_id) + next_step = "5" + else: + print("Сначала выберите категорию") + return "1" elif next_step == "7":#Удаление блюда из категории - left = 0 - right = self.max_dish_index - x = add_func.validate_input('Введите номер удаляемого блюда (0 - для отмены): ', left, right) - if(x!=-1): - DishTable().delete(DishTable().get_dish_from_page(x).get("id")) + if(self.cath_id != -1): + left = 1 + right = self.max_dish_index + x = add_func.validate_input('Введите номер удаляемого блюда (-1 - отмена): ', left, right) + if(x!=-1): + DishTable().delete(DishTable().get_dish_from_page(self.cath_id, x).get("id")) + return "1" + else: + next_step = "5" + return "1" else: - return "1" - next_step = "5" + print("Сначала выберите категорию") + return "1" elif next_step == "5": next_step = self.show_dish_in_cath() elif next_step == "8": # Обновление названия категории - left = 0 + left = 1 right = self.max_cath_index - x = add_func.validate_input('Введите номер обновляемой категории (0 - для отмены): ', left, right) + x = add_func.validate_input('Введите номер обновляемой категории (-1 - отмена): ', left, right) if(x!=-1): CathTable().cath_update(CathTable().get_cath_from_page(x).get("cath_name")) return "1" elif next_step == "88": # Обновление блюда - left = 0 - right = self.max_dish_index - x = add_func.validate_input('Введите номер обновляемого блюда (0 - для отмены): ', left, right) - if(x!=-1): - DishTable().update_dish(DishTable().get_dish_from_page(x)) + if(self.cath_id != -1): + left = 1 + right = self.max_dish_index + x = add_func.validate_input('Введите номер обновляемого блюда (-1 - отмена): ', left, right) + if(x!=-1): + DishTable().update_dish(DishTable().get_dish_from_page(self.cath_id, x)) + return "1" + else: + return "1" else: - return "1" + print("Сначала выберите категорию") + return "1" elif next_step != "0" and next_step != "9" and next_step != "3": @@ -213,7 +229,7 @@ class Main: data = input("Такое название уже существует! Введите название заново (enter - отмена): ").strip() else: return - CathTable().insert_one(data) + CathTable().insert_one([data]) return def show_dish_page(self): @@ -233,7 +249,7 @@ class Main: dish_arr.append([str(i[2]), str(i[4]), str(i[5])]) self.max_len_name = max(self.max_len_name, len(i[2])) add_func.cls() - print("№" + " "*(len(str(self.max_dish_index)) + 1)+ "Название" + " "*(self.max_len_name - 4)\ + print("№" + " "*(len(str(self.max_dish_index)) + 1)+ "Название" + " " + " "*(self.max_len_name - 4)\ +"Время приготовления Краткая инструкция\ \n-------------------------------------------------------------------------------------------") @@ -245,7 +261,7 @@ class Main: txt += dish_arr[i][2] print(txt) action = input('-------------------------------------------------------------------------------------------\n\ - Для переключения между страницами используйте "<" и ">"\nКол-во записей на странице: 10\n\ + Для переключения между страницами используйте "<" и ">"\n\ Для выхода в меню действий нажмите любую другую клавишу\n=> ') if(action=='>'): if(dish_page==max_page): @@ -267,9 +283,9 @@ class Main: """ if self.cath_id == -1: while True: - left = 0 + left = 1 right = self.max_cath_index - x = add_func.validate_input('Выберите номер интересуемой категории (0 - отмена): ', left, right) + x = add_func.validate_input('Выберите номер интересуемой категории (-1 - отмена): ', left, right) add_func.cls() if(x!=-1): self.cath = CathTable().get_cath_from_page(x) diff --git a/0.8_indev/tables/__pycache__/cath_table.cpython-311.pyc b/0.8_indev/tables/__pycache__/cath_table.cpython-311.pyc index 424a48280a0a7eb687f8e4dd998bfb33ed2a6af1..66932798f8f37d5c30b15c4343bd1cb2d02a9366 100644 GIT binary patch delta 20 acmZ4Lw$zP#IWI340}%AfcyHvEQU(Aw{sf!= delta 20 acmZ4Lw$zP#IWI340}!lf^4Q2Nr3?T&9t9i# 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 c4ce7705b952161a731190c37902e5ffc974333e..bb199ea2928bf853f84a6219c81bb8b44cd13f53 100644 GIT binary patch delta 2211 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 MdH4->f&QoRZ>>iGf&c&j diff --git a/0.8_indev/tables/dish_table.py b/0.8_indev/tables/dish_table.py index 7f70c1a..d302031 100644 --- a/0.8_indev/tables/dish_table.py +++ b/0.8_indev/tables/dish_table.py @@ -58,8 +58,8 @@ class DishTable(DbTable): cur.execute(sql) return int(cur.fetchone()[0]) - def get_dish_from_page(self, row_num): - arr = self.get_dish_page(math.ceil(row_num/ROW_PER_PAGE), self.cath) + def get_dish_from_page(self, cath_id, row_num): + arr = self.get_dish_page(cath_id, math.ceil(row_num/ROW_PER_PAGE)) row = dict() for i in arr: if(int(i[0]) == row_num): @@ -98,7 +98,7 @@ class DishTable(DbTable): final_list.append([str(i+1+(ROW_PER_PAGE*(page_num-1))), zero_list[i][3],\ str(zero_list[i][2]), zero_list[i][0], str(zero_list[i][1]), str(zero_list[i][4])]) return final_list - + def check_by_name(self, value): sql = f"SELECT * FROM {self.table_name()} WHERE dish_name='{value}'" @@ -128,32 +128,18 @@ class DishTable(DbTable): return str(result) def insert_dishone(self, cath_id): - - ins_name = input('Введите название добавляемого блюда (1 - для отмены): ').strip() - - while (ins_name == '')or(len(ins_name) > 32)\ - or(DishTable().check_by_name(ins_name)): - + while True: + ins_name = input('Введите название добавляемого блюда (enter - для отмены): ').strip() if(len(ins_name) > 32): - ins_name = input("\nСлишком длинная строка. Повторите ввод!\ - Укажите название добавляемого блюда (enter - отмена): ").strip() - if ins_name == "": - return "1" - else: + print("Слишком длинная строка. Повторите ввод!") + elif(DishTable().check_by_name(ins_name)): print('\nТакое блюдо уже существует') - ins_name = input("Повторите ввод! Укажите название блюда (enter - отмена): ").strip() - if ins_name == "": - return "1" - - ins_time = input(f'\nПроцесс добавления блюда: {ins_name}\ - \nВведите время приготовления в формате 10 minutes/1 hour 5 minutes (enter - для отмены): ').strip() - if(ins_time==''): - return "1" - while(add_func.validate_time_format(ins_time)==False): - ins_time = input('Время введено в неверном формате. Повторите попытку.\n\ -Введите время приготовления в формате 10 minutes/1 hour 5 minutes (enter - для отмены): ').strip() - if(ins_time==''): + elif(ins_name == ""): return "1" + else: + break + + ins_time = add_func.input_time_format(ins_name) ins_manual = input(f'\nПроцесс добавления блюда: {ins_name}\ \nВведите краткую инструкцию приготовления блюда (enter - для отмены): ').strip() @@ -170,7 +156,7 @@ class DishTable(DbTable): tmp = dish_name while True: x = add_func.validate_input(f'\nВыбранное блюдо: {tmp}\nЧто вы хотите изменить в рецепте?\n\ -1 - Название\n2 - Время приготовления\n3 - Инструкция\n0 - для отмены\n=> ', 0, 3) +1 - Название\n2 - Время приготовления\n3 - Инструкция\n-1 - для отмены\n=> ', 1, 3) if(x==1): new_name = input(f"Текущее название {tmp}.\nВведите новое название (enter - для отмены): ") @@ -191,15 +177,11 @@ class DishTable(DbTable): self.update('dish_name', new_name, dish_id) elif(x==2): - new_time = input(f'Введите время приготовления в формате 10 minutes/1 hour 5 minutes (enter - для отмены): ') - while(new_time=='')or(add_func.validate_time_format(new_time)==False): - if new_time == '': - break - else: - new_time = input('Введите время приготовления в формате 10 minutes/1 hour 5 minutes\ - (enter - для отмены): ') - new_time = "'" + new_time + "'" - self.update('cook_time', new_time, dish_id) + new_time = add_func.input_time_format(tmp) + if(new_time != -1): + self.update('cook_time', new_time, dish_id) + else: + break elif(x==3): new_manual = input(f'Введите краткую инструкцию приготовления блюда (enter - для отмены): ') diff --git a/0.8_indev/test.py b/0.8_indev/test.py index fdda605..d18e09e 100644 --- a/0.8_indev/test.py +++ b/0.8_indev/test.py @@ -1,63 +1,43 @@ -# a = dict() +# # a = dict() -# for i in range(1, 41, 2): -# for j in range(2, 41, 2): -# a[f"{i}"] = f"{j}" +# # for i in range(1, 41, 2): +# # for j in range(2, 41, 2): +# # a[f"{i}"] = f"{j}" -# print(a) +# # print(a) +# # import psycopg2 +# # from psycopg2.extras import Interval + +# # def check_interval(value): +# # try: +# # # Попытка преобразования значения в объект Interval +# # interval_obj = Interval(value) +# # # Если преобразование успешно, значение относится к типу Interval +# # return isinstance(interval_obj, Interval) +# # except (ValueError, TypeError): +# # # Если преобразование не удалось, значение не относится к типу Interval +# # return False + +# # user_input = input("Введите интервал: ") +# # if check_interval(user_input): +# # print("Введенное значение относится к типу Interval") +# # else: +# # print("Введенное значение не относится к типу Interval") + # import psycopg2 -# from psycopg2.extras import Interval +# from psycopg2.extras import DateTimeTZRange -# def check_interval(value): +# def check_interval(input_str): # try: -# # Попытка преобразования значения в объект Interval -# interval_obj = Interval(value) -# # Если преобразование успешно, значение относится к типу Interval -# return isinstance(interval_obj, Interval) -# except (ValueError, TypeError): -# # Если преобразование не удалось, значение не относится к типу Interval +# # Создаем объект Interval из входной строки +# interval = DateTimeTZRange(input_str, '[]') +# except (ValueError, psycopg2.DataError): # return False - -# user_input = input("Введите интервал: ") -# if check_interval(user_input): -# print("Введенное значение относится к типу Interval") -# else: -# print("Введенное значение не относится к типу Interval") +# return True +# # Примеры использования +# print(check_interval('1 day')) # True +# print(check_interval('1:60')) # False +# print(check_interval('P1Y2M3DT4H5M6.7S')) # True -from psycopg2 import Error -import psycopg2 - -def is_valid_interval(input_string): - try: - # Создаем соединение с базой данных - conn = psycopg2.connect("dbname=your_database user=your_username password=your_password") - - # Создаем курсор для выполнения запросов - cursor = conn.cursor() - - # Формируем запрос для проверки ввода - query = f"SELECT to_interval('{input_string}');" - - # Выполняем запрос - cursor.execute(query) - - # Получаем результаты - result = cursor.fetchone() - - # Закрываем курсор и соединение - cursor.close() - conn.close() - - # Проверяем, был ли результат успешным - if result is not None: - return True - else: - return False - except Error as e: - print(f"Произошла ошибка: {e}") - return False - -# Примеры использования -print(is_valid_interval('10:30')) # Выведет True -print(is_valid_interval('1:60')) \ No newline at end of file +import this \ No newline at end of file diff --git a/project/Lib/site-packages/psycopg2/__pycache__/_ipaddress.cpython-311.pyc b/project/Lib/site-packages/psycopg2/__pycache__/_ipaddress.cpython-311.pyc index ca8f30e95d15589c88dff1bf84311cf03121e88e..f6b6ea8b9ce1b7416459aad0e73d3ddb6c3899d1 100644 GIT binary patch delta 46 zcmcaDc1etPIWI340}zB~nWr7u$a{f>$I-a{