def engine_from_settings(config, full_config=False): settings = get_appsettings(config, 'assembl') if settings['sqlalchemy.url'].startswith('virtuoso:'): db_schema = '.'.join((settings['db_schema'], settings['db_user'])) else: db_schema = settings['db_schema'] set_config(settings, True) session = None if full_config: env = bootstrap(config) configure_zmq(settings['changes_socket'], False) configure_indexing() configure_model_watcher(env['registry'], 'assembl') logging.config.fileConfig(config) session = get_session_maker() metadata = get_metadata() else: session = make_session_maker(zope_tr=True) import assembl.models from assembl.lib.sqla import class_registry engine = configure_engine(settings, session_maker=session) metadata = get_metadata() metadata.bind = engine session = sessionmaker(engine)() return (metadata, session)
def engine_from_settings(config, full_config=False): settings = get_appsettings(config, 'idealoom') db_schema = settings['db_schema'] set_config(settings, True) session = None if full_config: env = bootstrap(config) configure_zmq(settings['changes_socket'], False) configure_model_watcher(env['registry'], 'idealoom') logging.config.fileConfig(config) else: session = make_session_maker(zope_tr=True) import assembl.models from assembl.lib.sqla import class_registry engine = configure_engine(settings, session_maker=session) metadata = get_metadata() metadata.bind = engine session = sessionmaker(engine)() return (metadata, session)
args = parser.parse_args() env = bootstrap(args.configuration) logging.config.fileConfig(args.configuration) settings = get_appsettings(args.configuration, 'assembl') set_config(settings) setup_raven(settings) try: configure_zmq(settings['changes.socket'], False) configure_model_watcher(env['registry'], 'assembl') to_engine = configure_engine(settings, True) to_session = get_session_maker() init_key_for_classes(to_session) new_slug = args.new_name or (args.discussion + "_copy") if args.source_db_configuration: from_session = make_session_maker(zope_tr=True) settings = get_appsettings(args.source_db_configuration, 'assembl') from_engine = configure_engine(settings, session_maker=from_session) from_session = sessionmaker(from_engine)() else: from_engine = to_engine from_session = to_session from assembl.models import Discussion discussion = from_session.query(Discussion).filter_by( slug=args.discussion).one() assert discussion, "No discussion named " + args.discussion permissions = [x.split('+') for x in args.permissions] for (role, permission) in permissions: assert role in SYSTEM_ROLES assert permission in ASSEMBL_PERMISSIONS existing = to_session.query(Discussion).filter_by(slug=new_slug).first()
pipeline = settings.get('pipeline:main', 'pipeline').split() if 'raven' in pipeline: raven_dsn = settings.get('filter:raven', 'dsn') from raven import Client raven_client = Client(raven_dsn) except Exception: pass try: configure_zmq(settings['changes.socket'], False) configure_model_watcher(env['registry'], 'assembl') to_engine = configure_engine(settings, True) to_session = get_session_maker() init_key_for_classes(to_session) new_slug = args.new_name or (args.discussion + "_copy") if args.source_db_configuration: from_session = make_session_maker(zope_tr=True) settings = get_appsettings(args.source_db_configuration, 'assembl') from_engine = configure_engine(settings, session_maker=from_session) from_session = sessionmaker(from_engine)() else: from_engine = to_engine from_session = to_session from assembl.models import Discussion discussion = from_session.query(Discussion).filter_by( slug=args.discussion).one() assert discussion, "No discussion named " + args.discussion permissions = [x.split('+') for x in args.permissions] for (role, permission) in permissions: assert role in SYSTEM_ROLES assert permission in ASSEMBL_PERMISSIONS