Shelter PMS fully functional

This commit is contained in:
2024-12-09 16:36:11 +09:00
parent 60eaef5527
commit e76a80fb2f
47 changed files with 665 additions and 909 deletions

View File

@@ -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