Source code for anyblok

# This file is a part of the AnyBlok project
#
#    Copyright (C) 2014 Jean-Sebastien SUZANNE <jssuzanne@anybox.fr>
#    Copyright (C) 2015 Jean-Sebastien SUZANNE <jssuzanne@anybox.fr>
#    Copyright (C) 2016 Jean-Sebastien SUZANNE <jssuzanne@anybox.fr>
#    Copyright (C) 2017 Jean-Sebastien SUZANNE <jssuzanne@anybox.fr>
#
# This Source Code Form is subject to the terms of the Mozilla Public License,
# v. 2.0. If a copy of the MPL was not distributed with this file,You can
# obtain one at http://mozilla.org/MPL/2.0/.
from pkg_resources import iter_entry_points
from logging import getLogger
from .schema import (  # noqa
    ForeignKeyConstraint,
    UniqueConstraint,
    PrimaryKeyConstraint,
    CheckConstraint,
    Index,
)


logger = getLogger(__name__)


[docs]def load_init_function_from_entry_points(unittest=False): """Call all the entry points ``anyblok_pyramid.init`` to update the argument setting The callable needs a dict of entry points as parameter:: def init_function(unittest=False): ... Entry points are defined in the setup.py file:: setup( ..., entry_points={ 'anyblok.init': [ init_function=path:init_function, ... ], }, ..., ) """ for i in iter_entry_points("anyblok.init"): # pragma: no cover print("AnyBlok Load init: %r" % i) i.load()(unittest=unittest)
[docs]def configuration_post_load(unittest=False): """Call all the entry points defined as ``anyblok_configuration.post_load`` to initialize some services depending on the configuration The callable needs a dict of entry points as parameter:: def post_load_function(unittest=False): ... Entry points are defined in the setup.py file:: setup( ..., entry_points={ 'anyblok_configuration.post_load': [ post_load_function=path:post_load_function, ... ], }, ..., ) """ for i in iter_entry_points("anyblok_configuration.post_load"): logger.info("AnyBlok configuration post load: %r" % i) i.load()(unittest=unittest) # pragma: no cover
[docs]def start( processName, entry_points=None, useseparator=False, loadwithoutmigration=False, config=None, **kwargs, ): """Function used to initialize the application :: registry = start('My application', entry_points=['AnyBlok']) :param processName: Name of the application :param entry_points: entry point where load blok :param useseparator: boolean, indicate if configuration option are split betwwen two application :param loadwithoutmigration: if True, any migration operation will do :param config: dict of configuration parameters :rtype: registry if the database name is in the configuration """ from .blok import BlokManager from .config import Configuration from .registry import RegistryManager load_init_function_from_entry_points() if config is None: config = {} Configuration.load(processName, useseparator=useseparator, **config) configuration_post_load() if entry_points: BlokManager.load(entry_points=entry_points) # pragma: no cover else: BlokManager.load() db_name = Configuration.get("db_name") logger.debug("start(): db_name=%r", db_name) if not db_name: logger.warning( "start(): no database name in configuration, " "bailing out" ) return None # pragma: no cover registry = RegistryManager.get( db_name, loadwithoutmigration=loadwithoutmigration, **kwargs ) registry.commit() return registry
from .declarations import Declarations # noqa from . import core # noqa from . import model # noqa from . import mixin # noqa from .authorization import binding # noqa from .imp import reload_module_if_blok_is_reloading # noqa