Esempio n. 1
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()
Esempio n. 2
0
File: cli.py Progetto: dmdm/Stoma
    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