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
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