def setUp(self): super(DataModelLoaderUnitTests, self).setUp() self.core_loader = IndivoDataModelLoader( settings.CORE_DATAMODEL_DIRS[0]) self.test_dir = os.path.join(settings.APP_HOME, 'indivo/tests/data_models/test') self.test_loader = IndivoDataModelLoader(self.test_dir)
def unload_model_dir(self, dirpath): """ Unload data models that have been loaded from a directory.""" loader = IndivoDataModelLoader(dirpath) models = [ model_class for model_name, model_class in loader.discover_data_models() ] self.unload_models(models)
def load_model_dir(self, dirpath): """ Load data models from a directory (like we do when running Indivo normally). """ loader = IndivoDataModelLoader(dirpath) models = [ model_class for model_name, model_class in loader.discover_data_models() ] self.load_models(models) return models
def load_models(self, models): """ Do the heavy lifting for loading data models. Registers the models, then migrates the DB to support them. """ loader = IndivoDataModelLoader('') for m in models: # Register the model in indivo.models loader.add_model_to_module(m.__name__, m, self.TEST_MODEL_MODULE) # Migrate the database to contain the model db.start_transaction() try: self.create_db_model(m) except Exception, e: db.rollback_transaction() else: db.commit_transaction()