def make_fixture(): """A helper to create a database fixture. """ fixture = SQLAlchemyFixture(env=_all, style=TrimmedNameStyle(suffix="Data"), engine=session.session.get_engine()) return fixture
def load_fixtures(sender, yes_i_know=False, drop=True, **kwargs): """Load fixtures. Loads classes found in 'packages' to the database. Names of the fixture classes should end with 'Data' suffix. :param packages: packages with fixture classes to load :param truncate_tables_first: if True truncates tables before loading the fixtures """ from invenio.ext.sqlalchemy import db, models from fixture import SQLAlchemyFixture # Load SQLAlchemy models. list(models) models = dict((m.__name__ + 'Data', m) for m in db.Model.__subclasses__()) missing = set(fixtures.keys()) - set(models.keys()) if len(missing): raise Exception( 'Cannot match models for the following fixtures classes {0}'. format(missing)) print(">>> There are", len(fixtures.keys()), "tables to be loaded.") SQLAlchemyFixture(env=models, engine=db.metadata.bind, session=db.session).data(*fixtures.values()).setup() db.session.commit()
def setUp(self): if not conf.HEAVY_DSN: raise SkipTest("conf.HEAVY_DSN not defined") engine = create_engine(conf.HEAVY_DSN) metadata.bind = engine metadata.create_all() Session = get_transactional_session() self.session = Session() self.fixture = SQLAlchemyFixture( env=globals(), engine=metadata.bind, style=NamedDataStyle(), ) clear_mappers() mapper(Category, categories) mapper(Product, products, properties={ 'category': relation(Category, backref='products') }) mapper(Offer, offers, properties={ 'product': relation(Product, backref='offers'), 'category': relation(Category, backref='offers') })
def setup_app(command, conf, vars): """Place any commands to setup tracking here""" load_environment(conf.global_conf, conf.local_conf) filename = os.path.split(conf.filename)[-1] if filename == 'test.ini': # Permanently drop any existing tables log.info("Dropping existing tables...") meta.Base.metadata.drop_all(bind=meta.engine, checkfirst=True) log.info("Creating tables...") # Create the tables if they don't already exist meta.Base.metadata.create_all(bind=meta.engine) log.info("Successfully set up.") if filename == 'development.ini': # load sample data during setup-app db = SQLAlchemyFixture(env=model, style=NamedDataStyle(), engine=meta.engine) data = db.data(PageviewsData) log.info("Loading sample data...") data.setup() log.info("Successfully set up.")
def create_fixture(self): return SQLAlchemyFixture( env = self.env, style = NamedDataStyle(), dataclass = MergedSuperSet, # *load* data into the memory db : engine = memmeta.bind )
def setUp(self): # Create tables models.db.create_all() # Load data fix = SQLAlchemyFixture(env=models, engine=models.db.engine) self.data = fix.data(*test_data.all_data) self.data.setup()
def fixture_builder(): from invenio.modules.accounts.models import User, Usergroup, UserUsergroup return SQLAlchemyFixture(env={ 'UserData': User, 'UsergroupData': Usergroup, 'UserUsergroupData': UserUsergroup }, engine=db.metadata.bind, session=db.session)
def test_fixture_can_be_disposed(): from sqlalchemy.exceptions import InvalidRequestError engine = create_engine(conf.LITE_DSN) metadata.bind = engine metadata.create_all() Session = get_transactional_session() session = Session() fixture = SQLAlchemyFixture( env={'CategoryData':Category}, engine=metadata.bind ) class CategoryData(DataSet): class cars: name = 'cars' class free_stuff: name = 'get free stuff' clear_mappers() mapper(Category, categories) data = fixture.data(CategoryData) data.setup() data.teardown() fixture.dispose() # cannot use fixture anymore : try: data.setup() except InvalidRequestError: pass else: assert False, "data.setup() did not raise InvalidRequestError after connection was disposed" # a new instance of everything is needed : metadata.create_all() fixture = SQLAlchemyFixture( env={'CategoryData':Category}, engine=metadata.bind ) data = fixture.data(CategoryData) data.setup() data.teardown()
def setup_testdata(connectable): dbfixture = SQLAlchemyFixture(engine=connectable or db.engine, env={ 'VerificationCodeData': db_models.VerificationCode, }) fixture_datas = [ dbfixture.data(VerificationCodeData), ] return dbfixture, fixture_datas
class BaseTest(DataTestCase): datasets = [UserData, RegionData] fixture = SQLAlchemyFixture(engine=metadata.bind, env={ "UserData": UserTable, "RegionData": RegionTable }) @classmethod def metadata(cls): return metadata
def test_cannot_teardown_unloaded_fixture(): class CategoryData(DataSet): class cars: name = 'cars' engine = create_engine(conf.LITE_DSN) metadata.bind = engine db = SQLAlchemyFixture(env=globals(), engine=metadata.bind) data = db.data(CategoryData) data.teardown()
def setUp(self): self.engine = create_engine(conf.LITE_DSN) metadata.bind = self.engine metadata.create_all() ScopedSession = scoped_session(get_transactional_session()) self.session = ScopedSession() self.fixture = SQLAlchemyFixture(env={'CategoryData': Category}, engine=metadata.bind) clear_mappers() mapper(Category, categories)
def setUp(self): self.engine = create_engine(conf.LITE_DSN) metadata.bind = self.engine metadata.create_all() Session = get_transactional_session() self.session = Session() self.fixture = SQLAlchemyFixture( # maps to a table object : env={'CategoryData': categories}, engine=metadata.bind) clear_mappers() mapper(Category, categories)
def load_fixtures(self, *args): # TODO: Check https://github.com/mitsuhiko/flask-sqlalchemy/pull/89 # and update version of Flask-Sqlalchemy from api import models from fixture import SQLAlchemyFixture from fixture.style import NamedDataStyle db = SQLAlchemyFixture(env=models, style=NamedDataStyle(), engine=self.engine) data = db.data(*args) data.setup() db.dispose()
def fixture_builder(): from invenio_accounts.models import User, Usergroup, UserUsergroup from invenio.modules.search.models import Collection, CollectionCollection, \ Externalcollection return SQLAlchemyFixture(env={'UserData': User, 'UsergroupData': Usergroup, 'UserUsergroupData': UserUsergroup, 'CollectionData': Collection, 'ExternalcollectionData': Externalcollection, 'CollectionCollectionData': CollectionCollection}, engine=db.metadata.bind, session=db.session)
def setUp(self): engine = create_engine(conf.LITE_DSN) metadata.bind = engine # metadata.bind.echo = True metadata.create_all() Session = get_transactional_session() self.session = Session() # note the lack of explicit binding : self.fixture = SQLAlchemyFixture(env={'CategoryData': Category}, ) clear_mappers() # since categories is assigned to metadata, SA should handle binding for us mapper(Category, categories)
def main(argv=sys.argv): if len(argv) != 2: usage(argv) config_uri = argv[1] setup_logging(config_uri) settings = get_appsettings(config_uri) engine = engine_from_config(settings, 'sqlalchemy.') metadata = MetaData() metadata.bind = engine DBSession.configure(bind=engine) metadata.create_all() dbfixture = SQLAlchemyFixture(env={ 'WorkspaceData': Workspace, 'MapData': Map }, engine=metadata.bind) data = dbfixture.data(WorkspaceData, MapData) data.setup()
def test_SQLAlchemyFixture_configured_with_bound_session_and_conn(): class StubConnection: def begin(self): pass stub_conn = StubConnection() class StubTransaction: def add(self, engine): pass fake_out_bind = 1 class StubSession: bind_to = fake_out_bind def create_transaction(self): return StubTransaction() stub_session = StubSession() f = SQLAlchemyFixture( session=stub_session, connection=stub_conn) f.begin() eq_(f.session, stub_session) eq_(f.connection, stub_conn)
def test_with_engine_connection(self): fixture = SQLAlchemyFixture( # maps to a table object : env={'CategoryData': categories}, # this should overwrite the default bind: engine=self.litemeta.bind) data = fixture.data(CategoryData) data.setup() rs = self.heavysession.query(Category).all() assert rs == [], "unexpected records in HEAVY_DSN db: %s" % rs rs = self.litesession.query(Category).all() eq_(len(rs), 2) data.teardown() rs = self.litesession.query(Category).all() eq_(len(rs), 0)
def load_fixtures(suffix='', truncate_tables_first=False): from invenio.sqlalchemyutils import db from fixture import SQLAlchemyFixture from invenio.importutils import autodiscover_modules if len(suffix) > 0: related_name_re = ".+_fixtures_%s\.py" % (suffix, ) else: related_name_re = ".+_fixtures\.py" fixture_modules = autodiscover_modules(['invenio'], related_name_re=related_name_re) model_modules = autodiscover_modules(['invenio'], related_name_re=".+_model\.py") fixtures = dict((f, getattr(ff, f)) for ff in fixture_modules for f in dir(ff) if f[-4:] == 'Data') fixture_names = fixtures.keys() models = dict((m + 'Data', getattr(mm, m)) for mm in model_modules for m in dir(mm) if m + 'Data' in fixture_names) dbfixture = SQLAlchemyFixture(env=models, engine=db.metadata.bind, session=db.session) data = dbfixture.data(*fixtures.values()) if len(models) != len(fixtures): print ">>> ERROR: There are", len(models), "tables and", len( fixtures), "fixtures." else: print ">>> There are", len(models), "tables to be loaded." if truncate_tables_first: print ">>> Going to truncate following tables:", print map(lambda t: t.__name__, models.values()) db.session.execute("TRUNCATE %s" % ('collectionname', )) db.session.execute("TRUNCATE %s" % ('collection_externalcollection', )) for m in models.values(): db.session.execute("TRUNCATE %s" % (m.__tablename__, )) db.session.commit() data.setup() db.session.commit()
def setUp(self): if not env_supports.elixir: raise SkipTest("elixir module not found") import elixir self.engine = create_engine(conf.LITE_DSN) metadata.bind = self.engine metadata.create_all() class CategoryEntity(elixir.Entity): elixir.using_options(tablename=str(categories)) # save_on_init IS VERY IMPORTANT elixir.using_mapper_options(save_on_init=False) self.CategoryEntity = CategoryEntity self.fixture = SQLAlchemyFixture(env={'CategoryData': CategoryEntity}, engine=metadata.bind) elixir.metadata.bind = self.engine elixir.setup_all()
def setUp(self): from fixture import SQLAlchemyFixture, NamedDataStyle import sqlalchemy from sqlalchemy.orm import ( mapper, relation, clear_mappers, sessionmaker, scoped_session) from sqlalchemy import create_engine metadata.bind = create_engine(conf.LITE_DSN) metadata.create_all() class options: dsn = conf.LITE_DSN env = ['fixture.examples.db.sqlalchemy_examples'] self.options = options self.generator = DataSetGenerator(self.options, template=StubTemplate()) ScopedSession = scoped_session(sessionmaker(autoflush=False, transactional=True)) ScopedSession.mapper(Category, categories, save_on_init=False) ScopedSession.mapper(Product, products, properties={ 'category': relation(Category), }, save_on_init=False) ScopedSession.mapper(Offer, offers, properties={ 'category': relation(Category, backref='products'), 'product': relation(Product) }, save_on_init=False) self.fixture = SQLAlchemyFixture( env=sqlalchemy_examples, style=NamedDataStyle(), engine=metadata.bind) self.data = self.fixture.data(self.CategoryData) self.data.setup() self.hnd = self.generator.get_handler( "%s.Category" % (Category.__module__), obj=Category, connection=metadata.bind) self.hnd.begin()
def setUpClass(cls): SQLAlchemyTestCase.setUpClass() cls.fixture = SQLAlchemyFixture(env=_all, style=NamedDataStyle(), engine=connection)
def fixture_builder(): from invenio_accounts.models import User return SQLAlchemyFixture(env={'UserData': User}, engine=db.metadata.bind, session=db.session)
name = "editor" description = "editor" class UserData(DataSet): class admin: email = "*****@*****.**" name = "Admin User" active = True roles = [RoleData.admin, RoleData.editor] current_login_at = datetime.datetime.utcnow() confirmed = True class MembershipTypeData(DataSet): class member: name = "Member" class MembershipData(DataSet): class arts_membership_one: type = MembershipTypeData.member committee = CommitteeData.arts member = MemberData.veronica dbfixture = SQLAlchemyFixture(env=globals(), style=NamedDataStyle(), engine=db.engine, scoped_session=db.Session)
pkg_resources.working_set.add_entry(conf_dir) pkg_resources.require('Paste') pkg_resources.require('PasteScript') test_file = os.path.join(conf_dir, 'test.ini') cmd = paste.script.appinstall.SetupCommand('setup-app') cmd.run([test_file]) from fixture import DataTestCase, SQLAlchemyFixture from fixture.style import TrimmedNameStyle from popserver.model import * from scripts.migrate import Migrate dbfixture = SQLAlchemyFixture(env=globals(), style=TrimmedNameStyle(suffix='Data'), scoped_session=dbsession) class TestModel(unittest.TestCase): def setUp(self): Migrate(['test.ini', '-r', '1'], conf_dir).run() Migrate(['test.ini'], conf_dir).run() # TODO - refactor to a new method elixir.metadata.bind.connect().execute(""" \ INSERT INTO profileconfig VALUES (1, 1.0, 0.5, 1.0, 1.0); INSERT INTO globalconfig VALUES('current_profile_config', '1'); """) def tearDown(self): self._deleteAllData()
class DocumentData(DataSet): class simple: url = 'http://mg.co.za/articles/2012-01-01-foo' title = 'Title' summary = 'A document summary' text = 'Today, we do fun things.' published_at = datetime.datetime(2012, 1, 1) medium_id = 1 document_type_id = 1 author = AuthorData.joe_author created_by = UserData.user country_id = 1 class simple2: url = 'http://mg.co.za/articles/2012-03-03-bar' title = 'Another title' summary = 'Another document summary' text = 'Today, we do fun things.' published_at = datetime.datetime(2012, 3, 3) medium_id = 1 document_type_id = 1 author = AuthorData.joe_author created_by = UserData.user country_id = 1 dbfixture = SQLAlchemyFixture(env=globals(), style=NamedDataStyle(), engine=db.engine)
def post_handler_demosite_populate(sender, default_data='', *args, **kwargs): """Loads data after records are created.""" if default_data != 'demosite': print '>>> You can define your own post hadler for `demosite populate`' print '>>> Loading demosite data for BibCirculation ...' class CrcLIBRARYData(DataSet): class CrcLIBRARY_1: phone = u'1234567' name = u'CERN Document Server' address = u'CH-1211 Geneva 23' notes = u'Access articles, reports and multimedia content in HEP' type = None id = 1L email = u'*****@*****.**' class CrcLIBRARY_2: phone = u'1234567' name = u'CDS HEP Library' address = u'CH-1211 Geneva 21' notes = u'' type = None id = 2L email = u'*****@*****.**' class CrcITEMData(DataSet): class CrcITEM_bc21001: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id') status = u'available' id_bibrec = 21 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-21001' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'4 weeks' location = u'MLL-DS.63' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc22001: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id') status = u'requested' id_bibrec = 22 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-22001' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'1 week' location = u'AZD4E-865' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc23001: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id') status = u'requested' id_bibrec = 23 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-23001' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'4 weeks' location = u'JHL-465.DS' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc24001: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id') status = u'available' id_bibrec = 24 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-24001' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'4 weeks' location = u'J56-475' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc25001: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id') status = u'on loan' id_bibrec = 25 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-25001' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'4 weeks' location = u'AGT-MLL5' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc26001: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id') status = u'missing' id_bibrec = 26 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-26001' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'1 week' location = u'AZD456-465' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc27001: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id') status = u'available' id_bibrec = 27 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-27001' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'4 weeks' location = u'JLMQ-45-SQ' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc28001: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id') status = u'available' id_bibrec = 28 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-28001' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'4 weeks' location = u'AZD5-456' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc29001: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id') status = u'requested' id_bibrec = 29 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-29001' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'4 weeks' location = u'AZD456-465' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc30001: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id') status = u'available' id_bibrec = 30 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-30001' collection = u'Reference' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'Not for loan' location = u'QSQS-52-S' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc31001: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id') status = u'on loan' id_bibrec = 31 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-31001' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'1 week' location = u'123LSKD' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc31002: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id') status = u'available' id_bibrec = 31 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-31002' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'1 week' location = u'QSQ452-S' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc32001: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id') status = u'available' id_bibrec = 32 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-32001' collection = u'Reference' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'Not for loan' location = u'WDFG-54' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc32002: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id') status = u'available' id_bibrec = 32 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-32002' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'4 weeks' location = u'RZ.612-MK' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc32003: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id') status = u'missing' id_bibrec = 32 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-32003' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'4 weeks' location = u'RT-4654-E' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc33001: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id') status = u'on loan' id_bibrec = 33 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-33001' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'4 weeks' location = u'AZ.12-AK' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc34001: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_1.ref('id') status = u'available' id_bibrec = 34 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-34001' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'4 weeks' location = u'ABC-123' number_of_requests = 0L expected_arrival_date = u'' class CrcITEM_bc34002: id_crcLIBRARY = CrcLIBRARYData.CrcLIBRARY_2.ref('id') status = u'requested' id_bibrec = 34 description = u'Book' modification_date = datetime(2008, 7, 21, 0, 0) barcode = u'bc-34002' collection = u'' creation_date = datetime(2008, 7, 21, 0, 0) loan_period = u'4 weeks' location = u'HEP-12A' number_of_requests = 0L expected_arrival_date = u'' class CrcBORROWERData(DataSet): class CrcBORROWER_1: name = u'Admin' notes = u'' borrower_until = datetime(1900, 1, 1, 0, 0) phone = u'20003' borrower_since = datetime(2008, 7, 21, 0, 0) email = u'*****@*****.**' address = u'99-Z-019' mailbox = None id = 1L ccid = None class CrcBORROWER_2: name = u'Jekyll' notes = u'' borrower_until = datetime(1900, 1, 1, 0, 0) phone = u'01234' borrower_since = datetime(2008, 7, 21, 0, 0) email = u'*****@*****.**' address = u'21-Z-019' mailbox = None id = 2L ccid = None class CrcBORROWER_3: name = u'Hyde' notes = u'' borrower_until = datetime(1900, 1, 1, 0, 0) phone = u'01574' borrower_since = datetime(2008, 7, 21, 0, 0) email = u'*****@*****.**' address = u'22-Z-119' mailbox = None id = 3L ccid = None class CrcBORROWER_4: name = u'Dorian Gray' notes = u'' borrower_until = datetime(1900, 1, 1, 0, 0) phone = u'33234' borrower_since = datetime(2008, 7, 21, 0, 0) email = u'*****@*****.**' address = u'38-Y-819' mailbox = None id = 4L ccid = None class CrcBORROWER_5: name = u'Romeo Montague' notes = u'' borrower_until = datetime(1900, 1, 1, 0, 0) phone = u'93844' borrower_since = datetime(2008, 7, 21, 0, 0) email = u'*****@*****.**' address = u'98-W-859' mailbox = None id = 5L ccid = None class CrcBORROWER_6: name = u'Juliet Capulet' notes = u'' borrower_until = datetime(1900, 1, 1, 0, 0) phone = u'99874' borrower_since = datetime(2008, 7, 21, 0, 0) email = u'*****@*****.**' address = u'91-X-098' mailbox = None id = 6L ccid = None class CrcBORROWER_7: name = u'Benvolio Montague' notes = u'' borrower_until = datetime(1900, 1, 1, 0, 0) phone = u'32354' borrower_since = datetime(2008, 7, 21, 0, 0) email = u'*****@*****.**' address = u'93-P-019' mailbox = None id = 7L ccid = None class CrcBORROWER_8: name = u'Balthasar Montague' notes = u'' borrower_until = datetime(1900, 1, 1, 0, 0) phone = u'78644' borrower_since = datetime(2008, 7, 21, 0, 0) email = u'*****@*****.**' address = u'20-M-349' mailbox = None id = 8L ccid = None class CrcLOANData(DataSet): class CrcLOAN_1: status = u'on loan' due_date = datetime.now() + timedelta(days=30) id_bibrec = 33 overdue_letter_date = datetime(1900, 1, 1, 0, 0) notes = u'' barcode = CrcITEMData.CrcITEM_bc33001.ref('barcode') id_crcBORROWER = CrcBORROWERData.CrcBORROWER_4.ref('id') number_of_renewals = 0L loaned_on = datetime.now() returned_on = None overdue_letter_number = 0L type = u'normal' id = 1L class CrcLOAN_2: status = u'on loan' due_date = datetime.now() + timedelta(days=7) id_bibrec = 31 overdue_letter_date = datetime(1900, 1, 1, 0, 0) notes = u'' barcode = CrcITEMData.CrcITEM_bc31001.ref('barcode') id_crcBORROWER = CrcBORROWERData.CrcBORROWER_5.ref('id') number_of_renewals = 0L loaned_on = datetime.now() returned_on = None overdue_letter_number = 0L type = u'normal' id = 2L class CrcLOAN_3: status = u'on loan' due_date = datetime.now() + timedelta(days=30) id_bibrec = 31 overdue_letter_date = datetime(1900, 1, 1, 0, 0) notes = u'' barcode = CrcITEMData.CrcITEM_bc25001.ref('barcode') id_crcBORROWER = CrcBORROWERData.CrcBORROWER_5.ref('id') number_of_renewals = 0L loaned_on = datetime.now() returned_on = None overdue_letter_number = 0L type = u'normal' id = 3L class CrcLOANREQUESTData(DataSet): class CrcLOANREQUEST_1: status = u'pending' period_of_interest_from = datetime.now() id_bibrec = 34 request_date = datetime.now() notes = u'' barcode = CrcITEMData.CrcITEM_bc34002.ref('barcode') id_crcBORROWER = CrcBORROWERData.CrcBORROWER_5.ref('id') period_of_interest_to = datetime.now() + timedelta(days=60) id = 1L class CrcLOANREQUEST_2: status = u'pending' period_of_interest_from = datetime.now() id_bibrec = 29 request_date = datetime.now() notes = u'' barcode = CrcITEMData.CrcITEM_bc29001.ref('barcode') id_crcBORROWER = CrcBORROWERData.CrcBORROWER_6.ref('id') period_of_interest_to = datetime.now() + timedelta(days=45) id = 2L class CrcLOANREQUEST_3: status = u'waiting' period_of_interest_from = datetime.now() id_bibrec = 33 request_date = datetime.now() notes = u'' barcode = CrcITEMData.CrcITEM_bc33001.ref('barcode') id_crcBORROWER = CrcBORROWERData.CrcBORROWER_5.ref('id') period_of_interest_to = datetime.now() + timedelta(days=45) id = 3L class CrcLOANREQUEST_4: status = u'pending' period_of_interest_from = datetime.now() id_bibrec = 22 request_date = datetime.now() notes = u'' barcode = CrcITEMData.CrcITEM_bc22001.ref('barcode') id_crcBORROWER = CrcBORROWERData.CrcBORROWER_7.ref('id') period_of_interest_to = datetime.now() + timedelta(days=90) id = 4L fixtures = [CrcLIBRARYData, CrcBORROWERData, CrcITEMData, CrcLOANData, CrcLOANREQUESTData] try: from invenio.ext.sqlalchemy import db from fixture import SQLAlchemyFixture from invenio.modules.circulation import models as bibcirculation_model models = dict((m.__name__, getattr(bibcirculation_model, m.__name__[:-4])) for m in fixtures) dbfixture = SQLAlchemyFixture(env=models, engine=db.metadata.bind, session=db.session) data = dbfixture.data(*fixtures) print ">>> There are", len(models), "tables to be loaded." data.setup() print ">>> BibCirculation demosite data has been loaded." except Exception as e: print ">>> FAIL: data has not been loaded", e
# coding=utf-8 from fixture import SQLAlchemyFixture from fixture.style import NamedDataStyle from core.database import db from wiki.models import WikiPage, WikiPageVersion from fixture_wiki import WikiPageData, WikiPageVersionData models_map = { 'WikiPage': WikiPage, 'WikiPageVersion': WikiPageVersion, } dbfixture = SQLAlchemyFixture( env=models_map, style=NamedDataStyle(), engine=db.engine ) fixtures_data = ( WikiPageData, WikiPageVersionData, ) def fixtures_install(app, *args): data = dbfixture.data(*args) data.setup()
def install(app, *args): engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI']) db = SQLAlchemyFixture(env=models, style=NamedDataStyle(), engine=engine) data = db.data(*args) data.setup() db.dispose()