Source code for flask_unchained.bundles.sqlalchemy.services.model_manager
from flask_unchained import Service, unchained
from flask_unchained.di import ServiceMetaclass, ServiceMetaOptionsFactory
from sqlalchemy_unchained.model_manager import (ModelManager as BaseModelManager,
ModelManagerMetaclass as BaseModelManagerMetaclass)
from ..meta_options import ModelMetaOption
class ModelManagerMetaOptionsFactory(ServiceMetaOptionsFactory):
_allowed_properties = ['model']
_options = ServiceMetaOptionsFactory._options + [ModelMetaOption]
def __init__(self):
super().__init__()
self._model = None
@property
def model(self):
# make sure to always return the correct mapped model class
if not unchained._models_initialized or not self._model:
return self._model
return unchained.sqlalchemy_bundle.models[self._model.__name__]
@model.setter
def model(self, model):
self._model = model
class ModelManagerMetaclass(ServiceMetaclass, BaseModelManagerMetaclass):
pass
[docs]class ModelManager(BaseModelManager, Service, metaclass=ModelManagerMetaclass):
"""
Base class for database model manager services.
"""
_meta_options_factory_class = ModelManagerMetaOptionsFactory
class Meta:
abstract = True
model = None
__all__ = [
'ModelManager',
'ModelManagerMetaclass',
'ModelManagerMetaOptionsFactory',
]