def add(cls, socket): response = receive(socket=socket) if response == ERROR: print("Среди пользователей нет экспертов") enter_to_continue() return obj = {"description": string_input("Введите описание проблемы")} num = 1 obj["decisions"] = [string_input(f"Введите решение проблемы №{num}")] num += 1 decision = string_input(f"Введите решение проблемы №{num}") while decision in obj["decisions"]: print("Решения одной проблемы должны быть уникальны") decision = string_input(f"Введите решение проблемы №{num}") obj["decisions"].append(decision) while True: choice = menu(title="Добавить ещё?", options=["Да"]) if choice == "1": num += 1 decision = string_input(f"Введите решение проблемы №{num}") while decision in obj["decisions"]: print("Решения одной проблемы должны быть уникальны") decision = string_input(f"Введите решение проблемы №{num}") obj["decisions"].append(decision) elif choice == "2": send(socket=socket, data=obj) print("Проблема добавлена успешно") enter_to_continue() break
def admin_menu(socket): while True: choice = menu( title="Меню администратора", options=[ "Услуги", "Заказы", "Пользователи", "Компании", "Принятие решений", ], ) if choice == "1": send(socket=socket, data=choice) Service.menu(socket=socket) elif choice == "2": send(socket=socket, data=choice) Order.menu(socket=socket) elif choice == "3": send(socket=socket, data=choice) Users.menu(socket=socket) elif choice == "4": send(socket=socket, data=choice) Company.menu(socket=socket) elif choice == "5": send(socket=socket, data=choice) Problems.menu(socket=socket) elif choice == "6": send(socket=socket, data=BREAK) break
def filter(cls, socket): while True: choice = menu( title="Фильтрация по заказам", options=[ "По id", "По услуге", "По покупателю", "По количеству", "Вывод", ], ) if choice == "1": send(socket=socket, data=choice) obj = { "min": integer_input("Введите минимальный id"), "max": integer_input("Введите максимальный id"), } while int(obj["min"]) > int(obj["max"]): print( "Минимальное значение не должно быть больше максимального" ) obj = { "min": integer_input("Введите минимальный id"), "max": integer_input("Введите максимальный id"), } send(socket=socket, data=obj) elif choice == "2": send(socket=socket, data=choice) clear() receive_and_print(socket=socket) send(socket=socket, data=integer_input("Введите id услуги")) elif choice == "3": send(socket=socket, data=choice) clear() receive_and_print(socket=socket) send(socket=socket, data=integer_input("Введите id покупателя")) elif choice == "4": send(socket=socket, data=choice) obj = { "min": integer_input("Введите минимальное количество"), "max": integer_input("Введите максимальное количество"), } while int(obj["min"]) > int(obj["max"]): print( "Минимальное значение не должно быть больше максимального" ) obj = { "min": integer_input("Введите минимальное количество"), "max": integer_input("Введите максимальное количество"), } send(socket=socket, data=obj) elif choice == "5": send(socket=socket, data=choice) cls.print(socket=socket) elif choice == "6": send(socket=socket, data=BREAK) break
def edit(cls, socket): clear() receive_and_print(socket=socket) id_ = integer_input("Введите id") send(socket=socket, data=id_) response = receive(socket=socket) if response == GOOD: while True: choice = menu(title="Изменение услуги", options=["Название", "Цену"]) if choice == "1": send(socket=socket, data=choice) name = string_input("Введите название") send(socket=socket, data=name) print("Успешно изменено") enter_to_continue() elif choice == "2": send(socket=socket, data=choice) price = integer_input("Введите цену") send(socket=socket, data=price) print("Успешно изменено") enter_to_continue() elif choice == "3": send(socket=socket, data=BREAK) break else: print("Неверный id") enter_to_continue()
def login(socket): while True: choice = menu( title="Главное меню", exit_option="Выход", options=[ "Вход как администратор", "Вход как пользователь", "Вход как эксперт", ], ) if choice == "1": obj = { "login": login_input(), "password": password_input(), "permissions": "admin", } send(socket=socket, data=obj) response = receive(socket=socket) if response == GOOD: User.admin_menu(socket=socket) else: print("Неверный логин или пароль") enter_to_continue() elif choice == "2": obj = { "login": login_input(), "password": password_input(), "permissions": "default", } send(socket=socket, data=obj) response = receive(socket=socket) if response == GOOD: User.default_menu(socket=socket) else: print("Неверный логин или пароль") enter_to_continue() elif choice == "3": obj = { "login": login_input(), "password": password_input(), "permissions": "expert", } send(socket=socket, data=obj) response = receive(socket=socket) if response == GOOD: User.expert_menu(socket=socket) else: print("Неверный логин или пароль") enter_to_continue() elif choice == "4": send(socket=socket, data=BREAK) break
def sort(cls, socket): while True: choice = menu( title="Сортировка компаний", options=["По id", "По названию", "По количеству услуг"], ) if choice in ("1", "2", "3"): send(socket=socket, data=choice) cls.print(socket=socket) elif choice == "4": send(socket=socket, data=BREAK) break
def sort(cls, socket): while True: choice = menu( title="Сортировка по услугам", options=["По id", "По названию", "По цене", "По компании"], ) if choice in ("1", "2", "3", "4"): send(socket=socket, data=choice) cls.print(socket=socket) elif choice == "5": send(socket=socket, data=BREAK) break
def filter(cls, socket): while True: choice = menu( title="Фильтрация по услугам", options=[ "По id", "По названию", "По цене", "По компании", "Вывод" ], ) if choice == "1": send(socket=socket, data=choice) obj = { "min": integer_input("Введите минимальный id"), "max": integer_input("Введите максимальный id"), } while int(obj["min"]) > int(obj["max"]): print( "Минимальное значение не должно быть больше максимального" ) obj = { "min": integer_input("Введите минимальный id"), "max": integer_input("Введите максимальный id"), } send(socket=socket, data=obj) elif choice == "2": send(socket=socket, data=choice) name = string_input("Введите название") send(socket=socket, data=name) elif choice == "3": send(socket=socket, data=choice) obj = { "min": integer_input("Введите минимальную цену"), "max": integer_input("Введите максимальную цену"), } while int(obj["min"]) > int(obj["max"]): print( "Минимальное значение не должно быть больше максимального" ) obj = { "min": integer_input("Введите минимальную цену"), "max": integer_input("Введите максимальную цену"), } send(socket=socket, data=obj) elif choice == "4": send(socket=socket, data=choice) send(socket=socket, data=string_input("Введите название компании")) elif choice == "5": send(socket=socket, data=choice) cls.print(socket=socket) elif choice == "6": send(socket=socket, data=BREAK) break
def sort(cls, socket): while True: choice = menu( title="Сортировка по заказам", options=[ "По id", "По услугам", "По покупателю", "По количеству" ], ) if "1" <= choice <= "4": send(socket=socket, data=choice) cls.print(socket=socket) elif choice == "5": send(socket=socket, data=BREAK) break
def expert_menu(socket): while True: choice = menu( title="Меню эксперта", options=["Проголосовать", "Просмотреть принятые решения"], ) if choice == "1": send(socket=socket, data=choice) Problems.vote(socket=socket) elif choice == "2": send(socket=socket, data=choice) Problems.print_voted(socket=socket) elif choice == "3": send(socket=socket, data=BREAK) break
def default_menu(socket): while True: choice = menu( title="Меню компании", options=[ "Купить услугу", "Просмотр заказанных услуг", "Сменить пароль", ], ) if choice == "1": send(socket=socket, data=choice) Order.add(socket=socket) elif choice == "2": send(socket=socket, data=choice) Order.print_for_user(socket=socket) elif choice == "3": send(socket=socket, data=choice) Users.change_password(socket=socket) elif choice == "4": send(socket=socket, data=BREAK) break
def choose(cls, **kwargs): choice = menu(title=cls.menu_title, options=cls.menu_options) send(socket=kwargs["socket"], data=choice) return choice
def add(cls, socket): user = {} while True: role_choice = menu( title="Добавление пользователя", options=["Администратор", "Покупатель", "Эксперт"], ) if role_choice == "1": send(socket=socket, data=role_choice) user["permissions"] = "admin" user["login"] = login_input() send(socket=socket, data=user["login"]) response = receive(socket=socket) if response == GOOD: user["password"] = password_input() send(socket=socket, data=user) print("Пользователь добавлен успешно") enter_to_continue() else: print("Такой логин уже существует") enter_to_continue() elif role_choice == "2": send(socket=socket, data=role_choice) user["permissions"] = "default" user["login"] = login_input() send(socket=socket, data=user["login"]) response = receive(socket=socket) if response == GOOD: user["password"] = password_input() send(socket=socket, data=user) print("Пользователь добавлен успешно") enter_to_continue() else: print("Такой логин уже существует") enter_to_continue() elif role_choice == "3": send(socket=socket, data=role_choice) user["permissions"] = "expert" user["login"] = login_input() send(socket=socket, data=user["login"]) response = receive(socket=socket) if response == GOOD: clear() pos_mess = ("Выберете должнсть\n" f"1. {Position.engineer.value}\n" f"2. {Position.head_laboratory.value}\n" f"3. {Position.complex_manager.value}\n" f"4. {Position.director.value}\n") send(socket=socket, data=select_position(pos_mess)) receive(socket=socket) clear() academic_degree_mess = ( "Выберете ученую степень\n" f"1. {AcademicDegree.no_degree.value}\n" f"2. {AcademicDegree.candidate.value}\n" f"3. {AcademicDegree.phd.value}\n" f"4. {AcademicDegree.academic.value}\n") send(socket=socket, data=select_academic_degree(academic_degree_mess)) receive(socket=socket) user["password"] = password_input() send(socket=socket, data=user) print("Пользователь добавлен успешно") enter_to_continue() else: print("Такой логин уже существует") enter_to_continue() elif role_choice == "4": send(socket=socket, data=BREAK) break