Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
 def init_from_celery(self):
     # A task is called through celery, so it may not have basic
     # configuration setup. Go through that setup the first time.
     global _settings, SMTP_DOMAIN_DELAYS
     rootdir = getcwd()
     settings_file = join(rootdir, 'local.ini')
     if not exists(settings_file):
         settings_file = join(rootdir, 'production.ini')
     if not exists(settings_file):
         rootdir = dirname(dirname(dirname(realpath(__file__))))
         settings_file = join(rootdir, 'local.ini')
     if not exists(settings_file):
         settings_file = join(rootdir, 'production.ini')
     if not exists(settings_file):
         raise RuntimeError("Missing settings file")
     _settings = settings = get_appsettings(settings_file, 'assembl')
     configure_zmq(settings['changes_socket'], False)
     config = ConfigParser.SafeConfigParser()
     config.read(settings_file)
     registry = getGlobalSiteManager()
     registry.settings = settings
     set_config(settings)
     configure_engine(settings, True)
     configure_indexing()
     if settings.get('%s_debug_signal' % (self.main, ), False):
         from assembl.lib import signals
         signals.listen()
     configure(registry, self.main)
     from .threaded_model_watcher import ThreadDispatcher
     threaded_watcher_class_name = settings.get(
         '%s.threadedmodelwatcher' % (self.main, ),
         "assembl.lib.model_watcher.BaseModelEventWatcher")
     ThreadDispatcher.mw_class = resolver.resolve(
         threaded_watcher_class_name)
     self.mailer = mailer_factory_from_settings(settings)
     # setup SETTINGS_SMTP_DELAY
     for name, val in settings.iteritems():
         if name.startswith(SETTINGS_SMTP_DELAY):
             try:
                 val = timedelta(seconds=float(val))
             except ValueError:
                 print "Not a valid value for %s: %s" % (name, val)
                 continue
             SMTP_DOMAIN_DELAYS[name[len(SETTINGS_SMTP_DELAY):]] = val
     getLogger().info("SMTP_DOMAIN_DELAYS", delays=SMTP_DOMAIN_DELAYS)
     import assembl.tasks.imap
     import assembl.tasks.notify
     import assembl.tasks.notification_dispatch
     import assembl.tasks.translate
     import assembl.tasks.watson
     assembl.tasks.notification_dispatch.create_dispatcher()
Beispiel #4
0
 def init_from_celery(self):
     # A task is called through celery, so it may not have basic
     # configuration setup. Go through that setup the first time.
     global _settings, SMTP_DOMAIN_DELAYS
     rootdir = getcwd()
     settings_file = join(rootdir, 'local.ini')
     if not exists(settings_file):
         settings_file = join(rootdir, 'production.ini')
     if not exists(settings_file):
         rootdir = dirname(dirname(dirname(realpath(__file__))))
         settings_file = join(rootdir, 'local.ini')
     if not exists(settings_file):
         settings_file = join(rootdir, 'production.ini')
     if not exists(settings_file):
         raise RuntimeError("Missing settings file")
     _settings = settings = get_appsettings(settings_file, 'assembl')
     configure_zmq(settings['changes_socket'], False)
     config = ConfigParser.SafeConfigParser()
     config.read(settings_file)
     registry = getGlobalSiteManager()
     registry.settings = settings
     set_config(settings)
     configure_engine(settings, True)
     configure_indexing()
     if settings.get('%s_debug_signal' % (self.main,), False):
         from assembl.lib import signals
         signals.listen()
     configure(registry, self.main)
     from .threaded_model_watcher import ThreadDispatcher
     threaded_watcher_class_name = settings.get(
         '%s.threadedmodelwatcher' % (self.main,),
         "assembl.lib.model_watcher.BaseModelEventWatcher")
     ThreadDispatcher.mw_class = resolver.resolve(
         threaded_watcher_class_name)
     self.mailer = mailer_factory_from_settings(settings)
     # setup SETTINGS_SMTP_DELAY
     for name, val in settings.iteritems():
         if name.startswith(SETTINGS_SMTP_DELAY):
             try:
                 val = timedelta(seconds=float(val))
             except ValueError:
                 print "Not a valid value for %s: %s" % (name, val)
                 continue
             SMTP_DOMAIN_DELAYS[name[len(SETTINGS_SMTP_DELAY):]] = val
     getLogger().info("SMTP_DOMAIN_DELAYS", delays=SMTP_DOMAIN_DELAYS)
     import assembl.tasks.imap
     import assembl.tasks.notify
     import assembl.tasks.notification_dispatch
     import assembl.tasks.translate
     import assembl.tasks.watson
     assembl.tasks.notification_dispatch.create_dispatcher()
Beispiel #5
0
def pytest_configure(config):
    global engine
    # Listen to kill process command for debug purposes
    signals.listen()
    log.setLevel(config.getoption('logging_level'))
    app_settings_file = config.getoption('test_settings_file')
    app_settings = get_appsettings(app_settings_file, 'assembl')
    set_config(app_settings)
    # Use an unzopish sessionmaker
    configure_engine(
        app_settings, session_maker=initialize_session_maker(False))
    from .lib.zmqlib import configure_zmq
    configure_zmq(app_settings['changes.socket'],
                  app_settings['changes.multiplex'])
    from assembl.indexing.changes import configure_indexing
    configure_indexing()
Beispiel #6
0
def pytest_configure(config):
    global engine
    # Listen to kill process command for debug purposes
    signals.listen()
    log.setLevel(config.getoption('logging_level'))
    app_settings_file = config.getoption('test_settings_file')
    app_settings = get_appsettings(app_settings_file, 'assembl')
    set_config(app_settings)
    # Use an unzopish sessionmaker
    configure_engine(
        app_settings, session_maker=initialize_session_maker(False))
    from .lib.zmqlib import configure_zmq
    configure_zmq(app_settings['changes_socket'],
                  app_settings['changes_multiplex'])
    from assembl.indexing.changes import configure_indexing
    configure_indexing()
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "configuration",
        help="configuration file with destination database configuration")
    args = parser.parse_args()
    settings = get_appsettings(args.configuration, 'assembl')
    set_config(settings)
    logging.config.fileConfig(args.configuration)
    configure_zmq(settings['changes.socket'], False)
    configure_indexing()
    configure_engine(settings, True)
    session = get_session_maker()()
    try:
        reindex_all_contents(session)
        transaction.commit()
    except Exception as e:
        traceback.print_exc()
        pdb.post_mortem()
Beispiel #8
0
def engine_from_settings(config, full_config=False):
    settings = get_appsettings(config, 'assembl')
    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)
    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 main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "configuration",
        help="configuration file with destination database configuration")
    args = parser.parse_args()
    env = bootstrap(args.configuration)
    settings = get_appsettings(args.configuration, 'assembl')
    set_config(settings)
    logging.config.fileConfig(args.configuration)
    configure_zmq(settings['changes_socket'], False)
    configure_indexing()
    configure_engine(settings, True)
    session = get_session_maker()()
    try:
        reindex_all_contents(session)
        transaction.commit()
    except Exception as e:
        traceback.print_exc()
        pdb.post_mortem()
Beispiel #10
0
def init_from_celery(celery_app):
    # A task is called through celery, so it may not have basic
    # configuration setup. Go through that setup the first time.
    global _settings
    rootdir = dirname(dirname(dirname(realpath(__file__))))
    settings_file = join(rootdir, 'local.ini')
    if not exists(settings_file):
        settings_file = join(rootdir, 'production.ini')
    _settings = settings = get_appsettings(settings_file, 'assembl')
    config = ConfigParser.SafeConfigParser()
    config.read(settings_file)
    registry = getGlobalSiteManager()
    registry.settings = settings
    setup_raven(config)
    set_config(settings)
    configure_engine(settings, True)
    configure_indexing()
    configure(registry, celery_app.main)
    from .threaded_model_watcher import ThreadDispatcher
    threaded_watcher_class_name = settings.get(
        '%s.threadedmodelwatcher' % (celery_app.main, ),
        "assembl.lib.model_watcher.ModelEventWatcherPrinter")
    ThreadDispatcher.mw_class = resolver.resolve(threaded_watcher_class_name)
Beispiel #11
0
 parser.add_argument("--rebuild_all_fkeys", action="store_true", default=False,
                     help="All tables fkeys will be rebuilt.")
 parser.add_argument("--rebuild_all_tables", action="store_true", default=False,
                     help="All tables will be rebuilt.")
 parser.add_argument("--ensure_inheritance", action="store_true", default=False,
                     help="Make sure no class has a missing subclass row.")
 parser.add_argument("-d", "--delete_missing", action="store_true", default=False,
                     help="Delete rows with missing corresponding values. (otherwise abort rebuild.)")
 parser.add_argument("--reset_extract_discussion", action="store_true", default=False,
                     help="Special case: rebuild a dependent foreign key on extract table")
 args = parser.parse_args()
 settings = get_appsettings(args.configuration, 'assembl')
 set_config(settings)
 logging.config.fileConfig(args.configuration)
 configure_zmq(settings['changes_socket'], False)
 configure_indexing()
 configure_engine(settings, True)
 session = get_session_maker()()
 import assembl.models
 try:
     if (args.reset_extract_discussion and
             session.query(assembl.models.Extract).filter_by(discussion_id=-1).count()):
         session.execute("""UPDATE "extract" SET discussion_id = (
             SELECT content.discussion_id FROM content
                 JOIN idea_content_link on (content_id=content.id)
                 JOIN "extract" on ("extract".id = idea_content_link.id)
                 WHERE "extract".discussion_id=-1)""")
     if args.rebuild_all_tables:
         rebuild_all_tables(session, args.delete_missing)
     elif args.rebuild_all_fkeys:
         rebuild_all_tables_fkeys(session, args.rebuild_table, args.delete_missing)