Shelter PMS fully functional
This commit is contained in:
@@ -2,6 +2,7 @@ from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update
|
||||
from asgiref.sync import sync_to_async
|
||||
from hotels.models import Hotel, UserHotel
|
||||
from users.models import User
|
||||
from pms_integration.manager import PMSIntegrationManager
|
||||
|
||||
async def manage_hotels(update: Update, context):
|
||||
"""Отображение списка отелей, связанных с пользователем."""
|
||||
@@ -36,6 +37,7 @@ async def hotel_actions(update: Update, context):
|
||||
await query.answer()
|
||||
|
||||
hotel_id = int(query.data.split("_")[1])
|
||||
print(f"Selected hotel id: {hotel_id}")
|
||||
hotel = await sync_to_async(Hotel.objects.filter(id=hotel_id).first)()
|
||||
if not hotel:
|
||||
await query.edit_message_text("Отель не найден.")
|
||||
@@ -67,22 +69,81 @@ async def delete_hotel(update: Update, context):
|
||||
await query.edit_message_text("Отель не найден.")
|
||||
|
||||
|
||||
async def check_pms(update: Update, context):
|
||||
"""Проверить интеграцию с PMS."""
|
||||
from pms_integration.manager import PMSIntegrationManager
|
||||
from asgiref.sync import sync_to_async
|
||||
from hotels.models import Hotel
|
||||
|
||||
# async def check_pms(update, context):
|
||||
# query = update.callback_query
|
||||
|
||||
# try:
|
||||
# # Логирование callback_data
|
||||
# hotel_id = query.data.split("_")[2]
|
||||
# print(f"Selected hotel id: {hotel_id}")
|
||||
# context.user_data["selected_hotel"] = hotel_id
|
||||
|
||||
# # Инициализация менеджера PMS
|
||||
# pms_manager = PMSIntegrationManager(hotel_id=hotel_id)
|
||||
# print(f"Loaded hotel: {pms_manager.hotel}")
|
||||
# await pms_manager.load_hotel() # Асинхронная загрузка отеля
|
||||
# pms_manager.load_plugin() # Загрузка плагина
|
||||
|
||||
# # Получение данных
|
||||
# data = pms_manager.fetch_data()
|
||||
# print(f'PMS_managerПолучено записей: {len(data)}\n\n\n___')
|
||||
# print(f'Данные {data}\n\n\n')
|
||||
# # Логирование
|
||||
# await pms_manager.save_log("success", f"Успешная интеграция с PMS {pms_manager.pms_config.name}.")
|
||||
# await query.edit_message_text(f"Интеграция успешна! Получено {len(data)} записей.")
|
||||
|
||||
# except Exception as e:
|
||||
# # Логирование ошибок
|
||||
# if 'pms_manager' in locals() and pms_manager.hotel:
|
||||
# await pms_manager.save_log("error", str(e))
|
||||
# await query.edit_message_text(f"❌ Ошибка: {e}")
|
||||
|
||||
async def check_pms(update, context):
|
||||
query = update.callback_query
|
||||
await query.answer()
|
||||
|
||||
hotel_id = int(query.data.split("_")[2])
|
||||
hotel = await sync_to_async(Hotel.objects.select_related('api', 'pms').get)(id=hotel_id)
|
||||
if not hotel:
|
||||
await query.edit_message_text("Отель не найден.")
|
||||
return
|
||||
try:
|
||||
# Получение hotel_id из callback_data
|
||||
hotel_id = query.data.split("_")[2]
|
||||
print(f"Selected hotel id: {hotel_id}")
|
||||
context.user_data["selected_hotel"] = hotel_id
|
||||
|
||||
api_name = hotel.api.name if hotel.api else "Не настроен"
|
||||
pms_name = hotel.pms.name if hotel.pms else "Не указана"
|
||||
# Инициализация менеджера PMS
|
||||
pms_manager = PMSIntegrationManager(hotel_id=hotel_id)
|
||||
print(f"Инициализация PMS менеджера для отеля ID: {hotel_id}")
|
||||
|
||||
status_message = f"Отель: {hotel.name}\nPMS система: {pms_name}\nAPI: {api_name}"
|
||||
await query.edit_message_text(status_message)
|
||||
# Загрузка данных отеля
|
||||
await pms_manager.load_hotel()
|
||||
print(f"Данные отеля загружены: {pms_manager.hotel}")
|
||||
|
||||
# Загрузка плагина
|
||||
pms_manager.load_plugin()
|
||||
print(f"Плагин загружен: {pms_manager.plugin}")
|
||||
|
||||
# Получение данных из PMS
|
||||
data = pms_manager.fetch_data()
|
||||
print(f"Данные получены из PMS: {len(data)} записей")
|
||||
# print(f"Полные данные: {data}\n\n\n")
|
||||
|
||||
# Сохранение лога успешной интеграции
|
||||
await pms_manager.save_log("success", f"Успешная интеграция с PMS {pms_manager.pms_config.name}.")
|
||||
|
||||
# Ответ пользователю
|
||||
await query.edit_message_text(f"Интеграция успешна! Получено {len(data)} записей.")
|
||||
|
||||
# Обработка данных и запись в БД
|
||||
await pms_manager.plugin._save_to_db(data, hotel_id=int(hotel_id))
|
||||
print(f"Данные успешно сохранены в базу данных.")
|
||||
|
||||
except Exception as e:
|
||||
# Логирование ошибки
|
||||
print(f"Ошибка при выполнении check_pms: {e}")
|
||||
if 'pms_manager' in locals() and pms_manager.hotel:
|
||||
await pms_manager.save_log("error", str(e))
|
||||
await query.edit_message_text(f"❌ Ошибка: {e}")
|
||||
|
||||
|
||||
async def setup_rooms(update: Update, context):
|
||||
|
||||
Reference in New Issue
Block a user