ECVI fully functional

This commit is contained in:
2024-12-27 14:47:04 +09:00
parent 9bff204fb4
commit 6af0886a64
10 changed files with 162 additions and 246 deletions

View File

@@ -124,7 +124,6 @@ async def delete_hotel(update: Update, context):
# # Обрабатываем и логируем ошибки
# await query.edit_message_text(f"❌ Ошибка: {str(e)}")
async def check_pms(update, context):
query = update.callback_query
@@ -132,37 +131,38 @@ async def check_pms(update, context):
# Получение ID отеля из callback_data
hotel_id = query.data.split("_")[2]
logger.debug(f"Hotel ID: {hotel_id}")
logger.debug(f"Hotel ID type : {type(hotel_id)}")
# Получение конфигурации отеля и PMS
hotel = await sync_to_async(Hotel.objects.select_related('pms').get)(id=hotel_id)
pms_config = hotel.pms
logger.debug(f"Hotel ID type: {type(hotel_id)}")
if not pms_config:
# Получение объекта отеля с PMS конфигурацией
hotel = await sync_to_async(Hotel.objects.select_related('pms').get)(id=hotel_id)
if not hotel.pms:
logger.error(f"Отель {hotel.name} не имеет связанной PMS конфигурации.")
await query.edit_message_text("PMS конфигурация не найдена.")
return
# Создаем экземпляр PMSIntegrationManager
pms_manager = PMSIntegrationManager(hotel_id=hotel_id)
await pms_manager.load_hotel()
logger.debug(f"Hotel PMS: {hotel.pms.name}")
# Инициализация PMSIntegrationManager с отелем
pms_manager = PMSIntegrationManager(hotel=hotel)
await sync_to_async(pms_manager.load_hotel)()
await sync_to_async(pms_manager.load_plugin)()
# Проверяем, какой способ интеграции использовать
# Проверка наличия fetch_data и вызов плагина
if hasattr(pms_manager.plugin, 'fetch_data') and callable(pms_manager.plugin.fetch_data):
# Плагин поддерживает метод fetch_data
report = await pms_manager.plugin._fetch_data()
logger.debug(f"TYPE: {type(report)}")
report = await pms_manager.plugin.fetch_data()
logger.debug(f"Отчет типа: {type(report)}")
else:
logger.error("Плагин не поддерживает fetch_data.")
await query.edit_message_text("Подходящий способ интеграции с PMS не найден.")
return
# Проверяем результат выполнения fetch_data
# Проверка корректности отчета
if not report or not isinstance(report, dict):
logger.error(f"Некорректный отчет от fetch_data: {report}")
await query.edit_message_text("Ошибка: Отчет fetch_data отсутствует или имеет некорректный формат.")
return
# Формируем сообщение о результатах
# Формирование сообщения о результатах
result_message = (
f"Интеграция PMS завершена успешно.\n"
f"Обработано интервалов: {report.get('processed_intervals', 0)}\n"
@@ -174,14 +174,15 @@ async def check_pms(update, context):
logger.info(f"Result_Message: {result_message}")
await query.edit_message_text(result_message)
except Hotel.DoesNotExist:
logger.error(f"Отель с ID {hotel_id} не найден.")
await query.edit_message_text("Ошибка: Отель не найден.")
except Exception as e:
# Обрабатываем и логируем ошибки
logger.error(f"Ошибка в методе check_pms: {str(e)}", exc_info=True)
await query.edit_message_text(f"❌ Ошибка: {str(e)}")
async def setup_rooms(update: Update, context):
"""Настроить номера отеля."""
query = update.callback_query