def init_app(args, setup_logging=True): """ Inits Pyramid app for testing environment :param args: Class with args :return: Dict with ``DbEngine``, ``DbSession`` and ``DbBase``. """ if setup_logging: pyramid.paster.setup_logging(args.config) settings = pyramid.paster.get_appsettings(args.config) if 'environment' not in settings: raise KeyError('Missing key "environment" in config. Specify ' 'environment in INI file "{}".'.format(args.config)) if not args.etc_dir: args.etc_dir = os.path.join(args.root_dir, 'etc') rc = Rc(environment=settings['environment'], root_dir=args.root_dir, etc_dir=args.etc_dir) rc.load() settings.update(rc.data) settings['rc'] = rc result = {'settings': settings} pym.init_auth(rc) #pym.models.init_unscoped(settings, 'db.pym.sa.') pym.models.init(settings, 'db.pym.sa.') return result
def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ # Init Rc # Get Rc instance like this, then use its methods e.g. g() or s(): # request.registry.settings['rc'] # Rc data is merged directly into settings, so you can retrieve it like # this: # request.registry.settings['project'] if 'environment' not in settings: raise KeyError('Missing key "environment" in config. Specify ' 'environment in paster INI file.') rc = Rc( environment=settings['environment'], root_dir=os.path.abspath( os.path.join(os.path.dirname(__file__), '..') ) ) rc.load() settings.update(rc.data) rc.s('environment', settings['environment']) # Put rc into config settings settings['rc'] = rc # Create config config = Configurator( settings=settings ) config.include(pym) config.commit() config.include(includeme) return config.make_wsgi_app()
def base_init(self, args, lgg=None, rc=None, rc_key=None, setup_logging=True): """ Initialises base for CLI apps: logger, console, rc, Pyramid Configurator Used by :meth:`init_app` and :meth:`init_web_app`. :param args: Namespace of parsed CLI arguments :param lgg: Inject a logger, or keep the default module logger :param rc: Inject a RC instance, or keep the loaded one. :param rc_key: *obsolete* :param setup_logging: Whether or not to setup logging as configured in rc. Default is True. """ self.args = args fn_config = os.path.abspath(args.config) self.rc_key = rc_key if setup_logging: logging.config.fileConfig( fn_config, dict( __file__=fn_config, here=os.path.dirname(fn_config) ), # Keep module loggers disable_existing_loggers=False ) if lgg: self.lgg = lgg if hasattr(args, 'verbose'): if args.verbose > 1: lgg.setLevel(logging.DEBUG) elif args.verbose > 0: lgg.setLevel(logging.INFO) p = configparser.ConfigParser() p.read(fn_config) settings = dict(p['app:main']) if 'environment' not in settings: raise KeyError('Missing key "environment" in config. Specify ' 'environment in INI file "{}".'.format(args.config)) self.lang_code, self.encoding = pym.cli.init_cli_locale( args.locale if hasattr(args, 'locale') else None, detach_stdout=settings['environment'] != 'testing' ) self.lgg.debug("TTY? {}".format(sys.stdout.isatty())) self.lgg.debug("Locale? {}, {}".format(self.lang_code, self.encoding)) if not rc: if not args.etc_dir: args.etc_dir = os.path.join(args.root_dir, 'etc') rc = Rc( environment=settings['environment'], root_dir=args.root_dir, etc_dir=args.etc_dir ) rc.load() rc.s('environment', settings['environment']) self.rc = rc
def init_app(args, setup_logging=True): """ Inits Pyramid app for testing environment :param args: Class with args :return: Dict with ``DbEngine``, ``DbSession`` and ``DbBase``. """ if setup_logging: pyramid.paster.setup_logging(args.config) settings = pyramid.paster.get_appsettings(args.config) if 'environment' not in settings: raise KeyError('Missing key "environment" in config. Specify ' 'environment in INI file "{}".'.format(args.config)) if not args.etc_dir: args.etc_dir = os.path.join(args.root_dir, 'etc') rc = Rc( environment=settings['environment'], root_dir=args.root_dir, etc_dir=args.etc_dir ) rc.load() settings.update(rc.data) settings['rc'] = rc result = {'settings': settings} pym.init_auth(rc) #pym.models.init_unscoped(settings, 'db.pym.sa.') pym.models.init(settings, 'db.pym.sa.') return result
def init_app(self, args, lgg=None, rc=None, rc_key=None, setup_logging=True): """ Initialises Pyramid application. Loads config settings. Initialises SQLAlchemy and a session. """ self.args = args fn_config = os.path.abspath(args.config) self.rc_key = rc_key if setup_logging: logging.config.fileConfig( fn_config, dict( __file__=fn_config, here=os.path.dirname(fn_config) ), # Keep module loggers disable_existing_loggers=False ) if lgg: self.lgg = lgg self.lang_code, self.encoding = pym.lib.init_cli_locale(args.locale) self.lgg.debug("TTY? {}".format(sys.stdout.isatty())) self.lgg.debug("Locale? {}, {}".format(self.lang_code, self.encoding)) #settings = pyramid.paster.get_appsettings(args.config) p = configparser.ConfigParser() p.read(fn_config) settings = dict(p['app:main']) if 'environment' not in settings: raise KeyError('Missing key "environment" in config. Specify ' 'environment in INI file "{}".'.format(args.config)) if not rc: if not args.etc_dir: args.etc_dir = os.path.join(args.root_dir, 'etc') rc = Rc( environment=settings['environment'], root_dir=args.root_dir, etc_dir=args.etc_dir ) rc.load() settings.update(rc.data) settings['rc'] = rc self.rc = rc self.settings = settings self._config = pyramid.config.Configurator( settings=settings ) pym.models.init(settings, 'db.pym.sa.') self._sess = pym.models.DbSession() pym.init_auth(rc) self.cache = redis.StrictRedis.from_url( **self.rc.get_these('cache.redis'))
def init_app(self, args, lgg=None, rc=None, rc_key=None, setup_logging=True): """ Initialises Pyramid application. Loads config settings. Initialises SQLAlchemy and a session. """ self.args = args fn_config = os.path.abspath(args.config) self.rc_key = rc_key if setup_logging: logging.config.fileConfig( fn_config, dict(__file__=fn_config, here=os.path.dirname(fn_config)), # Keep module loggers disable_existing_loggers=False) if lgg: self.lgg = lgg self.lang_code, self.encoding = pym.lib.init_cli_locale(args.locale) self.lgg.debug("TTY? {}".format(sys.stdout.isatty())) self.lgg.debug("Locale? {}, {}".format(self.lang_code, self.encoding)) #settings = pyramid.paster.get_appsettings(args.config) p = configparser.ConfigParser() p.read(fn_config) settings = dict(p['app:main']) if 'environment' not in settings: raise KeyError('Missing key "environment" in config. Specify ' 'environment in INI file "{}".'.format(args.config)) if not rc: if not args.etc_dir: args.etc_dir = os.path.join(args.root_dir, 'etc') rc = Rc(environment=settings['environment'], root_dir=args.root_dir, etc_dir=args.etc_dir) rc.load() settings.update(rc.data) settings['rc'] = rc self.rc = rc self.settings = settings self._config = pyramid.config.Configurator(settings=settings) pym.models.init(settings, 'db.pym.sa.') self._sess = pym.models.DbSession() pym.init_auth(rc) self.cache = redis.StrictRedis.from_url( **self.rc.get_these('cache.redis'))
def init_app(self, args, lgg=None, rc=None, rc_key=None, setup_logging=True): """ Initialises Pyramid application. Loads config settings. Initialises SQLAlchemy and a session. """ self.args = args self.rc_key = rc_key if setup_logging: pyramid.paster.setup_logging(args.config) if lgg: self.lgg = lgg self.lang_code, self.encoding = pym.lib.init_cli_locale(args.locale) self.lgg.debug("TTY? {}".format(sys.stdout.isatty())) self.lgg.debug("Locale? {}, {}".format(self.lang_code, self.encoding)) settings = pyramid.paster.get_appsettings(args.config) if 'environment' not in settings: raise KeyError('Missing key "environment" in config. Specify ' 'environment in INI file "{}".'.format(args.config)) if not rc: if not args.etc_dir: args.etc_dir = os.path.join(args.root_dir, 'etc') rc = Rc( environment=settings['environment'], root_dir=args.root_dir, etc_dir=args.etc_dir ) rc.load() settings.update(rc.data) settings['rc'] = rc self.rc = rc self.settings = settings self._config = pyramid.config.Configurator( settings=settings ) pym.models.init(settings, 'db.pym.sa.') self._sess = pym.models.DbSession() pym.init_auth(rc)
# for 'autogenerate' support # from myapp import mymodel # target_metadata = mymodel.Base.metadata target_metadata = pym.models.DbBase.metadata # other values from the config, defined by the needs of env.py, # can be acquired: # my_important_option = config.get_main_option("my_important_option") # ... etc. PYM_ENV = config.get_main_option("environment") if not PYM_ENV: raise KeyError('Missing key "environment" in config.') # The directory of the config file is our root_dir rc = Rc(environment=PYM_ENV, root_dir=os.path.normpath(os.path.join(os.path.dirname(__file__), ".."))) rc.load() def run_migrations_offline(): """Run migrations in 'offline' mode. This configures the context with just a URL and not an Engine, though an Engine is acceptable here as well. By skipping the Engine creation we don't even need a DBAPI to be available. Calls to context.execute() here emit the given string to the script output. """ # url = config.get_main_option("sqlalchemy.url")
# target_metadata = mymodel.Base.metadata target_metadata = pym.models.DbBase.metadata # other values from the config, defined by the needs of env.py, # can be acquired: # my_important_option = config.get_main_option("my_important_option") # ... etc. PYM_ENV = config.get_main_option("environment") if not PYM_ENV: raise KeyError('Missing key "environment" in config.') # The directory of the config file is our root_dir rc = Rc(environment=PYM_ENV, root_dir=os.path.normpath(os.path.join(os.path.dirname(__file__), '..'))) rc.load() def run_migrations_offline(): """Run migrations in 'offline' mode. This configures the context with just a URL and not an Engine, though an Engine is acceptable here as well. By skipping the Engine creation we don't even need a DBAPI to be available. Calls to context.execute() here emit the given string to the script output. """ #url = config.get_main_option("sqlalchemy.url")