Source code for luna_configurator.app.handlers.base_handler
from app.app import ConfiguratorApp, ConfiguratorRequest
from app.handlers.schemas import TAG, TYPE_STR
from configs.configs.configs.services import SettingsConfigurator
from crutches_on_wheels.web.handlers import BaseHandler
[docs]class BaseRequestHandler(BaseHandler):
"""
Base handler for other handlers.
Attributes:
apiVersion(int): API version
dbContext(DBContext): database context
"""
def __init__(self, request: ConfiguratorRequest) -> None:
"""
Init
Args:
request: Request object
"""
super().__init__(request)
self.apiVersion = request.app.ctx.apiVersion
self.dbContext = request.dbContext
@property
def app(self) -> ConfiguratorApp:
"""
Get running app
Returns:
app
"""
return self.request.app
@property
def config(self) -> SettingsConfigurator:
"""
Get app config
Returns:
app config
"""
return self.app.ctx.serviceConfig
[docs] async def getSettingSchema(self, settingName: str) -> dict:
"""
Get validation schema for setting
Args:
settingName: setting name
Returns:
validation schema for setting
"""
validationSchema = {
"type": "object",
"properties": {
"tags": {"type": "array", "items": TAG, "minItems": 0},
"name": {"type": "string", "enum": (await self.dbContext.getAllSettingNames())},
"value": {"type": "unknown"},
"description": TYPE_STR(128),
},
"required": ["tags", "name", "value"],
"additionalProperties": False,
}
validationSchema["properties"]["value"] = (await self.dbContext.getLimitation(settingName))["validation_schema"]
return validationSchema