Files
Touchh/pms_integration/plugins/base_plugin.py
2024-12-09 16:36:11 +09:00

63 lines
2.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from abc import ABC, abstractmethod
class BasePMSPlugin(ABC):
"""
Базовый класс для всех PMS плагинов.
Плагин должен уметь:
- Возвращать данные fetch_data()
- Предоставлять дефолтные parser_settings
- Проходить базовую валидацию (validate_plugin)
"""
def __init__(self, pms_config):
"""
pms_config: объект PMSConfiguration
"""
self.pms_config = pms_config
@abstractmethod
def _fetch_data(self):
"""
Абстрактный метод для получения данных.
"""
pass
def fetch_data(self):
"""
Обертка для выполнения _fetch_data с возможной дополнительной обработкой.
"""
return self._fetch_data()
@abstractmethod
def get_default_parser_settings(self):
"""
Возвращает словарь/JSON с дефолтными настройками разбора.
Например:
{
"fields_mapping": {
"reservation_id": "id",
"check_in": "from",
"check_out": "until"
},
"conditions": {
"checkInStatus": "Заселен"
}
}
"""
print("get_default_parser_settings. pms_config:", self.pms_config)
return {}
def validate_plugin(self):
"""
Проверка на соответствие требованиям.
Можно проверить наличие методов или полей.
"""
# Например, проверить наличие fetch_data и get_default_parser_settings
required_methods = ["fetch_data", "get_default_parser_settings"]
for m in required_methods:
if not hasattr(self, m):
raise ValueError(f"Плагин {type(self).__name__} не реализует метод {m}.")
# Можно добавить дополнительные проверки
return True