from flask import abort, request, render_template, url_for, jsonify from webApp import * from webApp import webApp import gspread from oauth2client.service_account import ServiceAccountCredentials import json from config import config import requests from datetime import datetime # Авторизация Google API def authorize_google(): # google_json = {} # for key in config["GOOGLE"].keys(): # google_json[key] = config["GOOGLE"][key] scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"] creds = ServiceAccountCredentials.from_json_keyfile_name("botforclinic-436512-0c117dd103a8.json", scope) # creds = ServiceAccountCredentials.from_json_keyfile_dict(google_json, scope) client = gspread.authorize(creds) return client def find_patients(data): """ Поиск пациента в таблице по данным. """ sheet = authorize_google().open("Пациенты клиники").sheet1 records = sheet.get_all_records() # Получаем все строки таблицы print(data) for i, record in enumerate(records, start=2): # Нумерация строк Google Таблицы начинается с 2 try: print(str(record.get("Telegram ID", "")).strip(), str(record.get("ФИО", "")).strip().lower(), str(record.get("Дата рождения", "")).strip(), str(record.get("Номер телефона", "")).strip()) print(str(data.get("user_id", "")).strip(), str(data.get("fio", "")).strip().lower(), str(data.get("dob", "")).strip(), str(data.get("tel", "")).strip()) if ( str(record.get("Telegram ID", "")).strip() == str(data.get("user_id", "")).strip() and str(record.get("ФИО", "")).strip().lower() == str(data.get("fio", "")).strip().lower() and str(record.get("Дата рождения", "")).strip() == str(data.get("dob", "")).strip() and str(record.get("Номер телефона", "")).strip() == str(data.get("tel", "")).strip() ): return i, record # Возвращаем номер строки и запись except Exception as e: print(f"Ошибка при сравнении записи: {e}") continue return None, None @webApp.route('/form_submit', methods=['POST']) def form_submit(): """ Обработка данных формы и обновление записи в Google Таблице. """ try: data = json.loads(request.data) data['current_time'] = datetime.now().strftime("%d.%m.%Y, %H:%M") # Поиск пациента row_number, patient_row = find_patients(data) if not patient_row: return jsonify({'success': False, 'error': "Пациент не найден"}) # Проверка кода верификации expected_code = str(patient_row.get("Верификация", "")).strip() received_code = str(data.get("verification_code", "")).strip() if expected_code != received_code: return jsonify({'success': False, 'error': "Код верификации не совпадает"}) # Обновление записи в таблице sheet = authorize_google().open("Пациенты клиники").sheet1 # Определяем динамический столбец по заголовкам headers = sheet.row_values(1) verification_col = headers.index("Верификация") + 1 # Столбцы нумеруются с 1 sheet.update_cell(row_number, verification_col, "Пройдена") return jsonify({'success': True}) except KeyError as e: print(f"Ключ отсутствует в данных: {e}") return jsonify({'success': False, 'error': f"Некорректные данные: {e}"}) except Exception as e: print(f"Ошибка при обработке формы: {e}") return jsonify({'success': False, 'error': str(e)}) @webApp.route('/tel_verification', methods=['POST']) def send_registration_request(): raw_data = json.loads(request.data) """ Блок записи в Полимед """ try: HEADER = { "Content-Type": "application/json" } # Разделение ФИО на части fio = raw_data.get("fio", "") parts = fio.split(" ") if len(parts) < 3: return jsonify({'success': False, "error": "ФИО должно содержать 3 слова"}) first_name = parts[1] middle_name = " ".join(parts[2:]) last_name = parts[0] # Обработка номера телефона raw_phone = raw_data.get("tel", "") formatted_phone = ''.join(filter(str.isdigit, raw_phone)) if formatted_phone.startswith("7"): formatted_phone = formatted_phone # Обработка даты рождения dob = raw_data.get("dob", "") if not dob: return jsonify({'success': False, "error": "Дата рождения отсутствует"}) try: # Преобразуем формат из 2016-09-25 в datetime объект date_obj = datetime.strptime(dob, "%Y-%m-%d") # Преобразуем datetime объект в строку в формате ISO 8601 birth_year = date_obj.strftime("%Y-%m-%dT%H:%M:%S.000Z") except ValueError: return jsonify({'success': False, "error": "Неверный формат даты рождения"}), 400 # Данные для отправки в сервер Полимед data = { "telegram_id": raw_data.get("user_id"), "first_name": first_name, "second_name": middle_name, "last_name": last_name, "mobile_phone": formatted_phone, "birthday": birth_year } print("Отправляемые данные на сервер:", data) response = requests.post("http://192.168.1.10:8080/AppFindPac", headers=HEADER, json=data) if response.status_code == 200: result = response.json() print("Результат JSON:", result) if result.get('result', None): if result.get('result', None) == 'OK': # return jsonify({'success': True, 'message': "Скоро вам позвонят!"}) pass else: return jsonify({'success': False, "error": "Пользователь не найден среди пациентов клиники.
Если у Вас возникли вопросы по регистрации, Вы можете связаться с нами в рабочие часы по телефону: +7 (342)207-03-03."}) else: return jsonify({'success': False, "error": "Ошибка формата запроса"}) else: print(f"Ошибка при отправке данных. Статус-код: {response.status_code}") return jsonify({'success': False, "error": "Ошибка отправки данных в Полимед"}) except Exception as e: print(f"Ошибка обработки данных для Полимед: {e}") return jsonify({'success': False, "error": "Ошибка обработки данных для Полимед"}) """ Блок верификации через SMS """ try: url = "https://sms.ru/code/call" api_key = "2ED72E61-76C8-5637-3587-2792D47B698C" # Отправка запроса на вызов с кодом верификации response = requests.post(url, data={"phone": formatted_phone, "api_id": api_key}) print(response) json_data = response.json() verification_code = None current_time = datetime.now().strftime("%d.%m.%Y, %H:%M") # Авторизация и доступ к таблице sheet = authorize_google().open("Пациенты клиники").sheet1 # Проверка успешного получения кода if json_data and json_data["status"] == "OK": verification_code = json_data.get("code") # Поиск пациента row_number, patient_row = find_patients(raw_data) if patient_row: # Обновление записи в таблице sheet = authorize_google().open("Пациенты клиники").sheet1 # Определяем динамический столбец по заголовкам headers = sheet.row_values(1) verification_col = headers.index("Верификация") + 1 # Столбцы нумеруются с 1 sheet.update_cell(row_number, verification_col, verification_code) else: # Записываем данные и код верификации в таблицу sheet.append_row([ fio, raw_phone, dob, raw_data.get("user_id"), # Telegram ID пользователя current_time, # Время отправки данных verification_code # Код верификации ]) print(f"Код верификации, отправленный пользователю: {verification_code}") return jsonify({'success': True}) else: print("Звонок не может быть выполнен.") print("Текст ошибки:", json_data.get("status_text")) return jsonify({'success': False, "error": "Если звонок не поступил, это может быть связано с временными работами на сервере.
Пожалуйста, попробуйте зарегистрироваться позже!"}) except Exception as e: print(f"Ошибка при обработке SMS верификации: {e}") return jsonify({'success': False, "error": "Если звонок не поступил, это может быть связано с временными работами на сервере.
Пожалуйста, попробуйте зарегистрироваться позже!"}) @webApp.route('/request_patient', methods=['POST']) def request_patient_information(): try: # return { # "fio": "Чистогов Илья Дмитриевич", # "formatted_birthdate": "24.09.2003", # "js_formatted_passport_date": "2016-09-25", # "js_formatted_birthdate": "2003-09-24", # "pct_doc_ser": "1234", # "pct_doc_nom": "123456", # "pct_doc_org_kod": "590-003", # "pct_doc_org_name": "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", # "pct_email": "1@1.ru", # "pct_inn": "123123123123", # "taxpayer_status_zapros": "Отец", # "pct_doc_ind": "1", # "server_data": { # "pct_birthday": "2003-09-24T00:00:00.000Z", # "pct_doc_date": "", # "pct_doc_ind": "", # "pct_doc_nom": "", # "pct_doc_org_kod": "", # "pct_doc_org_name": "", # "pct_doc_ser": "", # "pct_doc_type": "", # "pct_email": "", # "pct_first_name": "Илья", # "pct_inn": "", # "pct_last_name": "Чистогов", # "pct_second_name": "Дмитриевич", # "result": "OK", # "status_code": 200 # }, # "success": True, # "user_id": "766945900" # } data = request.get_json() print(data) user_id = data.get('user_id') # taxpayer_fio = data.get('taxpayer_fio') patient_fio = data.get('patient_fio') url = "http://192.168.1.10:8080/AppFindPacFromTel" data = {"telegram_id": user_id} response = requests.post(url, json=data) if response.status_code == 200: result = response.json() patients = [] # Список пациентов birthday_pac = {} # Словарь для хранения ФИО и даты рождения for patient in result.get("Pacients", []): # Формируем строку ФИО fio = f"{patient['last_name']} {patient['first_name']} {patient['second_name']}" patients.append(fio) # Сохраняем дату рождения в словарь с ключом ФИО birthday_pac[fio] = patient['birthday'] print("список:", patients) print("даты рождения:", birthday_pac) birthday_users = birthday_pac.get(patient_fio) if not user_id or not patient_fio: #or not taxpayer_fio return "Ошибка: Не выбраны налогоплательщик и пациент", 400 payload = { "telegram_id": int(user_id), "first_name": patient_fio.split()[1] if len(patient_fio.split()) > 1 else "", "second_name": patient_fio.split()[2] if len(patient_fio.split()) > 2 else "", "last_name": patient_fio.split()[0], "pac_poluchat": "True", "poluchat_status": "", "birthday": birthday_users } print(payload) headers = {"User-Agent": "Mozilla/5.0", "Content-Type": "application/json"} url = "http://192.168.1.10:8080/AppZaprSvedPac" response = requests.post(url, json=payload, headers=headers) if response.status_code == 200: print("Ответ:", response.text) result = response.json print(result) try: result = response.json() except: result = {} js_formatted_birthdate = ( datetime.strptime(result.get("pct_birthday", ""), "%Y-%m-%dT%H:%M:%S.%fZ").strftime("%Y-%m-%d") if result.get("pct_birthday") else "") js_formatted_passport_date = ( datetime.strptime(result.get("pct_doc_date", ""), "%Y-%m-%dT%H:%M:%S.%fZ").strftime("%Y-%m-%d") if result.get("pct_doc_date") else "") return jsonify( user_id=user_id, fio=patient_fio, server_data=result, js_formatted_birthdate=js_formatted_birthdate, js_formatted_passport_date=js_formatted_passport_date, pct_doc_ser=result.get('pct_doc_ser', ''), pct_doc_nom=result.get('pct_doc_nom', ''), pct_inn=result.get('pct_inn', ''), pct_email=result.get('pct_email', ''), pct_doc_org_kod=result.get('pct_doc_org_kod', ''), pct_doc_org_name=result.get('pct_doc_org_name', ''), success = True ) else: return f"Ошибка: {response.status_code} - {response.text}", 500 except Exception as e: return f"Произошла ошибка: {e}", 500 @webApp.route('/sending_patient', methods=['POST']) def sending_patient_data(): try: raw_data = json.loads(request.data) print(raw_data) # Разделение ФИО fio = raw_data.get("fio", "") parts = fio.split(" ") if len(parts) < 3: return jsonify({'success': False, "error": "ФИО должно содержать 3 слова"}), 400 # Код 400 - ошибка клиента first_name = parts[1] middle_name = " ".join(parts[2:]) last_name = parts[0] passport = raw_data.get("passport", "") part = passport.split(" ") pct_doc_ser = part[0] plc_doc_nom = part[1] # Обработка даты рождения dob = raw_data.get("dob", "") if dob: # Преобразуем формат из 2016-09-25 в datetime объект date_obje = datetime.strptime(dob, "%Y-%m-%d") # Преобразуем datetime объект в строку в формате ISO 8601 pct_birthday = date_obje.strftime("%Y-%m-%dT%H:%M:%S.000Z") pct_inn = raw_data.get("inn", "") formatted_date = raw_data.get("passport_date", "") # Преобразуем строку в объект datetime if formatted_date: # Преобразуем формат из 2016-09-25 в datetime объект date_obj = datetime.strptime(formatted_date, "%Y-%m-%d") # Преобразуем datetime объект в строку в формате ISO 8601 plc_doc_date = date_obj.strftime("%Y-%m-%dT%H:%M:%S.000Z") plc_doc_org_name = raw_data.get("passport_issued_by", "") plc_doc_org_kod = raw_data.get("postal_code", "") pct_email = raw_data.get("email", "") # Извлекаем список выбранных годов selected_years = raw_data.get('selected_years', []) if selected_years: # Преобразуем элементы в целые числа selected_years = list(map(int, selected_years)) # Находим минимальный и максимальный год year_beg_spr = min(selected_years) year_end_spr = max(selected_years) # Если выбран только один год, то обе переменные будут одинаковыми if year_beg_spr == year_end_spr: year_end_spr = year_beg_spr # Теперь у нас есть year_beg_spr и year_end_spr print("Минимальный год:", year_beg_spr) print("Максимальный год:", year_end_spr) # Формируем данные для отправки data1 = { "telegram_id": raw_data.get("user_id"), "pct_first_name": first_name, "pct_second_name": middle_name, "pct_last_name": last_name, "pct_birthday": pct_birthday, "pct_inn": pct_inn, "pct_doc_type": "Паспорт", "pct_doc_ind": 1, "pct_doc_ser": pct_doc_ser, "pct_doc_nom": plc_doc_nom, "pct_doc_date": plc_doc_date, "pct_doc_org_name": plc_doc_org_name, "pct_doc_org_kod": plc_doc_org_kod, "pac_poluchat": "True", "pct_email": pct_email, "year_beg_spr": year_beg_spr, "year_end_spr": year_end_spr } print("Отправляемые данные:", data1) #Успешный ответ HEADER1 = {"User-Agent": "Mozilla/5.0", "Content-Type": "application/json"} try: response = requests.post("http://192.168.1.10:8080/AppSaveSvedPac", headers=HEADER1, json=data1, timeout=5) print("Ответ сервера:", response.text) # вдруг сервер всё же что-то вернёт if response.status_code == 200: return jsonify({'success': True}) else: return jsonify({'success': False, 'error': f'Сервер вернул статус {response.status_code}'}), 500 except requests.exceptions.RequestException as e: return jsonify({'success': False, 'error': f'Ошибка соединения: {str(e)}'}), 500 except Exception as e: print(f"Ошибка: {e}") return jsonify({'success': False, 'error': str(e)}), 500 # Заглушка — вместо отправки просто возвращаем успех # return jsonify({'success': True}) @webApp.route('/request_patient2', methods=['POST']) def request_patient2(): try: # return { # "fio": "Чистогов Илья Дмитриевич", # "formatted_birthdate": "24.09.2003", # "js_formatted_passport_date": "2016-09-25", # "js_formatted_birthdate": "2003-09-24", # "pct_doc_ser": "1234", # "pct_doc_nom": "123456", # "pct_doc_org_kod": "590-003", # "pct_doc_org_name": "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", # "pct_email": "1@1.ru", # "pct_inn": "123123123123", # "taxpayer_status_zapros": "Отец", # "pct_doc_ind": "1", # "server_data": { # "pct_birthday": "2003-09-24T00:00:00.000Z", # "pct_doc_date": "", # "pct_doc_ind": "", # "pct_doc_nom": "", # "pct_doc_org_kod": "", # "pct_doc_org_name": "", # "pct_doc_ser": "", # "pct_doc_type": "", # "pct_email": "", # "pct_first_name": "Илья", # "pct_inn": "", # "pct_last_name": "Чистогов", # "pct_second_name": "Дмитриевич", # "result": "OK", # "status_code": 200 # }, # "success": True, # "user_id": "766945900" # } data = request.get_json() print(data) user_id = data.get('user_id') taxpayer_status_zapros = data.get('taxpayer_status') patient_fio = data.get('patient_fio') url = "http://192.168.1.10:8080/AppFindPacFromTel" data = {"telegram_id": user_id} response = requests.post(url, json=data) if response.status_code == 200: result = response.json() patients = [] # Список пациентов birthday_pac = {} # Словарь для хранения ФИО и даты рождения for patient in result.get("Pacients", []): # Формируем строку ФИО fio = f"{patient['last_name']} {patient['first_name']} {patient['second_name']}" patients.append(fio) # Сохраняем дату рождения в словарь с ключом ФИО birthday_pac[fio] = patient['birthday'] print("список:", patients) print("даты рождения:", birthday_pac) birthday_users = birthday_pac.get(patient_fio) print(birthday_users) payload = { "telegram_id": int(user_id), "first_name": patient_fio.split()[1] if len(patient_fio.split()) > 1 else "", "second_name": patient_fio.split()[2] if len(patient_fio.split()) > 2 else "", "last_name": patient_fio.split()[0], "pac_poluchat": "False", "poluchat_status": taxpayer_status_zapros, "birthday": birthday_users } print(payload) headers = {"User-Agent": "Mozilla/5.0", "Content-Type": "application/json"} url = "http://192.168.1.10:8080/AppZaprSvedPac" response = requests.post(url, json=payload, headers=headers) if response.status_code == 200: print("Ответ:", response.text) result = response.json print(result) try: result = response.json() except: result = {} js_formatted_birthdate = ( datetime.strptime(result.get("pct_birthday", ""), "%Y-%m-%dT%H:%M:%S.%fZ").strftime("%Y-%m-%d") if result.get("pct_birthday") else "") js_formatted_birthdate_plc = ( datetime.strptime(result.get("plc_birthday", ""), "%Y-%m-%dT%H:%M:%S.%fZ").strftime("%Y-%m-%d") if result.get("plc_birthday") else "") js_formatted_passport_date = ( datetime.strptime(result.get("pct_doc_date", ""), "%Y-%m-%dT%H:%M:%S.%fZ").strftime("%Y-%m-%d") if result.get("pct_doc_date") else "") js_formatted_passport_date_plc = ( datetime.strptime(result.get("plc_doc_date", ""), "%Y-%m-%dT%H:%M:%S.%fZ").strftime("%Y-%m-%d") if result.get("plc_doc_date") else "") return jsonify( user_id=user_id, taxpayer_status_zapros=taxpayer_status_zapros, fio=patient_fio, server_data=result, js_formatted_birthdate=js_formatted_birthdate, js_formatted_passport_date=js_formatted_passport_date, pct_doc_ser=result.get('pct_doc_ser', ''), pct_doc_nom=result.get('pct_doc_nom', ''), pct_inn=result.get('pct_inn', ''), pct_doc_type=result.get('pct_doc_type', ''), pct_doc_ind=result.get('pct_doc_ind', ''), pct_email=result.get('pct_email', ''), pct_doc_org_kod=result.get('pct_doc_org_kod', ''), pct_doc_org_name=result.get('pct_doc_org_name', ''), plc_status=result.get('plc_status', ''), plc_fio=result.get('plc_fio', ''), js_formatted_birthdate_plc=js_formatted_birthdate_plc, plc_inn=result.get('plc_inn', ''), plc_doc_type=result.get('plc_doc_type', ''), plc_doc_ind=result.get('plc_doc_ind', ''), plc_doc_ser=result.get('plc_doc_ser', ''), plc_doc_nom=result.get('plc_doc_nom', ''), js_formatted_passport_date_plc=js_formatted_passport_date_plc, plc_doc_org_name=result.get('plc_doc_org_name', ''), plc_doc_org_kod=result.get('plc_doc_org_kod', ''), success = True ) else: return f"Ошибка: {response.status_code} - {response.text}", 500 except Exception as e: return f"Произошла ошибка: {e}", 500 @webApp.route('/sending_patient2', methods=['POST']) def send_registration_request2(): try: raw_data = json.loads(request.data) print("Полученные данные:", raw_data) # Разделение ФИО # Определение документа if raw_data.get("passport1") and raw_data.get("passport_date1") and raw_data.get( "postal_code1") and raw_data.get("passport_issued_by1"): pct_doc_type = "Паспорт" pct_doc_ind = 1 passport = raw_data.get("passport1", "") parts = passport.split(" ") pct_doc_ser = parts[0] pct_doc_nom = parts[1] formatted_date = raw_data.get("passport_date1", "") date_obj = datetime.strptime(formatted_date, "%Y-%m-%d") pct_doc_date = date_obj.strftime("%Y-%m-%dT00:00:00.000Z") pct_doc_org_name = raw_data.get("passport_issued_by1", "") pct_doc_org_kod = raw_data.get("postal_code1", "") inn1 = "" elif raw_data.get("svedetelstvo") and raw_data.get("svedetelstvo_date") and raw_data.get( "svedetelstvo_issued_by"): pct_doc_type = "Свидетельство о рождении" pct_doc_ind = 2 pct_doc_ser, pct_doc_nom = raw_data.get("svedetelstvo", "").split(" ") formatted_date = raw_data.get("svedetelstvo_date", "") date_obj = datetime.strptime(formatted_date, "%Y-%m-%d") pct_doc_date = date_obj.strftime("%Y-%m-%dT00:00:00.000Z") pct_doc_org_name = raw_data.get("svedetelstvo_issued_by", "") pct_doc_org_kod = "" inn1 = "" elif raw_data.get("inn1"): inn1 = raw_data.get("inn1", "") pct_doc_type = "" pct_doc_ind = "" pct_doc_ser = "" pct_doc_nom = "" pct_doc_date = "" pct_doc_org_name = "" pct_doc_org_kod = "" else: return jsonify({'success': False, "error": "Недостаточно данных для определения документа пациента."}), 400 fio = raw_data.get("patient_fio", "") parts = fio.split(" ") if len(parts) < 3: return jsonify({'success': False, "error": "ФИО должно содержать 3 слова"}), 400 pct_last_name = parts[0] pct_first_name = parts[1] pct_second_name = " ".join(parts[2:]) # Обработка даты рождения dob = raw_data.get("dob1", "") if dob: date_obj = datetime.strptime(dob, "%Y-%m-%d") pct_birthday = date_obj.strftime("%Y-%m-%dT00:00:00.000Z") # Данные родителей plc_fio = raw_data.get("fional", "") plc_status = raw_data.get("taxpayer_status_zapros", "") dob_parent = raw_data.get("dobnal", "") plc_birthday = "" if dob_parent: date_obj = datetime.strptime(dob_parent, "%Y-%m-%d") plc_birthday = date_obj.strftime("%Y-%m-%dT00:00:00.000Z") plc_doc_ser, plc_doc_nom = raw_data.get("passportnal", "").split(" ") formatted_date = raw_data.get("passport_datenal", "") date_obj = datetime.strptime(formatted_date, "%Y-%m-%d") plc_doc_date = date_obj.strftime("%Y-%m-%dT00:00:00.000Z") plc_doc_org_name = raw_data.get("passport_issued_bynal", "") plc_doc_org_kod = raw_data.get("postal_codenal", "") plc_inn = raw_data.get("innnal", "") user_id = raw_data.get('user_id') email1=raw_data.get("email1", "") # Извлекаем годы selected_years = raw_data.get('selected_years', []) if selected_years: # Преобразуем элементы в целые числа selected_years = list(map(int, selected_years)) # Находим минимальный и максимальный год year_beg_spr1 = min(selected_years) year_end_spr2 = max(selected_years) # Если выбран только один год, то обе переменные будут одинаковыми if year_beg_spr1 == year_end_spr2: year_end_spr2 = year_beg_spr1 # Теперь у нас есть year_beg_spr и year_end_spr print("Минимальный год:", year_beg_spr1) print("Максимальный год:", year_end_spr2) # Формируем данные data2 = { "telegram_id": int(user_id), "pct_last_name": pct_last_name, "pct_first_name": pct_first_name, "pct_second_name": pct_second_name, "pct_birthday": pct_birthday, "pct_inn": inn1, "pct_doc_type": pct_doc_type, "pct_doc_ind": pct_doc_ind, "pct_doc_ser": pct_doc_ser, "pct_doc_nom": pct_doc_nom, "pct_doc_date": pct_doc_date, "pct_doc_org_name": pct_doc_org_name, "pct_doc_org_kod": pct_doc_org_kod, "pac_poluchat": "False", "pct_email": email1, "plc_status": plc_status, "plc_fio": plc_fio, "plc_birthday": plc_birthday, "plc_inn": plc_inn, "plc_doc_type": "Паспорт", "plc_doc_ind": 1, "plc_doc_ser": plc_doc_ser, "plc_doc_nom": plc_doc_nom, "plc_doc_date": plc_doc_date, "plc_doc_org_name": raw_data.get("passport_issued_bynal"), "plc_doc_org_kod": plc_doc_org_kod, "year_beg_spr": year_beg_spr1, "year_end_spr": year_end_spr2 } # print("Отправляемые данные:", data2) # return jsonify({'success': True, 'data': data2}) # except Exception as e: # return jsonify({'success': False, 'error': str(e)}), 500 print("Отправляемые данные:", data2) # Успешный ответ HEADER2 = {"User-Agent": "Mozilla/5.0", "Content-Type": "application/json"} try: response = requests.post("http://192.168.1.10:8080/AppSaveSvedPac", headers=HEADER2, json=data2, timeout=5) print("Ответ сервера:", response.text) # вдруг сервер всё же что-то вернёт if response.status_code == 200: return jsonify({'success': True}) else: return jsonify({'success': False, 'error': f'Сервер вернул статус {response.status_code}'}), 500 except requests.exceptions.RequestException as e: return jsonify({'success': False, 'error': f'Ошибка соединения: {str(e)}'}), 500 except Exception as e: print(f"Ошибка: {e}") return jsonify({'success': False, 'error': str(e)}), 500 @webApp.route('/') def main_page_2_0(): return render_template('2.0/main_page.pug', user_id=request.args.get('user_id', None)) @webApp.route('/fnstest') def main_page_2_0_fns(): try: user_id = request.args.get('user_id') if not user_id: return "Ошибка: не передан user_id", 400 sheet = authorize_google().open("Пациенты клиники").sheet1 records = sheet.get_all_values() # Получаем список всех людей с таким user_id matching_users = [row[0] for row in records[1:] if row[3] == user_id] matching_users = sum(matching_users, []) if any(isinstance(i, list) for i in matching_users) else matching_users print(matching_users) if not matching_users: return "Ошибка: пользователь не найден", 404 return render_template('2.0/main_page_fns.pug', user_id=user_id, users=matching_users) except Exception as e: return f"Произошла ошибка: {e}", 500 @webApp.route('/fns') def main_page_2_0_fns_test(): try: user_id = request.args.get('user_id') if not user_id: return "Ошибка: не передан user_id", 400 url = "http://192.168.1.10:8080/AppFindPacFromTel" data = {"telegram_id": user_id} response = requests.post(url, json=data) patients = [] if response.status_code == 200: result = response.json() for patient in result.get("Pacients", []): # Формируем строку ФИО fio = f"{patient['last_name']} {patient['first_name']} {patient['second_name']}" patients.append(fio) print("список:", patients) birthday_pac = {patient['birthday']} if not patients: return "Ошибка: пользователь не найден", 404 return render_template('2.0/main_page_fns2.pug', user_id=user_id, users=patients, birthday_paci=birthday_pac) except Exception as e: return f"Произошла ошибка: {e}", 500