Source code for biothings.web.settings.validators
[docs]
class WebAPIValidator:
[docs]
def validate(self, config):
# Compatibility
if getattr(config, "API_PREFIX", None) is not None:
config.APP_PREFIX = config.API_PREFIX
if getattr(config, "API_VERSION", None) is not None:
config.APP_VERSION = config.API_VERSION
assert config.APP_VERSION or config.APP_PREFIX, (
"Require at least one of the follwing settings:"
"(APP_VERSION, APP_PREFIX) to create a layer of"
"separation for the default biothings routes."
)
[docs]
class DBParamValidator:
[docs]
def validate(self, config):
assert isinstance(config.ES_INDICES, dict)
# compatibility settings to convert ES_INDEX/ES_DOC_TYPE settings to ES_INDICES
if getattr(config, "ES_INDEX", None):
from biothings.web.settings import default
if config.ES_INDICES is default.ES_INDICES:
config.ES_INDICES = {}
else: # combine with the user provided value
config.ES_INDICES = dict(config.ES_INDICES)
# _doc_type can be None if not provided, in this case, ES_INDEX value will be
# set to "None" key in ES_INDICES as the default index used in the handlers
_doc_type = getattr(config, "ES_DOC_TYPE", None) or None
config.ES_INDICES[_doc_type] = config.ES_INDEX
ERROR = "UNSUPPORTED SETTINGS."
# encountering the following attributes indicate
# the application is built for a previous version.
# to ensure delivering intended behaviors,
# upgrade the config module of the application.
assert not hasattr(config, "ES_SNIFF"), ERROR
assert not hasattr(config, "ES_CLIENT_TIMEOUT"), ERROR
[docs]
class SubmoduleValidator:
def __init__(self):
self._prefixes = set()
[docs]
def validate(self, config):
assert config.APP_PREFIX, "APP_PREFIX must be defined for a submodule."
assert config.APP_PREFIX not in self._prefixes, "APP_PREFIX conflicts."
self._prefixes.add(config.APP_PREFIX)
[docs]
class MongoParamValidaor:
[docs]
def validate(self, config):
pass