def _populate_database(cls, settings: plaster_pastedeploy.ConfigDict, add_test_data: bool) -> None: engine = get_engine(settings) session_factory = get_session_factory(engine) app_config = CFG(settings) print("- Populate database with default data -") with transaction.manager: dbsession = get_tm_session(session_factory, transaction.manager) try: fixtures = [BaseFixture] fixtures_loader = FixturesLoader(dbsession, app_config) fixtures_loader.loads(fixtures) transaction.commit() if add_test_data: app_config.configure_filedepot() fixtures = [ContentFixture] fixtures_loader.loads(fixtures) transaction.commit() print("Database initialized.") except IntegrityError as exc: transaction.abort() print('Database initialization failed') raise DatabaseInitializationFailed( 'Warning, there was a problem when adding default data' ', it may have already been added.') from exc
def take_action(self, parsed_args: argparse.Namespace) -> None: super(DeleteDBCommand, self).take_action(parsed_args) config_uri = parsed_args.config_file # setup_logging(config_uri) settings = get_appsettings(config_uri) settings.update(settings.global_conf) if 'sqlalchemy.url' not in settings or not settings['sqlalchemy.url']: raise InvalidSettingFile('Wrong or empty sqlalchemy database url,' 'check config file') engine = get_engine(settings) app_config = CFG(settings) app_config.configure_filedepot() if parsed_args.force: print('Database deletion begin.') DeclarativeBase.metadata.drop_all(engine) print('Database deletion done.') try: print('Cleaning depot begin.') depot = DepotManager.get() depot_files = depot.list() for file_ in depot_files: depot.delete(file_) print('Cleaning depot done.') except FileNotFoundError: print( 'Warning! Can delete depots file, is depot path correctly' ' configured?') else: raise ForceArgumentNeeded( 'Warning, You should use --force if you really want to' ' delete database.')
def connect_database(self, create_tables: bool = False) -> None: self.engine = get_engine(self.settings) if create_tables: DeclarativeBase.metadata.create_all(self.engine) self.session_factory = get_session_factory(self.engine) self.session = get_tm_session(self.session_factory, transaction.manager)
def __init__(self, application, config): super().__init__(application, config) self._application = application self._config = config global_conf = get_appsettings(config['tracim_config']).global_conf local_conf = get_appsettings(config['tracim_config'], 'tracim_web') self.settings = global_conf self.settings.update(local_conf) self.engine = get_engine(self.settings) self.session_factory = get_session_factory(self.engine) self.app_config = CFG(self.settings) self.app_config.configure_filedepot()
def setUp(self) -> None: self._set_logger() logger.debug(self, 'Setup Test...') self.settings = plaster.get_settings(self.config_uri, self.config_section) self.config = testing.setUp(settings=self.settings) self.config.include('tracim_backend.models') DepotManager._clear() DepotManager.configure( 'test', {'depot.backend': 'depot.io.memory.MemoryFileStorage'}) settings = self.config.get_settings() self.app_config = CFG(settings) from tracim_backend.models import ( get_engine, get_session_factory, get_tm_session, ) self.engine = get_engine(settings) self.session_factory = get_session_factory(self.engine) self.init_database() self.session = get_tm_session(self.session_factory, transaction.manager)
def _create_schema(cls, settings: plaster_pastedeploy.ConfigDict) -> None: print("- Create Schemas of databases -") engine = get_engine(settings) DeclarativeBase.metadata.create_all(engine)
def init_database(self, settings: typing.Dict[str, typing.Any]) -> None: self.engine = get_engine(settings)