def appoint(): if login is None: print("Нужно войти в систему") return print("Введите кличку кошки: ", end="") cat_name = input() cat_name_check = execute_notrans( "SELECT cat_id, name FROM cat WHERE master = %s AND name = %s;", login, cat_name) if len(cat_name_check) == 0: print("У вас нет такой кошки") return vets = execute_notrans( "SELECT vet_specialty_id, specialty, vet, first_name, last_name FROM vet_specialty, vet WHERE vet_specialty.vet = vet.login;" ) print("\nДоступные специалисты:") for vet in vets: print("{0:d}. Врач-{1:s}: {2:s} {3:s}".format(vet[0], vet[1], vet[3], vet[4])) print("\nВыберите врача по номеру: ", end="") doctor_id = input() doctor_taken_times = execute_notrans( "SELECT date_time FROM examination WHERE vet_specialty_id = %s AND date_time > CURRENT_TIMESTAMP;", doctor_id) if len(doctor_taken_times) == 0: print("\nВыберите удобное вам время (ГГГГ-ММ-ДД ЧЧ-ММ): ", end="") date_time = datetime.fromisoformat(input()) else: print("\nУ выбранного специалиста заняты следующие времена приёма:") for time in doctor_taken_times: print("{0:s}".format(str(time[0]))) print("\nВыберите удобное вам время (ГГГГ-ММ-ДД ЧЧ-ММ)") print( "Минимум за 30 минут до и через 30 минут после начала другого приёма: ", end="") date_time = datetime.fromisoformat(input()) time_overlaps = execute_notrans( "SELECT date_time FROM examination WHERE vet_specialty_id = %s AND date_time >= (%s - interval '30 minutes') AND date_time < (%s + interval '30 minutes');", doctor_id, date_time, date_time) if len(time_overlaps) > 0: print("Неправильное время приёма") return execute( "INSERT INTO examination" + " (date_time, cat_id, vet_specialty_id)" + "VALUES" + " (%s, %s, %s);", date_time, cat_name_check[0][0], doctor_id)
def log_in(): print("Введите логин: ", end="") try_login = input() print("Введите пароль: ", end="") try_password = input() check = execute_notrans( "SELECT login, password FROM vet WHERE login = %s AND password = %s;", try_login, try_password) if len(check) == 0: print("Неправильный логин или пароль") else: global login login = try_login names = execute_notrans( "SELECT first_name, last_name FROM vet WHERE login = %s;", login) print("Вы вошли как {0:s} {1:s}".format(names[0][0], names[0][1]))
def upcoming(): appointments = execute_notrans( "SELECT date_time, master, cat.name, examination_id FROM examination, cat WHERE (cat.cat_id = examination.cat_id) AND (date_time >= CURRENT_TIMESTAMP) AND (vet_specialty_id IN (SELECT vet_specialty.vet_specialty_id FROM vet_specialty WHERE vet_specialty.vet = %s));", login) print("Назначенные обследования:\n") for app in appointments: print("Номер обследования: {}".format(app[3])) print("Дата и время: {}".format(str(app[0]))) print("Хозяин: {}".format(app[1])) print("Кошка: {}".format(app[2])) print("")
def list_cats(): if login is None: print("Нужно войти в систему") return the_list = execute_notrans( "SELECT name, sex, color, birth_date, height, mass FROM cat WHERE master = %s;", login) for cat in the_list: print("Кличка:", cat[0]) print("Пол:", cat[1]) print("Окрас:", cat[2]) print("Дата рождения:", cat[3]) print("Рост:", cat[4]) print("Масса:", cat[5]) print("")
def history(): print("Введите кличку кошки: ", end="") cat_name = input() print("Введите фамилию хозяина: ", end="") last_name = input() records = execute_notrans( "SELECT disease, start_date, end_date FROM cat_disease_history WHERE cat_id = (SELECT cat_id FROM cat, master WHERE cat.name = %s AND cat.master = master.login AND master.last_name = %s", cat_name, last_name) print("История болезней:") for rec in records: print("{}: ".format(rec[0]), end="") print("с {}".format(str(rec[1])), end="") if rec[2] is not None: print(" по {}".format(str(rec[2]))) else: print("")
def create_database(): execute_notrans("CREATE DATABASE cat_vet;", db="postgres")
def deinit_database(): execute_notrans("DROP DATABASE IF EXISTS cat_vet;", db="postgres")