def get_manager(config): conn = config.registry._zodb_databases[''].open() root = conn.root()[APP_ROOT_NAME] manager = ZODBEvolutionManager(root, evolve_packagename='papaye.evolve', sw_version=SW_VERSION, initial_db_version=0) return manager
def test_check_database_config(self, mock): from papaye import check_database_config root = self.get_root() mock.return_value = ZODBEvolutionManager( root, evolve_packagename='papaye.evolve', sw_version=0, initial_db_version=0) result = check_database_config(self.config) self.assertTrue(result)
def test_check_database_config_outdated(self, mock): from papaye import check_database_config root = self.get_root() manager = ZODBEvolutionManager(root, evolve_packagename='papaye.evolve', sw_version=1, initial_db_version=0) manager.sw_version = 1 mock.return_value = manager from pyramid.config import ConfigurationError self.assertRaises(ConfigurationError, check_database_config, self.config)
def evolve_database(root, sw_version, initial_db_version=0): from repoze.evolution import ZODBEvolutionManager, evolve_to_latest manager = ZODBEvolutionManager( root, evolve_packagename='pyGallerid.evolve', sw_version=sw_version, initial_db_version=initial_db_version ) db_version = manager.get_db_version() sw_version = manager.get_sw_version() if db_version < sw_version: logger.info('Evolving database from %d to %d ...' \ % (db_version, sw_version)) evolve_to_latest(manager) if db_version < sw_version: logger.info('Finished evolving of the database.')
def test_check_database_config_without_approot(self, mock): from papaye import check_database_config root = self.get_root() manager = ZODBEvolutionManager(root, evolve_packagename='papaye.evolve', sw_version=0, initial_db_version=0) mock.return_value = manager # Remove app_root del (self.config.registry._zodb_databases[''].open().root() ['papaye_root']) import transaction transaction.commit() from pyramid.config import ConfigurationError self.assertRaises(ConfigurationError, check_database_config, self.config)
def appmaker(zodb_root): """ This determines the root object for each request. If no site root exists, this function will run bootstrap_voteit and create one. Read more about traversal in the Pyramid docs. The funny looking try / except here is to bootstrap the site in case it hasn't been bootstrapped. This is faster than using an if statement. """ try: return zodb_root['app_root'] except KeyError: from voteit.core.bootstrap import bootstrap_voteit zodb_root['app_root'] = bootstrap_voteit() #Returns a site root import transaction transaction.commit() #Set intitial version of database from repoze.evolution import ZODBEvolutionManager from voteit.core.evolve import VERSION manager = ZODBEvolutionManager(zodb_root['app_root'], evolve_packagename='voteit.core.evolve', sw_version=VERSION) manager.set_db_version(VERSION) manager.transaction.commit() return zodb_root['app_root']