Shelter PMS fully functional
This commit is contained in:
@@ -1,15 +1,62 @@
|
||||
from abc import ABC, abstractmethod
|
||||
|
||||
|
||||
class BasePMSPlugin(ABC):
|
||||
def __init__(self, hotel, pms_config):
|
||||
self.hotel = hotel
|
||||
"""
|
||||
Базовый класс для всех PMS плагинов.
|
||||
Плагин должен уметь:
|
||||
- Возвращать данные fetch_data()
|
||||
- Предоставлять дефолтные parser_settings
|
||||
- Проходить базовую валидацию (validate_plugin)
|
||||
"""
|
||||
|
||||
def __init__(self, pms_config):
|
||||
"""
|
||||
pms_config: объект PMSConfiguration
|
||||
"""
|
||||
self.pms_config = pms_config
|
||||
|
||||
|
||||
@abstractmethod
|
||||
def fetch_and_parse(self):
|
||||
def _fetch_data(self):
|
||||
"""
|
||||
Этот метод должен быть реализован в каждом плагине.
|
||||
Он должен получать данные из API и возвращать их в нужном формате.
|
||||
Абстрактный метод для получения данных.
|
||||
"""
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user