Exemple #1
0
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
Exemple #2
0
    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
Exemple #3
0
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
Exemple #4
0
    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'))
Exemple #5
0
    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'))
Exemple #6
0
    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)
Exemple #7
0
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()
Exemple #8
0
# add your model's MetaData object here
# 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.

    """
Exemple #9
0
# 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.