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