Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
    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.')
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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()
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
 def _create_schema(cls, settings: plaster_pastedeploy.ConfigDict) -> None:
     print("- Create Schemas of databases -")
     engine = get_engine(settings)
     DeclarativeBase.metadata.create_all(engine)
Ejemplo n.º 7
0
 def init_database(self, settings: typing.Dict[str, typing.Any]) -> None:
     self.engine = get_engine(settings)