common.py 901 Bytes
from configparser import ConfigParser
from sqlalchemy import engine_from_config
from sqlalchemy.orm import sessionmaker
from zope.sqlalchemy import register
from .logger import setup_logging


def init(option):
    setup_logging(option.conf)
    conf = ConfigParser()
    conf.read(option.conf)
    cf = dict(rekening_notes=[])
    for key, val in conf.items('main'):
        if key == 'persen_denda':
            val = float(val)
        elif key.find('rekening_') == 0:
            val = val.split()
        cf[key] = val
    module_name = cf['module']
    module = __import__('opensipkd.pad.services.' + module_name)
    db_url = cf['db_url']
    engine = engine_from_config(cf, 'db_')
    session_factory = sessionmaker(bind=engine)
    dbs = module.pad.services.base.DBSession = session_factory()
    register(dbs)
    services = getattr(module.pad.services, module_name)
    return cf, services