コード例 #1
0
ファイル: shell.py プロジェクト: jessedhillon/roxy
def configure(arguments):
    global logger

    site_name = arguments['<site>']
    here = os.getcwd()

    # config parser
    parser = SafeConfigParser(dict(here=here))
    config_file = arguments['--config']
    with open(config_file, 'rb') as fp:
        parser.readfp(fp)

    # logging
    logging.config.fileConfig(config_file)
    logger = logging.getLogger('roxy')

    # sqlalchemy
    content_store = '{}.content'.format(site_name)
    dsn = 'sqlite:///{}/{}'.format(here, content_store)
    engine = sqlalchemy.create_engine(dsn, encoding='utf8')
    model.initialize(engine, create=arguments['initialize'])
    logger.info("using content store {}".format(content_store))
    logger.debug("dsn {}".format(dsn))

    # post-process ini values
    section = "site:{}".format(site_name)
    section = dict(parser.items(section))
    section.pop('here')

    _configure_list(section, 'document_formats')
    section['document_formats'] = map(lambda s: s.lower(), section['document_formats'])

    return section
コード例 #2
0
ファイル: configure.py プロジェクト: jessedhillon/roxy
def configure(arguments):
    global config
    global logger

    site_name = arguments['<site>']
    here = os.getcwd()
    config_file = arguments['--config']

    # logging
    logging.config.fileConfig(config_file)
    logger = logging.getLogger('roxy')

    # config parser
    parser = SafeConfigParser(dict(here=here))
    with open(config_file, 'rb') as fp:
        parser.readfp(fp)

    # sqlalchemy
    content_store = '{}.content'.format(site_name)
    dsn = 'sqlite:///{}/{}'.format(here, content_store)
    engine = sqlalchemy.create_engine(dsn, encoding='utf8')
    model.initialize(engine, create=arguments['initialize'])
    logger.info("using content store {}".format(content_store))
    logger.debug("dsn {}".format(dsn))

    # globals
    try:
        roxy = dict(parser.items('roxy'))

    except NoSectionError:
        roxy = {}

    # post-process ini values
    site = "site:{}".format(site_name)
    site = dict(parser.items(site))
    site.pop('here')

    roxy.update(site)
    roxy['site'] = site_name

    # document_formats
    _configure_list(roxy, 'document_formats')
    roxy['document_formats'] = map(lambda s: s.lower(), roxy['document_formats'])

    # timezone
    if 'timezone' in roxy:
        roxy['timezone'] = gettz(roxy['timezone'])
    else:
        roxy['timezone'] = tzutc()

    # renderer
    jinja2 = dict(parser.items('jinja2'))
    _configure_list(jinja2, 'filters')
    loader = FileSystemLoader(roxy['template_path'])
    env = Environment(loader=loader)

    for m in jinja2['filters']:
        m = importlib.import_module(m)
        for name in dir(m):
            if name.endswith('_filter'):
                fname = name.split('_filter', 1)[0]
                logger.debug('installing {} filter', fname)
                env.filters[fname] = getattr(m, name)

    roxy['renderer'] = env

    config = roxy
    return roxy